WCF vs ASP.NET Web API

Я потратил несколько месяцев, пытаясь понять концепции WCF, и недавно я разработал свое первое приложение службы WCF.
Я много разбирался, чтобы понять все настройки в файле конфигурации.
Я не уверен в окружающей среде, но кажется, что вы можете делать с ним удивительные вещи.
На днях я узнал, что Microsoft выпустила новую вещь под названием ASP.NET Web API.
Для чего я могу прочитать это RESTful framework, очень прост в использовании и реализации.
Теперь я пытаюсь понять, каковы основные отличия между двумя структурами, и если я попытаюсь преобразовать старое приложение-службу WCF с новым API.

Может ли кто-нибудь помочь мне разобраться в различиях и использовании каждого из них?

Ответ 1

Новый веб-API ASP.NET является продолжением предыдущего проекта WCF Web API (хотя некоторые из концепций изменились).

WCF был создан для включения служб на основе SOAP. Для более простых сервисов RESTful или RPCish (например, таких как jQuery) ASP.NET Web API должен быть хорошим выбором.

Ответ 2

Для нас WCF используется для SOAP и веб-API для REST. Я хочу, чтобы Web API поддерживал SOAP. Мы не используем расширенные функции WCF. Вот сравнение MSDN:

enter image description here

Ответ 3

ASP.NET Web API - все о HTTP и REST, основанных на GET, POST, PUT, DELETE, хорошо знакомы с ASP.NET MVC-стилем программирования и возвратом JSON; веб-API предназначен для всего легкого процесса и чистых компонентов на основе HTTP. Для того, чтобы идти вперед с WCF даже для простого или простого одиночного веб-сервиса, он принесет весь лишний багаж. Для облегчения простого обслуживания для ajax или динамических вызовов WebApi просто решает эту проблему. Это аккуратно дополняет или помогает параллельно ASP.net MVC.

Посмотрите подкаст: Hanselminutes Podcast 264 - Это не ваш отец WCF - все о WebAPI с Glenn Block от Scott Hanselman для более информация.

Ответ 4

В приведенных ниже сценариях вы должны пойти для WCF:

  • Если вам нужно отправить данные о таких протоколах, как TCP, MSMQ или MIME
  • Если потребитель-клиент просто знает, как потреблять SOAP-сообщения

WEB API - это среда для разработки служб RESTful/HTTP.

Есть так много клиентов, которые не понимают SOAP, как браузеры, HTML5, в тех случаях, когда API-интерфейсы WEB являются хорошим выбором.

Заголовок HTTP-сервиса указывает, как защитить службу, как кэшировать информацию, тип тела сообщения и тело HTTP может указывать любой тип контента, например HTML, а не только XML как службы SOAP.

Ответ 5

WCF предоставит вам столько возможностей, что даже не сопоставимо ни с чем. Если вы не хотите выполнять собственную реализацию (чтобы назвать несколько) проверку подлинности, авторизацию, шифрование, организацию очередей, дросселирование, надежную передачу сообщений, протоколирование, сеансы и т.д. WCF не является [только] веб-сервисами; WCF является платформой разработки SOA.

Ответ 6

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

Посмотрите это изображение, чтобы понять больше differnce

Примечание. Данные не только в моем представлении, но и на другом официальном сайте.

Ответ 7

Деловая речь, WebApi не хватает WSDL, поэтому разработчики должны документировать все вручную. И если, например, операция WebApi возвращает список объектов, то клиент должен создавать объекты вручную, т.е. WebAPI действительно подвержен ошибкам определений.

Про Webapi является его более легким, чем WCF.

Ответ 8

В MSDN есть сравнение об этом

WCF и веб-API ASP.NET

Для меня выбор был о том, кто такие клиенты, и где они расположены?

Внутри корпоративных и .NET-клиентов: Использовать WCF с привязкой TCP (Fast communication than HTTP)

Вне сети компании и используйте разнообразные технологии, такие как PHP, Python и т.д.. Используйте веб-API с REST

Ответ 9

Относительно утверждения "Отсутствие WSAL WebApi" существует несколько способов создания клиента Rest. Одним из популярных подходов является Swagger UI/(Swashbukkle Nuget). Это дает богатый интерфейс для понимания схемы ввода и вывода конечной точки REST и онлайн-инструмента для проверки конечных точек.

JSON LD (Json Linked Documents) - еще один новый стандарт, который еще больше улучшит опыт разработчиков REST на основе JSON, разоблачив схему JSON с лучшей семантикой.

Ответ 10

Веб-API ASP.NET и WCF:

ASP.NET Web API: ASP.NET Web API

Веб-API:
  • Открытый исходный код и поставляется с платформой .NET.
  • Поддерживает только протокол HTTP.
  • Карты http-глаголов для методов
  • Использует концепцию маршрутизации и контроллера, аналогичную ASP.NET MVC.
  • Не поддерживает надежные сообщения и транзакции.
  • Web API можно настроить с помощью класса HttpConfiguration, но не в web.config.
  • Идеально подходит для создания служб RESTful.
WCF:
  • Использует модель программирования на основе атрибутов.
  • Использует контракты на обслуживание, операции и данные.
  • Поддержка надежных сообщений и транзакций.
  • Корабли с платформой .NET
  • Поддерживает протокол HTTP, TCP, UDP и пользовательский транспортный протокол.
  • Использует web.config и атрибуты для настройки службы.
  • Поддерживает службы RESTful, но с ограничениями.

Когда выбрать WCF?

  • Выберите WCF, если вы используете .NET Framework 3.5. Веб-API не поддерживает .NET 3.5 или ниже.
  • Выберите WCF, если ваша служба должна поддерживать несколько протоколов, таких как HTTP, TCP, Named pipe.
  • Выберите WCF, если вы хотите создать службу с такими стандартами WS- *, как надежные сообщения, транзакции, безопасность сообщений.
  • Выберите WCF, если вы хотите использовать шаблоны обмена сообщениями Request-Reply, One Way и Duplex.

Когда выбрать ASP.NET Web API?

  • Выберите веб-API, если вы используете .NET framework 4.0 или более поздней версии.
  • Выберите веб-API, если вы хотите создать службу, поддерживающую только протокол HTTP.
  • Выберите Web API для создания сервисов на основе HTTP RESTful.
  • Выберите Web API, если вы знакомы с ASP.NET MVC.

Ответ 11

С помощью wcf мы можем настроить и предоставить одну и ту же сервисную поддержку для нескольких конечных точек, таких как tcp, http.if, если вы хотите, чтобы ваш сервис был только на основе http, тогда лучше будет работать с веб-API. Web API имеет гораздо меньшую конфигурацию по сравнению с wcf и бит быстрее, чем wcf. Wcf также поддерживает службы поддержки. Если у вас есть ограничение .Net framework 3.5, то ваш вариант - wcf.