Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Le blog technique de Loïc Bar

Nouvelles technologies Web

Award

  • mvp

J'y serai...

Mes livres

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 :

  1. On suppose que seul l'URI suffit à accéder aux données.
  2. Ils utilisent HTTP (GET, POST, DELETE et PUT suffisent normalement).
  3. Il n'y a pas d'état.

image

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 :

image

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 :

image

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 :

image 

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.

image

L'implémentation de notre méthode n'est pas très compliquée :

image

Maintenant notre service créé, nous devons le déployer. Pour l'exposer nous avons besoin d'ajouter un fichier svc :

image

Le fichier web.config doit également subir quelques modifications :

image

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 :

  1. Il faut définir que tel URI correspond à l'appel de tel méthode de notre WS.
  2. Il faut changer le binding et passer à webHttpBinding.
  3. 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.

image

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.

image

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é :

image

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 :

image

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 :
Posted: mardi 10 juin 2008 10:47 par loicbar
Classé sous : , , , ,

Commentaires

usingsystemnet a dit :

Très interessant comme article.

Par contre petite remarque depuis le sp1 du 3.5, les attributs DataContract et DataMember ne sont plus nécessaires dans ce cas là.

Sinon au niveau conception je trouve un peu domage que le template du get ainsi que le format de retour se fasse en attribut et non dans la config. Est-ce possible de déplacer ca dans la config.

Autre problème : si on expose le même contrat avec un autre point de communication http et qu'on voudrait pas avoir ce format, ca peut être genant.

# juin 10, 2008 21:42

loicbar a dit :

@usingsystemnet : Merci pour ton commentaire. Vive la SP1, je suis pas up-to-date on dirait :p.

Je pense pas que se soit possible de mettre ça dans le web.config. Mais si tu trouves quelques choses dans cette direction, je suis intéressé.

Je ne pense pas que cela pose problème => différent binding et behavior.

# juin 11, 2008 14:20

usingsystemnet a dit :

Concernant les attributs DataContract et DataMember, le DataContractSerializer se contente du fait depuis le sp1 que l'objet soit sérializable.

Concernant les attributs je dis ca car en entreprise, beaucoup responsable techniques ont peur de lier fortement leurs services avec un choix technique (là en loccurence wcf) ce qui est en effet justifiable...a investiguer effectivement. Mais bon c'est sûr que dans l'optique d'un service dédiée exclusivement à cette tâche (connexion avec OpenSocial) cela ne pose pas de problème.

# juin 11, 2008 15:29

minsou a dit :

Je suis d'accord avec usingsystemnet, dans certaines applis nous avons du créer une couche supplémentaire (Data Transfert Object) pour éviter de lier notre couche de service à une implémentation en l'occurence WCF.

# juin 17, 2008 15:44
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01