2008-11-07 8 views
14

Je ne suis pas familier avec WCF, mais j'ai pensé que je vais apprendre en essayant de consommer un service existant.Consommer un service REST de WCF

L'une des API REST à laquelle je pensais était la Twitter API. J'ai pensé à développer un client WPF qui va sortir à l'écran les 5 derniers tweets d'un certain utilisateur de Twitter. Je me demandais si quelqu'un pouvait décrire brièvement les étapes que je devais suivre dans Visual Studio pour consommer ces services, en utilisant WCF (classes, assistants, proxys, etc.) .Je sais déjà comment les appeler en utilisant un web demande et analyse le XML qui retourne - je veux vraiment voir la partie WCF au travail.

Merci à l'avance pour ANYOINE qui aide mon éducation :)

+0

si l'éducation est le but, considérer que WCF ne peut pas être le cadre le plus approprié pour CONSOMMER une API REST. bon outil pour le bon travail, et vous pouvez avoir ramassé le marteau ici quand tout ce que vous avez besoin est un tournevis ... si vous souhaitez une suggestion, lisez la réponse de Darrel. –

+1

... et si vous avez besoin d'autres exemples de la façon dont la définition des contrats WCF pour les services non WCF est une douleur, voir ici http://stackoverflow.com/questions/2180676/readasdatacontract-exception-while-reading-namespace/2180811#2180811 –

Répondre

7

Découvrez Kirk Evans Creating a REST Twitter Client With WCF. Les dernières améliorations de WCF dans .NET 3.5 SP1 rendent de nombreuses interfaces RESTful plus faciles.

Également consultez le Twitter WCF 3.5 API Declaration Library à partir du site MSDN.

est ici yet another example - AVERTISSEMENT au lien 2/3/10 est « foireuse »

+0

last link is borked –

+0

@Steve, il suffit de l'éditer pour moi la prochaine fois! C'est un wiki ... – TheSoftwareJedi

+0

Je n'ai pas de droits d'édition avec mon niveau actuel de points SO. –

6

Il n'y a aucun avantage à utiliser WCF pour consommer une API basée Http comme l'API Twitter. System.Net.HttpWebRequest est plus que suffisant. En fait, je soupçonne que vous aurez de la difficulté. La WCF est beaucoup plus facile de travailler quand vous avez WCF aux deux extrémités du fil. Toutefois, si l'API REST renvoie un contenu Atom, vous pouvez utiliser les classes System.ServiceModel.Syndication pour analyser la réponse.

EDIT: Depuis que j'ai écrit ce post, Microsoft a publié un aperçu d'une nouvelle bibliothèque cliente HTTP qui fait un meilleur travail de consommation de services RESTful.
Voici comment vous l'utiliser pour POST à ​​Twitter:

var client = new HttpClient(); 
client.DefaultHeaders.Authorization = Credential.CreateBasic("username","password"); 
var form = new HttpUrlEncodedForm(); 
form.Add("status","Test tweet using Microsoft.Http.HttpClient"); 
var content = HttpContent.Create(form); 
var resp = client.Post("http://www.twitter.com/statuses/update.xml", content); 

Si vous voulez plus de détails sur cette plus bibliothèque cliente, je suis en train d'écrire des messages de blog à ce sujet here.

+3

Et vous monsieur, gagnez le "plus mauvais" prix. Créer des DataContracts pour représenter les données distantes, et laisser les différents sérialiseurs .NET gérer le sale boulot est une énorme victoire – TheSoftwareJedi

+0

Ayant fait des services Web avec ASMX, WCF, System.ServiceModel.Web, et avec Web Services Software Factory de P & P et ayant passé le L'année dernière, en faisant des services REST, je peux vous assurer que mon expérience ne correspond pas à votre assertion. –

+1

@TheSoftwareJedi Je vous mets au défi de créer un contrat de données qui permettra de désérialiser avec succès les réponses XML que vous obtenez de l'API twitter. Si vous publiez la solution, je vais supprimer ma réponse. –

Questions connexes