2008-11-07 4 views
14

Я не знаком с WCF, но я думал, что узнаю, пытаясь использовать существующий сервис.Использование службы REST из WCF

Один из API REST, о котором я думал, был Twitter API. Я думал о разработке WPF-клиента, который будет выводить на экран последние 5 твитов определенным пользователем Twitter.

Мне было интересно, если кто-то может кратко описать шаги, которые мне нужно предпринять в Visual Studio, чтобы использовать эти службы, используя WCF (классы, мастера, прокси и т. Д.). Я уже знаю, как просто называть их с помощью сети запросить и проанализировать возвращаемый XML - я действительно хочу, чтобы часть WCF работала.

Спасибо заранее anyoine, который помогает в дальнейшем мое образование :)

+0

если образование является целью, считают, что WCF не может быть наиболее подходящей основой для потребляющих REST API. правый инструмент для правильной работы, и вы, возможно, подняли кувалду здесь, когда все, что вам нужно, это отвертка ... , если вы хотите получить предложение, прочтите ответ Даррела. – 2010-01-24 11:17:28

+1

... и если вам нужно больше примеров того, как определить контракты WCF для служб, отличных от WCF, это боль, см. Здесь http://stackoverflow.com/questions/2180676/readasdatacontract-exception-while-reading-namespace/2180811#2180811 – 2010-02-03 15:37:15

ответ

6

Там нет никакой выгоды для использования WCF, чтобы потреблять API на основе Http вроде API Twitter. System.Net.HttpWebRequest более чем достаточно. На самом деле я подозреваю, что у вас будут трудности. WCF намного проще работать, когда у вас есть WCF на обоих концах провода.

Однако, если REST API возвращает содержимое Atom, вы можете использовать классы System.ServiceModel.Syndication, чтобы помочь разобрать ответ.

EDIT: С тех пор как я написал это сообщение, Microsoft выпустила предварительный просмотр новой клиентской библиотеки HTTP, которая еще лучше использует ресурсы RESTful.
Вот как вы будете использовать его для POST в твиттере:

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

Если вы хотите больше больше информации об этой клиентской библиотеке, я нахожусь в процессе написания некоторых сообщений в блоге об этом here.

+3

И вы, сэр, выиграйте «самую неправильную» награду. Создание DataContracts для представления удаленных данных и позволяет различным сериализаторам .NET обрабатывать грязную работу - это огромная победа – TheSoftwareJedi 2008-11-08 01:16:15

Смежные вопросы