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 OData Services
Exposer des services OData▲
OData est un ensemble d'extensions émergentes pour le protocole Atom qui rend plus facile le partage de données sur le Web. Pour mettre en valeur OData dans RIA Services, continuons notre série. Nous pensons qu'il est très intéressant d'exposer OData à partir d'un DomainService pour faciliter le partage de données. Par exemple, je pourrais vouloir que les utilisateurs puissent accéder à mes données de manière riche dans Excel aussi bien que mon client Silverlight personnalisé. Je voudrais être en mesure de permettre cela sans écrire de multiples services ou sans dupliquer aucune logique métier ou logique d'accès aux données.
Ceci est très facile à activer avec RIA Services. En fait, il suffit d'une case à cocher ! Quand vous créez votre DomainService, cochez tout simplement la case « Expose OData endpoint » et cela exposera votre DomainService comme un flux OData.
Si vous avez déjà créé un DomainService, c'est facile d'activer OData dessus également en faisant les deux choses que fait cet assistant.
Premièrement, il ajoute un point de terminaison (en anglais, endpoint) à la section domainServices du web.config.
<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"
/>
</endpoints>
</domainServices>
Deuxièmement, sur chaque méthode de requête sans paramètres que vous souhaitez exposer par l'intermédiaire d'OData, marquer la requête comme étant par défaut. Cela veut dire qu'à chaque fois qu'il y a une requête pour Plate, c'est cette méthode de requête qui sera utilisée.
[Query(IsDefault = true)]
public
IQueryable<
Plate>
GetPlates
(
)
{
Une fois que tout cela est fait vous pouvez interroger le service et voir un flux Atom. Le format de l'adresse URL est espace de noms (namespace)+nom du type (typename) pour le domainservice et les points sont remplacés par des tirets suivi de « .svc/Odata/ ». Donc, si la classe DomainService est MyApp.Web.DishViewDomainService alors l'adresse URL sera http://localhost:30045/myapp-web-DishViewDomainService.svc/OData/
Ensuite accédez avec cette URL : http://localhost:30045/myapp-web-DishViewDomainService.svc/OData/PlateSet
C'est vraiment cool que les données soient dans un format ouvert basé sur Atom. Mais ce qui est encore mieux, c'est qu'il y a un écosystème naissant de clients qui peuvent consommer ce flux. L'un des plus intéressants est l'add-in Excel appelé PowerPivot.
Une fois que vous l'avez installé avec Excel 2010, sélectionnez la fenêtre PowerPivot.
Ensuite vous pouvez utiliser toute la puissance d'Excel. Donc, si vous voulez trier par nombre de mises à jour, avec une note de 4 ou supérieur, avec un nombre de calories entre 3000 et 4000, et ensuite présenter cela dans un graphe d'une façon intéressante, vous pouvez facilement le faire... Le tout avec les données « live » sans aucun code d'application personnalisé.
Ce que nous avons montré dans cette procédure pas à pas, c'est comment exposer OData à partir de votre DomainService et consommer cela dans Excel. Ceci n'est qu'un avant-goût de la prise en charge OData à venir dans le futur dans RIA Services.
Conclusion▲
Ceci conclut la huitième partie de cette série. Dans la neuvième partie nous verrons comment exposer des services WCF (SOAP/WSDL).