2008-11-07 13 views
14

Nie jestem zaznajomiony z WCF, ale pomyślałem, że nauczę się, próbując skonsumować istniejącą usługę.Zużywanie usługi REST z WCF

Jeden z interfejsów API REST myślałem o był Twitter API. Pomyślałem o stworzeniu klienta WPF, który wyświetli na ekranie ostatnie 5 tweetów przez określonego użytkownika Twittera.

Zastanawiam się, czy ktoś mógłby krótko opisać kroki, które muszę wykonać w Visual Studio, aby skonsumować te usługi, używając WCF (klasy, kreatory, proxy itp.). Już wiem, jak je wywoływać za pomocą sieci request i parsuj XML, który zwraca - naprawdę chcę zobaczyć część WCF w pracy.

Dzięki z góry do anyoine który pomaga dalej naukę :)

+0

czy edukacja jest cel, uważają, że WCF nie może być najbardziej odpowiednie ramy do spożywania REST API. Prawidłowe narzędzie do właściwej pracy, a możesz odebrać młot tutaj, gdy potrzebujesz tylko śrubokręta ... Jeśli chcesz sugestię, przeczytaj odpowiedź Darrela. –

+1

... i jeśli potrzebujesz więcej przykładów na to, jak definiowanie umów WCF na usługi inne niż WCF to problem, zobacz tutaj http://stackoverflow.com/questions/2180676/readasdatacontract-exception-while-reading-namespace/2180811#2180811 –

Odpowiedz

7

Wyjazd Kirk Evans Creating a REST Twitter Client With WCF. Najnowsze udoskonalenia WCF w .NET 3.5 SP1 ułatwiają korzystanie z wielu interfejsów RESTful.

Sprawdź również Twitter WCF 3.5 API Declaration Library z witryny MSDN.

Oto yet another example - UWAGA dniem 2/3/10 linku jest „borked”

+0

ostatni link jest borkowany –

+0

@Steve, po prostu edytuj go dla mnie następnym razem! To jest wiki ... – TheSoftwareJedi

+0

Nie mam uprawnień do edycji z aktualnym poziomem punktów SO. –

6

Nie ma korzyści przy użyciu WCF spożywać API opartego na HTTP jak API Twittera. System.Net.HttpWebRequest jest więcej niż wystarczający. W rzeczywistości podejrzewam, że będziesz miał trudności. WCF jest znacznie łatwiejsze do pracy, gdy masz WCF na obu końcach drutu.

Jeśli jednak API REST jest zwrócenie zawartości Atom to można za pomocą klas System.ServiceModel.Syndication pomóc analizowania odpowiedzi.

EDYTOWANIE: Od czasu, gdy napisałem ten post, Microsoft opublikował podgląd nowej biblioteki klienta HTTP, która wykonuje jeszcze więcej zadań związanych z korzystaniem z usług RESTful.
Oto jak można używać go do Opublikuj na Twitterze:

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

Jeśli chcesz więcej więcej szczegółów na tej biblioteki klienta, jestem w trakcie pisania niektórych blogach o tym here.

+3

A ty, proszę pana, wygraj nagrodę "najbardziej błędną". Tworzenie DataContracts w celu reprezentowania zdalnych danych i pozwolenie różnym serializatorom .NET na obsłużenie brudnej pracy jest ogromną wygraną. – TheSoftwareJedi

+0

Po wykonaniu usług sieciowych za pomocą ASMX, WCF, System.ServiceModel.Web oraz z P & P Web Services Software Factory i po wydaniu w ubiegłym roku, wykonując usługi REST, mogę zapewnić, że moje doświadczenia nie są zgodne z twoim stwierdzeniem. –

+1

@TheSoftwareJedi Rzucam Ci wyzwanie, aby utworzyć umowę na dane, która z powodzeniem odszyfrowuje odpowiedzi XML otrzymane z interfejsu API Twittera. Jeśli opublikujesz rozwiązanie, usunę moją odpowiedź. –