2012-02-26 1 views
40

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

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

+4

Это не MVC WebAPI, это веб-интерфейс ASP.NET и не связанный с ASP.NET MVC вообще никак. См. Это сообщение в блоге: http://blogs.msdn.com/b/henrikn/archive/2012/02/23/using-asp-net-web-api-with-asp-net-web-forms.aspx Вы можете сам-хозяин, если хотите. – tugberk

ответ

22

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

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

В Web API абстракций WCF карты для ASP.NET Web API примерно следующим образом

WCF Web API -> ASP.NET Web API

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

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

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

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

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

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

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

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

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

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

И это лучше, имхо.

Я уверен, что должно быть возможно разместить 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 прямо сейчас.

+0

Да, я могу сказать, что MVC4 Web API предназначен для прямой замены WCF WebApi. Но я не слишком уверен, как это работает, поскольку, похоже, он предоставляется через ASP, а не WCF, что немного странно. Предполагается ли ASP заменить WCF? Im также не слишком уверен, какие биты WCF WebAPI включены в новый продукт, ive заметил, что тестовый клиент еще не существует, но я также задавался вопросом о различиях в маршрутизации (и других областях), это маршрутизация ASP.Net, которая должна заменить расширения WebInvoke для WAP WebAPI или они все еще там где-то? –

+0

Я не слишком уверен, что вы подразумеваете под «Я уверен, что должно быть возможно разместить asp.net mvc4 webapi поверх WCF», они кажутся мне взаимоисключающими, вы имеете в виду «Self Hosting»? –

+0

См. Пост edit (не может вписываться в комментарий) – WDRust

14

Похоже, WCF сам как-то умирают или, по крайней мере, становится что гораздо менее важно, чем предполагалось, и из-за этого он также имеет гораздо меньшие усилия по разработке, поставленные в его набор функций. New features in 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.

+0

WCF был связан с абстрагированием HTTP, TCP и т. Д. С другой стороны, REST-стек - это использование HTTP, поэтому разделение этих двух является отличным шагом во имя сохранения WCF в качестве чистого нейтрального стека служб. –

+9

-1: «ASP.NET» web api не является основанием полагать, что WCF умирает или становится менее важным. Это причина полагать, что целевой рынок услуг REST не является целевым рынком для WCF. –

+1

WCF является промежуточным сервисом, в то время как WebApi является более ориентированным сервисом –

9

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

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

Ссылка

  1. CodePlex: WCF Web API is now ASP.NET Web API
  2. CodePlex: Daniel Roth on the Future of WCF
  3. Chanel9: Dan Roth on the new ASP.NET Web API
0

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

+0

-1: «Раздутое» - это бессмысленное слово. Кроме того, WCF имеет поддержку REST. –

1

Следующая выдержка, найденная на this MSDN page, резюмирует эту проблему.

Используйте 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.

1

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

Web Service

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

WCF

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

Web API (Web API 2,0)

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