Использование службы REST из WCF

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

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

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

Заранее спасибо любому, кто помогает мне в дальнейшем обучении :)

если целью является образование, учтите, что WCF может быть не самой подходящей средой для ПОТРЕБЛЕНИЯ REST API. правильный инструмент для правильной работы, и вы, возможно, взяли здесь кувалду, когда все, что вам нужно, это отвертка ... если вам нужен совет, прочитайте ответ Даррела.

Steve Casey 24.01.2010 14:17

... и если вам нужно больше примеров того, как определение контрактов WCF для служб, отличных от WCF, является проблемой, см. здесь stackoverflow.com/questions/2180676/…

Darrel Miller 03.02.2010 18:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
2
8 661
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

Обновлено: С тех пор, как я написал этот пост, Microsoft выпустила предварительную версию новой клиентской библиотеки HTTP, которая еще лучше справляется с потреблением сервисов RESTful. Вот как вы могли бы использовать его для 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);

Если вам нужны более подробные сведения об этой клиентской библиотеке, я сейчас пишу несколько сообщений в блоге об этом здесь.

А вы, сэр, выиграете "самую неправильную" награду. Создание DataContracts для представления удаленных данных и предоставление возможности различным сериализаторам .NET выполнять грязную работу - огромная победа.

TheSoftwareJedi 08.11.2008 04:16

Создав веб-сервисы с помощью ASMX, WCF, System.ServiceModel.Web и P&P's Web Services Software Factory и потратив последний год на REST-сервисы, я могу заверить вас, что мой опыт не согласуется с вашим утверждением.

Darrel Miller 09.11.2008 04:05

@TheSoftwareJedi Я призываю вас создать контракт данных, который будет успешно десериализовать XML-ответы, которые вы получаете от twitter API. Если вы опубликуете решение, я удалю свой ответ.

Darrel Miller 01.07.2009 06:23

DataContracts ограничены очень в том, что они могут делать при обработке xml. Я согласен с мнением Даррела, HttpWebRequest намного проще, чем иметь дело со всем стеком WCF, который не может десериализовать много содержимого xml, будь то смешанный контент, атрибуты или децентрализованная расширяемость (пространства имен).

SerialSeb 23.01.2010 17:16
Ответ принят как подходящий

Обратите внимание на Кирка Эванса Создание REST-клиента Twitter с помощью WCF. Последние улучшения WCF в .NET 3.5 SP1 упрощают многие интерфейсы RESTful.

Также проверьте Библиотека объявлений API Twitter WCF 3.5 с сайта MSDN.

Вот еще один пример - ВНИМАНИЕ по состоянию на 03.02.10 ссылка "боркалась"

Другие вопросы по теме