Faire WCF plus facile à configurer
J'ai un ensemble de services web WCF connecté à dynamiquement par une application de bureau.
Mon problème est vraiment la config détaillée des paramètres qui WCF nécessite de travailler. L'obtention de SSL pour le travail implique des paramètres personnalisés. Obtenir MTOM ou quoi que ce soit d'autre pour le travail exige de plus. Vous voulez de compression? Ici, nous allons à nouveau...
WCF est vraiment puissant que vous pouvez utiliser une foule de façons différentes pour vous connecter, mais tous semblent impliquer beaucoup de config détaillée. Si l'hôte et le client ne correspondent pas parfaitement vous être difficile de déchiffrer les erreurs.
Je veux faire de l'application de bureau est beaucoup plus facile à configurer, dans l'idéal, une sorte d'auto-découverte. Les utilisateurs de l'application de bureau devrait être en mesure de saisir l'adresse URL et faire le reste.
Que quelqu'un connait un bon moyen de faire cela?
Je sais Visual Studio, vous pouvez définir la configuration pour vous, mais je veux que l'application de bureau pour être en mesure de le faire sur la base d'un large éventail de serveur différents set-ups.
Je sais que VS outils peuvent être utilisés à l'extérieur, mais je suis à la recherche pour les utilisateurs des applications de bureau pour ne pas avoir à être WCF experts. Je sais que MS fait cela intentionnellement plus compliqué.
Est-il de toute façon, le mécanisme, la 3ème partie de la bibliothèque ou n'importe quoi pour faire de l'auto-découverte de la WCF de réglages possibles?
Peut-être que c'est injuste. MS délibérément fait en sorte que chaque paramètre que vous pourriez jamais vouloir changer de pourrait être, mais que vous auriez besoin d'un WCF livre et de l'expérience de la programmation pour configurer les bases.
OriginalL'auteur Keith | 2008-09-17
Vous devez vous connecter pour publier un commentaire.
Toutes les informations sur le point de terminaison est disponible dans les métadonnées d'un service, vous pouvez écrire à un client ce qui va explorer les méta-données du service et configurer le client. Pour un exemple de code que vous pouvez regarder dans cette excellente Mex Explorer de Juval Lowy.
OriginalL'auteur MichaelT
Merci, c'était utile de code (+1).
C'est plus qu'un peu bordélique si, a quelques bugs (sensible à la casse vérifie qu'il ne faut pas, par exemple), a une charge de l'INTERFACE utilisateur, des fonctionnalités que je n'ai pas besoin et se répète beaucoup de code.
J'ai pris de la découverte mécanisme de ré-écrit et presque obtenu de travail (se connecte, mais a besoin de quelques peaufiner).
Tout d'abord, quelques util fonctions utilisées par la méthode main:
Alors une méthode qui tente autre façon de se connecter et renvoie les points de terminaison:
OriginalL'auteur Keith
Il existe maintenant une autre façon de le faire ce qui n'était pas disponible quand j'ai demandé à la question d'origine. Microsoft prend maintenant en charge de REPOS pour les services WCF.
Vous aurez besoin d'une nouvelle référence à
System.ServiceModel.Web
Marque de vos opérations avec soit
WebInvoke
ouWebGet
L'ajout de ces pour un site, il est facile d'ajouter un
.svc
fichier:La ligne de l'usine raconte ASP.net comment activer le point de terminaison - vous besoin d'aucun côté serveur config à tous!
Alors la construction de votre
ChannelFactory
est à peu près identique, sauf que vous n'avez pas besoin de spécifier un point de terminaison (ou auto-découvrir l'un que j'ai dans les autres réponses)Remarque que je n'ai pas spécifié ou découvert le client config - il n'y a pas de config nécessaire!
Un autre grand avantage est que vous pouvez facilement passer à la sérialisation JSON - qui permet les mêmes services WCF pour être consommés par Java, ActionScript, Javascript, Silverlight ou toute autre chose qui peut gérer JSON et RESTE facilement.
OriginalL'auteur Keith