2010-01-27 4 views
2

J'ai actuellement besoin d'accéder aux services WCF à partir de l'application Silverlight (3.0), mais j'en ai besoin dynamique. J'ai accès à: les interfaces de service (ServiceContracts) et les définitions de données (DataContracts). Ce dont j'ai besoin: proxy client WCF généré/créé.Solutions pour le proxy client WCF dynamique dans Silverlight?

Avez-vous des solutions?

+0

Pourquoi avez-vous besoin d'un proxy dynamique? Cherchez-vous simplement à définir dynamiquement le point de terminaison du proxy? – slugster

+0

Eh bien, j'ai besoin de l'ensemble du proxy pour être dynamique afin que je puisse me débarrasser des proxies générés au moment du design. – fredlegrain

+0

Pour répondre à la question "pourquoi": J'ai un hôte WCF dynamique exposant les services fournis à l'exécution, j'ai une plate-forme client exécutant des plug-ins appelant les services via la plateforme client, je veux partager uniquement les descriptions de service, ces mêmes descriptions de service sur les clients .Net et les clients Silverlight. J'espère que cela a du sens :) – fredlegrain

Répondre

1

Jetez un oeil à la WCF Dynamic Proxy Sample Project

+0

Merci. J'ai déjà jeté un coup d'oeil à ceci, mais ce n'est pas facile à porter à Silverlight. Je suis à la recherche d'une solution prête pour Silverlight ...S'il y en a en ce moment :) – fredlegrain

+0

+1 Merci pour le lien! Cela m'a aidé avec un problème similaire! : D – khr055

-1

Ma compréhension est que si vous suivez la procédure d'accès client décrite dans Understanding WCF Services In Silverlight 2, vous devriez être en mesure de choisir quel service accéder à l'exécution, car vous n'avez pas besoin de créer un proxy côté client.

Un extrait de cet article:

Maintenant, nous pouvons porter notre attention sur l'application cliente . Pour commencer, laissez-moi commencer par rappeler à tous que vous ne devriez jamais utiliser "Add Service référence" dans Visual Studio pour création de client de service magique. Le code est incroyablement verbeux, difficile à gérable, les modifications sont susceptibles d'être remplacé, et il est presque toujours utilisé comme une excuse pour pas réellement apprendre WCF.

Comme je l'ai mentionné plusieurs fois déjà, WCF s'appuie sur le concept de l'ABC. Pour .NET et Silverlight, vous fusionnez une adresse et une liaison avec un contrat dans une fabrique de canaux pour créer un canal . Ce n'est pas fantaisie parler conceptuel architecte, c'est exactement ce que votre code ressemblerait (le signe de très bonne architecture !) Voici la version .NET de ce que je veux dire:

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(); 
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1003/Person.svc"); 
IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel(); 

Person person = personService.GetPersonData("F488D20B-FC27-4631-9FB9-83AF616AB5A6"); 
+0

Comme il l'a dit, c'est "la version .NET de". Silverlight ne prend en charge que les appels de service asynchrones et la plupart des services ne fournissent pas d'interface pour les appels asynchrones (et OMI qu'ils ne devraient pas). À partir de là, les choses deviennent beaucoup plus difficiles. – fredlegrain

+0

Ce que j'attends est quelque chose de plus comme ce que fait K.Kozmic dans .Net: voir http://kozmic.pl/archive/2009/08/09/making-asynchronous-wcf-calls-without-svcutil.aspx – fredlegrain

Questions connexes