OpenSocial et WCF REST-ful
Cet article traitera principalement de Windows Communication Foundation. Nous mettrons WCF en pratique en allant attaquer notre service web avec OpenSocial.
Pour ceux qui ne suivent pas l'actualité du web social, OpenSocial est une sorte de meta network. C'est un ensemble d'APIs qui vont permettre d'exploiter les informations de différents réseaux sociaux. La condition est que ces réseaux implémentent OpenSocial. Ils sont alors appelés conteneurs.
Cela va permettre aux développeurs de créer des applications qui pourront être déployées sur les réseaux conteneurs sans changer une seule ligne de code.
"Many sites, one API"
WCF REST-ful
Windows Communication Foundation est une extension du Framework .NET permettant de faciliter la création d'applications distribuées. Notre but ici est de créer un service web REST-ful qui exposera des données.
Les services REST-ful sont caractérisés par trois éléments :
- On suppose que seul l'URI suffit à accéder aux données.
- Ils utilisent HTTP (GET, POST, DELETE et PUT suffisent normalement).
- Il n'y a pas d'état.
Pour ce qui est de la réalisation, cela reste assez simple si vous avez déjà créer des services avec Windows Communication Foundation.
Création d'un service WCF simple
Le plus simple pour créer un service WCF est d'utiliser Visual Studio 2008. Si vous n'avez pas de version profesionnelle de Visual Studio vous pouvez télécharger la version gratuite (express) à cet adresse.
Visual Studio propose un template de projet pour la création d'un service web WCF :
Visual Studio ajoute des fichiers à votre projet. Vous pouvez soit les supprimer, soit les utiliser comme base.
La première chose que nous devons définir c'est les données que nous allons exposer. Nous voudrions ici permettre d'accéder aux informations des membres de notre site web. Nous aurons donc une classe Personne :
Une fois ceci fait, nous devons créer un contrat qui n'est qu'une interface c#. Ce contrat va permettre de définir les méthodes qui devront être exposée via notre service web :
Une fois cette interface créée, nous devons implémenter la méthode. Dans notre exemple nous utiliserons LINQ to SQL. LINQ à été ajouté au Framework .NET 3.5. Nous n'allons pas détailler ce qu'est LINQ ici, sachez que le but de cet ajout est d'unifier la façon d'accéder aux données. Nous en parlerons dans un prochain article.

L'implémentation de notre méthode n'est pas très compliquée :
Maintenant notre service créé, nous devons le déployer. Pour l'exposer nous avons besoin d'ajouter un fichier svc :
Le fichier web.config doit également subir quelques modifications :
Dans le web service nous définissons ce qu'on appelle le Binding. C'est la méthode d'accès au web service. Une vois tout ceci uploader sur votre serveur, vous pouvez atteindre le web service avec votre navigateur internet (ex : http://social.loicbar.com/Service.svc?wsdl).
Check list :
Nous avons vu se qu'on appelle l'ABC de WCF :
WCF REST-ful : mise en pratique
Pour passer de notre exemple précédent à un WebService REST, nous n'avons pas beaucoup de modification à apporter :
- Il faut définir que tel URI correspond à l'appel de tel méthode de notre WS.
- Il faut changer le binding et passer à webHttpBinding.
- Modifier le behavior (c'est à dire le comportement).
Pour déterminer le chemin d'accès à l'information (URI) on utilise des templates que nous définissons dans l'attribut WebGet.
Note : remarquez que id est devenu une chaîne de caractère. En effet, {id} ne peut correspondre qu'à un paramètre de type string. Nous devons donc traiter nous même le casting du paramètre.
Le template peut bien entendu être plus complexe. On peut par exemple avoir plus de paramètre à notre méthode et donc aussi dans notre template.
Au niveau de notre web.config, nous devons donc changer le binding et définir un behavior permettant d'utiliser REST.
Une fois déployé sur internet, vous pouvez accéder aux informations à l'aide d'une URI (ex : http://social.loicbar.com/Service.svc/personnes/1). Vous obtenez alors un objet JSON :
{"Id":1,"Nom":"Bar","Prenom":"Loic","Pseudo":"loicbar"}
OpenSocial et WebService REST JSON
Comme application test de notre web service nous allons créer un gadget sur Orkut à l'aide d'OpenSocial. Nous afficherons le nom et le prénom de l'utilisateur recherché :
Pour en savoir plus sur OpenSocial, attendez le 10 Juillet et la sortie de mon livre sur Facebook et OpenSocial. Quoi qu'il en soit, notre application fait bien ce qu'on lui demande :
En espérant que cela pourra vous être utile,
Loïc
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :