WCF Web Api против WebHttpBinding - PullRequest
18 голосов
/ 14 марта 2011

Я новичок в развитии WCF RESTFull, и мне нужна полезная информация и ваши отзывы об использовании webHttpBinding по сравнению с новым веб-API WCF http://wcf.codeplex.com/.

Что я ищуэто знать о недостатках webHttpBinding и, следовательно, зачем использовать новый веб-API и особенно какие проблемы решает новый API.Если бы вы могли указать мне на некоторые сообщения в блоге, сравнивающие их обоих или просто говорить о проблемах при использовании webHttpBinding, я был бы признателен.Заранее спасибо.

Ответы [ 4 ]

22 голосов
/ 14 марта 2011

Основные недостатки Я бы сказал, что привязка webhttp затрудняет обработку специфических проблем HTTP.Это прекрасно работает, если все, что вы делаете, это передаете объект по HTTP, который сериализован в XML или JSON и который может транспортироваться в различных форматах.

HTTP - это гораздо больше, чем простой транспортный протокол для XML и JSON,это протокол прикладного уровня с богатой семантикой.Веб-API специально предназначен для людей, которые хотят создавать системы по HTTP, которые полностью используют богатство HTTP.

  1. Веб-API предполагает, что ресурсы HTTP могут иметь множество представлений в зависимости от потребностей различных клиентов.,Одним концом спектра может быть тупой браузер, который просто общается со службой, использующей пост в кодировке URL-адреса формы, и GET, а другой конец может быть более богатым клиентом, использующим Atom / OData или мультимедийный тип на основе гипермедиа.

  2. Веб-API охватывает и другие специфические проблемы HTTP, такие как connect, etags и т. Д., Которые позволяют лучше использовать промежуточные веб-серверы.

  3. Веб-API разработанИмея в виду больше тестируемости, вы можете решать вопросы с HTTP-сообщениями или другими проблемами более тестируемым образом.

  4. Веб-API имеет более упрощенную конфигурационную историю.

Подробнее об обосновании можно прочитать здесь: http://blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-web-apis-http-your-way.aspx

4 голосов
/ 14 марта 2011

Самым существенным отличием для меня является изменение модели программирования.Вы больше не пишете «сервисы», которые представляют «операции», связанные с HTTP-идиомами (GET, POST и т. Д.).С помощью веб-API вы создаете «ресурсы» (POCO), с которыми ваши клиенты могут взаимодействовать.

Кажется, веб-API лучше справляются с обработкой различных пользовательских типов мультимедиа (например, изображений PNG).

И последнее, но не менее важное: веб-API гораздо лучше подходят для автоматического тестирования.Например, вам больше не нужно использовать статические классы контекста для доступа к понятиям HTTP, таким как коды ответов.Вы используете классы запросов и ответов POCO, которые могут быть легко созданы в автоматических тестах с использованием оператора new () старого стиля.

Я согласен с Ladislav в том, что веб-интерфейсы API - это всего лишь предварительный просмотр, и создание приложения на его основе можетбыть одновременно рискованным и запрещенным с помощью лицензионного соглашения (но я этого не проверял).

Рассматривали ли вы @ serialseb's OpenRasta?Он стабилен и предлагает очень хорошую модель программирования для создания сервисов RESTful.

2 голосов
/ 14 марта 2011

Web API - это что-то вроде возможного будущего развития REST в WCF. Это всего лишь предварительный просмотр, который может значительно измениться до окончательного выпуска (возможно, в следующей версии .NET Framework). Поэтому, если вы хотите создать производственный REST-сервис, вы должны использовать webHttpBinding.

Доступную информацию о Web Api можно найти, например, в блоге команды .NET Connected Framework и на упомянутом вами сайте. Это упрощение и расширение текущего REST API.

0 голосов
/ 22 октября 2013

Web API предоставляет API, основанный на REST.Веб-API использует шаблоны MVC и будет очень знаком разработчикам ASP.NET MVC.Web API может использовать возможности HTTP как протокола уровня приложения, возвращая ресурсы в нескольких представлениях (XML, JSON, HTML и т. Д.) В соответствии с заголовками запросов клиента.

С другой стороны, WCF webHttpBinding использует шаблоныWCF, и собирается обратиться больше к разработчику WCF - ServiceContracts, OperationContracts, всеобъемлющий (или лишний вес, в зависимости от того, как вы на это смотрите, файл конфигурации), возможность самостоятельного размещения за пределами IIS.

Oneиз того, что мне нравится в Web API, это возможность использовать динамические типы, чтобы избежать ограничений системы типов.Мне также нравится поведение исключений по умолчанию в Web API - контраст WCF webHttpBinding, где по умолчанию исключения всплывают как HTTP 500 + полезная нагрузка HTML (yuk!).

Приятно иметь выбор между двумя превосходными технологиямиВот.Я бы не назвал Web API «более новым» или «лучше», чем WCF, поскольку это подразумевает его замену и то, что WCF webHttpBinding является устаревшим, что я не верю в истинность.

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

...