2008-11-07 6 views
14

Ich bin nicht so vertraut mit WCF, aber ich dachte, ich werde lernen, während ich versuche, einen bestehenden Dienst zu konsumieren.Einen REST-Dienst von WCF verwenden

Eine der REST-APIs, an die ich dachte, war die Twitter API. Ich dachte daran, einen WPF-Client zu entwickeln, der nur die letzten 5 Tweets eines bestimmten Twitter-Benutzers auf den Bildschirm ausgibt.

Ich frage mich, ob jemand könnte bitte kurz die Schritte skizzieren, die ich in Visual Studio nehmen muss, um diese Dienste zu nutzen, mit WCF (Klassen, Assistenten, Proxies etc.) Ich weiß bereits, wie Sie sie nur über ein Web aufrufen Anfrage und Analyse der XML, die zurückgibt - ich möchte wirklich den WCF-Teil bei der Arbeit sehen.

Vielen Dank im Voraus anyoine, die meine Ausbildung weiter :)

+0

wenn Bildung der Zweck ist, die Ansicht, dass WCF nicht die am besten geeigneten Rahmen sein kann, ein REST-API zu konsumieren. richtige Werkzeug für den richtigen Job, und Sie haben vielleicht den Vorschlaghammer abgeholt, wenn alles, was Sie brauchen, ist ein Schraubenzieher ... Wenn Sie einen Vorschlag möchten, lesen Sie Darrel's Antwort. –

+1

... und wenn Sie weitere Beispiele dafür benötigen, wie das Definieren von WCF-Verträgen für nicht WCF-Dienste mühsam ist, lesen Sie http://StackOverflow.com/questions/2180676/readasdataccontract-exception-while-reading-namespace/2180811#2180811 –

Antwort

7

Schauen Sie sich Kirk Evans Creating a REST Twitter Client With WCF. Die neuesten Verbesserungen von WCF in .NET 3.5 SP1 erleichtern viele RESTful-Schnittstellen.

Überprüfen Sie auch die Twitter WCF 3.5 API Declaration Library von der MSDN-Website.

Hier yet another example - WARNUNG ab 2/3/10 Link ist „borked“

+0

letzter link ist borked –

+0

@Steve, nur bearbeiten Sie es für mich das nächste Mal! Dies ist ein Wiki ... – TheSoftwareJedi

+0

Ich habe keine Bearbeitungsrechte mit meiner aktuellen SO-Punkte-Ebene. –

6

Es gibt keinen Nutzen für die Verwendung von WCF hilft, eine Http-basierte API wie die Twitter-API zu konsumieren. System.Net.HttpWebRequest ist mehr als ausreichend. In der Tat vermute ich, dass Sie einige Schwierigkeiten haben werden. WCF ist viel einfacher zu arbeiten, wenn WCF an beiden Enden der Leitung ist.

Wenn die REST-API jedoch Atom-Inhalt zurückgibt, können Sie mithilfe der System.ServiceModel.Syndication-Klassen die Antwort analysieren.

EDIT: Seit ich diesen Beitrag geschrieben hatte, veröffentlichte Microsoft eine Vorschau einer neuen HTTP-Client-Bibliothek, die eine noch bessere Arbeit der konsumierenden RESTful-Dienste leistet.
Hier ist, wie Sie es auf twitter POST verwenden würde:

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); 

Wenn Sie mehr Mehr Details zu diesem Client-Bibliothek wollen, ich bin in den Prozess ein paar Blog-Posts über here es zu schreiben.

+3

Und Sie, Herr, gewinnen Sie die "falscheste" Auszeichnung. Das Erstellen von DataContracts zur Darstellung der Remote-Daten und die Möglichkeit, die verschiedenen .NET-Serialisierer mit der Drecksarbeit umgehen zu können, ist ein großer Gewinn – TheSoftwareJedi

+0

Nachdem Webservices mit ASMX, WCF, System.ServiceModel.Web und mit der Web Services Software Factory von P & P ausgeführt wurden Letztes Jahr, als ich REST-Dienste ausführte, kann ich Ihnen versichern, dass meine Erfahrung nicht mit Ihrer Behauptung übereinstimmt. –

+1

@TheSoftwareJedi Ich fordere Sie auf, einen Datenvertrag zu erstellen, der die XML-Antworten, die Sie von der Twitter-API erhalten, erfolgreich de-serialisiert. Wenn Sie die Lösung veröffentlichen, werde ich meine Antwort entfernen. –