Какая разница между WCF и веб-API и веб ASP.NET API-интерфейс

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

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

7 ответов


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

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

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

WCF в веб-API -> ASP.NET веб-API

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

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

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

  • современная модель программирования HTTP
  • полная поддержка ASP.NET маршрутизация
  • согласование контента и пользовательские форматтеры
  • привязка и проверка модели
  • фильтры
  • запроса
  • легко модульного тестирования
  • улучшенная инверсия управления (IoC) через DependencyResolver
  • конфигурация на основе кода
  • Self-host

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

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

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

вот такая ситуация:

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

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

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

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

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

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

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

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


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

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


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

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

ссылка

  1. CodePlex: веб-API WCF теперь ASP.NET Web API
  2. CodePlex: Даниэль Рот о будущем WCF
  3. Chanel9: Дэн рот на новом ASP.NET Web API

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

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


вот хорошая статья о веб-службе, WCF и веб-APIhttp://goo.gl/T29A5B

Веб-Сервиса

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

WCF

  • на основе SOAP и возвращаемых XML-данных. SOAP является тяжелым сравнить затем JSON и его накладные расходы по сети также.
  • Расширенная версия веб-служб поддерживает несколько протоколов, таких как TCP, HTTP, HTTPS, именованные каналы, MSMQ через конфигурацию.
  • более надежный когда и клиент и сервер имеют .Сеть.
  • его реализация и конфигурация сложна
  • потребляется клиентом что в состоянии понять службы XML SOAP.
  • Self-hosting, IIS и использование служб windows.

Web API (Web API 2.0)

  • дизайн специально для создания служб http Restful в .Net Framework.
  • Web API легко читаемый и удобный как JSON.
  • поддержка всех функций HTTP, таких как URL-адреса, запрос/ответ, заголовки, кэширование и управление версиями.
  • Web API поддерживает многие http-глаголы, такие как GET, POST, PUT, DELETE и т. д.
  • веб-API не имеет состояния.
  • Web API поддерживает функции MVC (контроллеры, результаты действий, маршрутизация, фильтр, связыватели моделей, контейнер IOC или инъекция зависимостей)
  • Web API может быть автономным, размещенным в приложении и в IIS.
  • OWIN (Open Web Interface for .NET)используется для самостоятельного хостинга.

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