Accueil > Silverlight, WCF Data Services, WPF > Partie 1 : WCF Data Services – Présentation du protocole OData

Partie 1 : WCF Data Services – Présentation du protocole OData

Ceci est la première partie d’une suite d’articles à travers lesquels nous essayerons de mettre en place un service de données OData (Open Data) qui sera consommé par différentes applications clientes telles que WPF, Silverlight et Windows Phone que nous mettrons en place.

Avant de s’attaquer aux objectifs nous allons d’abord parler tout au long de cette première partie du protocole Open Data. Les autres parties serviront à mettre en place le service de données et les applications clientes.

Open DATA aussi appelé OData est un protocole qui se base sur l’architecture REST (REpresentational State Transfert) pour faciliter le partage des données avec tout type de client quel que soit la technologie à condition que ce dernier sache manier les requêtes HTTP (POST, GET, PUT et DELETE) et manipuler les données au format XML ordinaire, Atom Pub (Atom Publishing Protocol) ou JSON (JavaScript Object Notation).
Chaque type de requête HTTP est associé joue un rôle précis dans l’architecture REST :

  • GET : permet de récupérer une ressource
  • POST : permet de créer une nouvelle ressosurce
  • PUT : permet de modifier une ressource
  • DELETE : permet de supprimer une ressource

Chaque donnée ou ressource exposée est identifiable à travers une URI (Uniform Resource Identifier) qui suit une convention bien définie et respectant le schéma suivant :

L'image provient du site odata.org

L'image provient du site odata.org

Plusieurs exemples de services de données se basant sur le protocole OData sont listés sur le site odata.org. Prenons l’exemple du service de données Northwind accessible via l’url suivante : http://services.odata.org/Northwind/Northwind.svc/. Cette url représente la partie ServiceRoot de notre service de données exemple. En y accédant nous avons une structure de données XML qui s’affiche. Cette structure représente ce qu’on appelle le Service Document qui représente toutes les collections pouvant être consultées et/ou être modifiable.

Service Document

Dans le service document précédent nous avons la liste des collections exposées par notre service de données. Pour accéder à une collection il suffit d’utiliser l’attribut « href » de l’élément « collection ». Cet attribut représente le chemin relatif pour accéder à la liste des entrées d’une collection. Ainsi pour accéder à la liste de toutes les catégories nous utiliserons l’url suivante : http://services.odata.org/Northwind/Northwind.svc/Categories. Nous avons alors un flux AtomPub représentant des entrées de la collection Categories comme suit :

Les entrées de la collection Category

Les entrées de la collection Category

Chaque élément Entry représente une catégorie et contient les différentes informations se rapportant à la catégorie dans le sous-élément Content.
La ResourcePath peut être complexe comme par exemple pour accéder à la liste des produits appartenant à une catégorie donnée nous utiliserons le chemin relatif Categories(1)/Products (la valeur mise entre parenthèse représente l’identifiant de la catégorie dont on veut afficher la liste des produits) définit dans l’attribut href de l’élément link dans notre précédent schéma.

Avec les chemins de ressources utilisés précédemment nous ne personnalisons pas nos résultats. C’est la partie QueryOptions qui permettra de personnaliser (filtrer, ordonner, choisir le format de données désiré etc.) des données renvoyées par le service. Les différentes options de personnalisations sont listées sur le site http://www.odata.org/developers/protocols/uri-conventions#QueryStringOptions. Nous pouvons en citer quelques unes utilisées :

Un service de données expose aussi des métadonnées permettant de décrire la structure des données du service et de ses ressources permettant ainsi aux bibliothèques clientes de générer un proxy et par la suite faciliter la communication de votre application avec la source de données. Pour accéder à ces métadonnées il faut ajouter $metadata juste après le ServiceRoot. Ainsi dans l’exemple précédent on accédera aux métadonnées à travers l’url suivant : http://services.odata.org/Northwind/Northwind.svc/$metadata.

Vous pouvez mettre en place votre propre service de données OData pour cela vous devez respecter les spécifications définies sur le site www.odata.org. Cette tâche pouvant devenir fastidieuse alors plusieurs API serveurs et clients référencés sur le site du protocole ODATA permettent de créer et consommer des données exposées via ce protocole avec une facilité non négligeable.

Pour ce qui est de la technologie .Net, nous avons :

  • L’API serveur : pour mettre en place rapidement un service de données.
  • Les APIs clients : pour permettre à notre application .Net de communiquer avec notre service de données. Nous avons plusieurs APIs clients dépendants de l’application qui va consommer le service. Il existe une bibliothèque cliente WCF pour la ou les groupes de technologies .Net :
    • Silverlight
    • Windows Phone : bien qu’on développe avec du Silverlight pour cette plateforme une bibliothèque cliente à part entière lui est dédiée
    • Pour le reste : WPF, Windows Forms, ASP.Net etc.….

Voilà terminée la première partie qui explique comment fonctionne, sans entrer trop dans les détails, le protocole OData. Pour plus d’informations vous pouvez vous connecter sur le site odata.org qui constitue une mine d’informations sur ce protocole.

Dans la deuxième partie nous allons voir comment mettre en place notre service de données OData en utilisant la bibliothèque serveur WCF Data Services du framework .Net.

Publicités
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :