IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Silverlight 4 + RIA Services - Prêt pour les affaires


précédentsommairesuivant

Traduction

Cet article est la traduction la plus fidèle possible de l'article original de Brad Abrams, Silverlight 4 + RIA Services - Ready for Business: Exposing WCF (SOAP/WSDL) Services

Exposer des services WCF (SOAP/WSDL)

Poursuivant notre série, je voulais aborder la façon dont un RIA Services peut être exposé comme un service SOAP/WSDL. Cela est très utile si vous voulez permettre qu'exactement la même logique métier / logique d'accès aux données soit disponible aux clients autres que Silverlight. Par exemple pour une application WinForms ou WPF ou même une application console. SOAP est un modèle particulièrement adapté pour l'interopérabilité avec le monde Java/JEE également.


Tout d'abord, vous devez ajouter une référence à l'assembly Microsoft.ServiceModel.DomainSerivves.Hosting.EndPoints à partir du RIA Services Toolkit.

Image non disponible


Ensuite vous devez modifier la section « endpoints » de la configuration domainServices dans le fichier web.config. Ci-dessous je vous montre les « endpoints » SOAP et OData activés.

 
Sélectionnez
<system.serviceModel>
    <domainServices>
      <endpoints>
        <add name="OData" 
             type="System.ServiceModel.DomainServices.Hosting.ODataEndpointFactory, System.ServiceModel.DomainServices.Hosting.OData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add name="Soap"
             type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </endpoints>
    </domainServices>


Maintenant, tout ce qui vous reste à faire est d'aller vers cette URL dans votre navigateur :

http://localhost:21516/BusinessApplication1-web-DishViewDomainService.svc


Notez que le motif est [namespace]-[typename].svc

Image non disponible


Et nous obtenons la très familière page de débogage du service WCF.

Et si vous voulez y aller en profondeur, voici le WSDL complet décrivant le service.

Image non disponible


Vous avez fini sur le serveur, maintenant nous allons voir comment vous consommez cela sur le client. Par souci de simplicité, j'ai créé une nouvelle application console. Faites un clic droit sur le projet et sélectionnez Ajouter une référence de service (en anglais, « Add Service Reference »).

Image non disponible
Image non disponible
 
Sélectionnez
  1: var context = new DishViewDomainServiceSoapClient();
  2: var results = context.GetRestaurants();
  3: foreach (var r in results.RootResults)
  4: {
  5:    Console.WriteLine(r.Name);
  6: }
  7:


Le code pour la requête est très simple. La ligne 1 crée le proxy client, la ligne 2 fait un appel synchrone au serveur. Ensuite nous devons tout simplement boucler à travers les résultats.

Image non disponible


Mettre à jour les données est un peu plus intéressant. J'ai besoin de créer un ChangeSet que je remplis avec les mises à jour. Dans ce cas je mets à jour une seule valeur. Je dois aussi renvoyer la valeur d'origine vers le serveur.

 
Sélectionnez
  1: var changeSet = new ChangeSetEntry();
  2: var org = new Restaurant();
  3: org.ID = entity.ID;
  4: org.Name = entity.Name;
  5: entity.Name = "Updated:" + entity.Name;
  6: changeSet.Entity = entity;
  7: changeSet.OriginalEntity = org;
  8: changeSet.Operation = DomainOperation.Update;
  9: var updateResults = context.SubmitChanges(new ChangeSetEntry[] { changeSet });
 10:


Et vous pouvez voir ce qui résulte du fait d'exécuter cela plusieurs fois :

Image non disponible


Pour plus d'informations, voir le billet de Deepesh Mohnani intitulé Configuring your DomainService for a Windows Phone 7 application.


Pour la V1.0, ce billet décrit l'histoire de RIA Services pour les applications WPF. Même si elle fonctionne, ce n'est clairement pas la solution complète et de bout en bout qu'offre RIA Services pour Silverlight. Par exemple, vous voudrez peut-être l'expérience complète : le DataContext, entités avec validation, requêtes LINQ, le suivi des modifications, etc. Ce niveau de support pour WPF est sur la feuille de route mais ne sera pas de la V1. Mais si vous aimez l'approche RIA Services, vous pourriez envisager DevForce d'IdeaBlade ou CSLA.NET  qui fonctionnent à la fois pour WPF et Silverlight. Les gens sympa d'IdeaBlade m'ont offert dix licences gratuites à distribuer. Si vous êtes intéressés, s'il vous plait faites-le-moi savoir.

Conclusion

Ceci conclut la neuvième partie de cette série. Dans la dixième partie nous verrons comment exposer des services JSON.


précédentsommairesuivant

Copyright © 2012 Brad Abrams. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.