WCF как веб-сервис с минимальной полезной нагрузкой - PullRequest
4 голосов
/ 26 марта 2009

В настоящее время я делаю большую часть своей работы с технологиями Microsoft, поэтому, естественно, я проверяю, что может предложить WCF. Он выглядит очень гибким и является отличным шагом по сравнению с удаленным взаимодействием .Net, но он кажется очень привязанным к сообщениям SOAP и довольно неуклюжим для приложения веб-службы, не зависящего от платформы. Я не специалист по технологиям, но я представляю, что вся эта гибкость, которую они рекламируют, означает, что вы можете оторваться от сообщений SOAP и вернуть любую структуру данных / формат, который вы пожелаете. Это правда или ложь?

Причина, по которой я говорю это, заключается в том, что если бы я действительно хотел создать приложение в качестве службы REST, одна из моих целевых платформ была бы мобильной. Не только это, но и одна из важных целей любого веб-сервиса - сохранить небольшую полезную нагрузку, будь то для мобильного телефона со скоростью набора номера или для полноценного настольного приложения.

Итак, если вы возьмете API-интерфейс Twitter в качестве примера, он будет невероятно успешным, потому что вы можете запросить данные в формате JSON без каких-либо необычных конвертов SOAP, взвешивающих данные и получающих наименьшее количество байтов для представления нужных вам данных. Таким образом, мобильное приложение, работающее на устройстве с плохой связью, использующее данные Twitter, может использовать минимально возможную полосу пропускания. Кроме того, шаблон Twitter, Facebook или любого из более успешных общедоступных API-интерфейсов представляет собой пользовательскую структуру данных в JSON и / или XML, а не заключенную в конверт SOAP (хотя я могу ошибаться ... это только мое впечатление ).

Как бы вы сделали это в WCF? Вам нужно прыгать через обручи, чтобы сказать WCF «просто вернуть этот текст ... не беспокойтесь о конверте SOAP», или это простой параметр конфигурации?

Ответы [ 3 ]

2 голосов
/ 26 марта 2009

Существует несколько параметров конфигурации, которые вы можете установить для удаления SOAP из WCF. Проще всего использовать WebServiceHost вместо обычного класса ServiceHost для размещения ваших сервисов. Он устанавливает большинство параметров, которые вы хотите. У Джастина Смита есть хороший пост, который противопоставляет WebServiceHost и ServiceHost .

Хотя звучит так, что вас больше беспокоит отправка полезной нагрузки POX (простого старого XML), чем некоторые из принципов REST (сопоставление URL-адресов и методы HTTP), вы можете найти RESTful .NET * 1006 Джона Фландера * Книга полезна. Вот обзор главы 1 .

Также ознакомьтесь с REST Starter Kit от Microsoft, в котором есть много примеров того, как выполнять обычные веб-задачи с WCF.

И, отвечая на другую часть вашего вопроса, я обнаружил, что использование JSON дает гораздо меньшую полезную нагрузку, чем XML, но при этом имеет достойную поддержку в WCF.

2 голосов
/ 26 марта 2009

См. WCF RESTful POX, JSON и SOAP сосуществуют . На самом деле настроить WCF так, чтобы он возвращал простые POX и / или JSON, очень просто.

1 голос
/ 26 марта 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...