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

Какая разница между WCF Web API и ASP.NET Web API

В прошлом я немного работал с WCF WebAPI и очень любил множество его функций, я просто играю с ASP.NET Web API на данный момент, и он кажется совершенно другим (IE полностью удален из ФОС).

Кто-нибудь знает, какие функции WCF WebAPI включены в ASP.NET 4 Web API?

4b9b3361

Ответ 1

Ive сделал немного больше чтения по этому поводу и нашел несколько страниц MS людей по этому поводу:

http://wcf.codeplex.com/wikipage?title=How%20to%20Migrate%20from%20WCF%20Web%20API%20to%20ASP.NET%20Web%20API:

Абстракции веб-API WCF отображаются в веб-API ASP.NET примерно следующим образом

Веб-API WCF → Веб-интерфейс ASP.NET

  • Сервис → API веб-интерфейса
  • Операция → Действие
  • Договор на обслуживание → Неприменимо
  • Конечная точка → Неприменимо
  • Шаблоны URI → Маршрутизация ASP.NET
  • Обработчики сообщений → Тот же
  • Formatters → Same
  • Обработчики операций → Фильтры, привязки моделей

и http://wcf.codeplex.com/discussions/319671

Интегрированный стек поддерживает следующие функции:

  • Современная модель программирования HTTP
  • Полная поддержка маршрутизации ASP.NET
  • Консолидация контента и пользовательские форматы
  • привязка и проверка модели
  • Фильтры
  • Состав запроса
  • Легко unit test
  • Улучшенная инверсия управления (IoC) через DependencyResolver
  • Конфигурация на основе кода
  • Self-хост

Ответ 2

Из того, что я узнал, Microsoft сделала немного путаницу в названии.

Я предполагаю, что вы знаете, что такое WCF, эта большая структура, построенная поверх XML, позволяет пользователю создавать распределенные сервисы с широким спектром технологий (от SOAP до REST до MSMQ и т.д.).

Мне сложно (по крайней мере, для меня) и требует много загрузочного лотка, чтобы он работал, и в конце концов они это поняли и начали предоставлять некоторую стандартную конфигурацию для простых HTTP-сервисов (WCF REST для начинающих)? ASP.NET MVC набирает обороты, и некоторые из функций, которые он предоставил (например, сопоставление автоматических аргументов), начали отображаться в WCF.

Теперь, когда ситуация:

Объявление: WCF Web API теперь является веб-интерфейсом ASP.NET! Веб-API ASP.NET выпущенный с помощью бета-версии ASP.NET MVC 4. Поддержка API WCF и WCF для Содержимое jQuery на этом сайте wll будет удалено к концу 2012 года.

http://wcf.codeplex.com/wikipage?title=Getting%20started:%20Building%20a%20simple%20web%20api

И что лучше imho.

Я уверен, что должно быть возможно разместить asp.net mvc4 webapi поверх WCF (если вам когда-нибудь понадобится), но я не могу найти документацию, которая может доказать мне, что я прав (или неправильно).

UPDATE (не может вписываться в комментарий): Подождите, существует огромное различие между "переносом подмножества коммуникационных технологий из библиотеки/структуры в другой" и "заменой WCF". Я лично считаю, что WCF был разработан для какой-то концепции коммуникации, и он имеет довольно классный дизайн, но распределенные вычисления несколько переходят к новым (и более простым) решениям (посмотрите многофункциональный SOAP и гибкий REST, хотя многие люди все еще используют REST в RPC-манере), и я думаю, что подобные типы программирования лучше вписываются в архитектуру MVC, чем в WCF. Была предпринята попытка разработать простой способ создания/использования веб-сервисов поверх WCF, но в конечном итоге они выяснили, что это неправильное решение.

Не говоря уже о том, что многие разработчики теперь используют ASP.NET MVC и хотят делать веб-сервисы для своего веб-приложения, возиться с WCF часто слишком сложно для подобных вещей, и я испытал это на своей собственной шкуре.

Я думаю, что механизм маршрутизации является удивительным и правильным способом, и если вы посмотрите внимательно, они включили его часть (с разными именами и типами, но шаблон был там) в WCF. Так что да, я думаю, что если MS не отклонит эту часть WCF WE, она должна это сделать. Чтобы строго ответить, нет, я не думаю, что вы когда-либо найдете WebGet/WebInvoke в asp.net mvc *, он просто не вписывается.

Да, сам хост, вероятно, единственный бит WCF, содержащийся в ASP.NET MVC4 прямо сейчас.

Ответ 3

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

WCF был разработан как независимый от транспорта/протокола способ взаимодействия между процессами. Даже идея была независимой абстракцией, которая в основном строилась поверх стека SOAP. Когда WCF 3.5 предоставил поддержку REST, он был взломан, потому что REST - это все о транспортной зависимости. Использование транспортно-независимого API для поддержки взаимодействия между процессами, которое осуществляется посредством непосредственного использования транспортных функций, оказалось неудобным. В результате MS впервые выпустила WCF Rest API Starter Kit, который никогда не доходил до RTM, но это был предварительный просмотр функций, который позже был включен в WCF 4 и, наконец, в .NET 4.5 или WCF Web API. Поскольку REST зависит от транспорта и в настоящее время используется только с HTTP (даже теоретически можно использовать другой транспортный протокол), API был перенесен в .NET-часть, которая более подходит для обработки HTTP - в настоящее время очень популярна ASP.NET MVC.

Ответ 4

Веб-API WCF заменяется веб-API ASP.NET, который использует функции веб-API WCF и объединяет их с функциями ASPNet MVC. ASP.NET Web API - это новая (02/2012) структура для создания и использования HTTP-сервисов и платформы для создания сервиса RESTful.

Хотя не в оригинальном вопросе, кажется, стоит отметить, что WCF жив и здоров, и его поддержка REST остается полезной, когда у вас есть существующие SOAP (WS- *) сервисы, которые вы должны поддерживать, но хотите добавить REST, чтобы привлечь больше клиентов.

Ссылка

Ответ 5

Следующая выдержка, найденная на этой странице MSDN, хорошо описывает эту проблему.

Использовать WCF для создания надежных и безопасных веб-сервисов, доступных для разных видов транспорта. Используйте ASP.NET Web API для создания служб на основе HTTP, доступных из широкого круга клиентов. Используйте ASP.NET Web API, если вы создаете и разрабатываете новые сервисы типа REST. Хотя WCF предоставляет некоторую поддержку для написания сервисов типа REST, поддержка REST в ASP.NET Web API более полная, и все будущие улучшения REST будут сделаны в ASP.NET Web API. Если вы иметь существующую службу WCF, и вы хотите открыть дополнительные конечные точки REST, использовать WCF и WebHttpBinding.

Ответ 6

Вот хорошая статья о веб-сервисе, WCF и веб-API http://goo.gl/T29A5B

Веб-сервис

  • На основе SOAP и возврата данных XML
  • Поддержка только протокола HTTP. Он поддерживает только протокол HTTP.
  • Потребляется клиентом, который способен понимать xml SOAP Services.
  • Может содержать IIS. Он может размещаться только на IIS.
  • Легко учиться и понимать.

WCF

  • На основе SOAP и возврата данных XML. SOAP - это тяжелое сравнение, а также JSON и его накладные расходы по сети.
  • Расширенная версия веб-служб поддерживает несколько протоколов, таких как TCP, HTTP, HTTPS, именованные каналы, MSMQ через конфигурацию.
  • Более надежно, когда и клиент, и сервер имеют .Net.
  • Его реализация и конфигурация сложны.
  • Потребляется клиентом, который способен понимать xml SOAP Services.
  • Self-hosting, IIS и использование служб Windows.

Веб-API (Web API 2.0)

  • Дизайн специально для создания HTTP Restful Services на .Net Framework.
  • Web API легко читается и удобен как JSON.
  • Поддержка всех функций HTTP Like URls, Request/Response, Headers, Caching и Versioning.
  • Web API поддерживает множество HTTP-глаголов, таких как GET, POST, PUT, DELETE и т.д.
  • Веб-API не имеет статуса.
  • Web API поддерживает функции MVC (контроллеры, результаты действий, маршрутизацию, фильтр, привязки моделей, контейнер IOC или инъекцию зависимостей)
  • Web API может быть размещен на хостинге, размещенном в приложении и в IIS.
  • OWIN (Open Web Interface for.NET) используется для самостоятельного хостинга.

Ответ 7

ASP.net web api - легкий и встроенная поддержка REST. Он более подходит для мобильных приложений. WCF раздувается с большим количеством опций. Это зависит от сложности системы, чтобы выбрать один из них.