Подтвердить что ты не робот

WCF Web Api vs WebHttpBinding

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

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

4b9b3361

Ответ 1

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

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

  • Web API охватывает, что ресурсы HTTP могут иметь множество представлений, основанных на потребностях разных клиентов. Один конец спектра может быть тупым браузером, который просто разговаривает с сервисом, используя почтовый кодированный текст и GET, тогда как другой конец может быть более богатым клиентом, который использует Atom/OData или тип носителя на основе гипермедиа.

  • Web API охватывает, что существуют другие специфические проблемы HTTP, такие как conneg, etags и т.д., которые позволяют лучше использовать промежуточные веб-серверы.

  • Веб-API разработан с большей степенью вероятности, поэтому вы можете более эффективно тестировать работу с сообщениями HTTP или другими проблемами.

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

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