WCF vs ASP.NET Web API

Я потратил несколько месяцев, пытаясь понять концепции WCF, и недавно я разработал свое первое приложение-службу WCF.

Я много разбирался, чтобы понять все настройки в файле конфигурации.
Я не уверен в окружающей среде, но кажется, что вы можете делать с ним потрясающие вещи.

На днях я узнал, что Microsoft выпустила новую вещь под названием ASP.NET Web API .

Для того, что я могу прочитать, это RESTful framework , очень проста в использовании и реализации.

Теперь я пытаюсь понять, каковы основные различия между двумя структурами, и если я попытаюсь преобразовать старое приложение-службу WCF с новым API.

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

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

введите описание изображения здесь

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

Посмотрите подкаст: Hanselminutes Podcast 264 – Это не WCF вашего отца – все о WebAPI с Glenn Block Скоттом Хансельманом для получения дополнительной информации.

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

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

WEB API – это платформа для разработки служб RESTful / HTTP.

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

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

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

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

См. Это изображение, чтобы понять больше differnce

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

Существует сравнение по MSDN об этом

Веб-API WCF и ASP.NET

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

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

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

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

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

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

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

Почему я отвечаю:

Я потратил огромное количество времени, чтобы понять разницу между этими двумя технологиями. Я приложу все эти пункты, которые, я думаю, «если бы у меня были эти моменты в то время, когда я задавался вопросом в поисках этого ответа, то я решил очень рано выбирать мои требуемые технологии».

Источник информации:

Microsoft® Visual Studio® 2015 Unleashed

ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3

Почему ASP.NET Web API и WCF:

Прежде чем сравнивать технологии ASP.NET Web API и WCF, важно понять, что на самом деле существуют два стиля / стандартов для создания веб-сервисов: REST (State State State Transfer) и SOAP / WSDL. SOAP / WSDL был оригинальным стандартом, на котором были созданы веб-службы. Тем не менее, было трудно использовать и имели громоздкие форматы сообщений (например, XML), которые ухудшали производительность. Альтернативой стали услуги REST. Их легче написать, поскольку они используют основные конструкции HTTP (GET, POST, PUT, DELETE) и обычно используют меньшие форматы сообщений (например, JSON). В результате HTTP-сервисы на основе REST теперь являются стандартом для написания служб, которые строго нацелены на Интернет.

Давайте определим цель веб-API ASP.NET

ASP.NET Web API – это технология Microsoft для разработки веб-служб HTTP на основе REST. (Он давно заменил Microsoft ASMX, основанный на SOAP / WSDL.) Веб-API упрощает создание надежных сервисов на основе протоколов HTTP, которые понимают все браузеры и собственные устройства. Это позволяет создавать службы поддержки вашего приложения и вызывать их из других веб-приложений, планшетов, мобильных телефонов, ПК и игровых консолей. Большинство приложений, написанных сегодня, чтобы использовать имеющееся в настоящее время веб-соединение, используют HTTP-сервисы каким-то образом.

Давайте теперь определим цель WCF:

Общение через Интернет не всегда является самым эффективным средством. Например, если и клиент, и служба существуют на одной и той же технологии (или даже на той же машине), они часто могут обсуждать более эффективные средства связи (например, TCP / IP). Разработчики услуг обнаружили, что они делают тот же выбор, которого они пытались избежать. Теперь им придется выбирать между созданием эффективных внутренних сервисов и возможностью доступа к широкому доступу через Интернет. И, если они должны были поддерживать оба, им, возможно, придется создавать несколько версий своей службы или, по крайней мере, отдельные прокси для доступа к их сервису. Это проблема Microsoft, разрешенная с помощью WCF .

С WCF вы можете создавать свои сервисы, не заботясь о границах. Затем вы можете позволить WCF беспокоиться о том, чтобы запустить ваш сервис наиболее эффективным способом, в зависимости от вызывающего клиента. Для управления этой задачей WCF использует концепцию конечных точек. У вашей службы может быть несколько конечных точек (настроенных во время разработки или после развертывания). Каждая конечная точка указывает, как служба может поддерживать вызывающий клиент: через Интернет через удаленный доступ через Microsoft Message Queuing (MSMQ) и т. Д. WCF позволяет сосредоточиться на создании ваших функций обслуживания. Он беспокоится о том, как наиболее эффективно говорить с вызывающими клиентами. Таким образом, одна служба WCF может эффективно поддерживать множество разных типов клиентов.

Пример WCF:

Рассмотрим пример:

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

Это то, как WCF обслуживает разные клиенты

Вывод:

i) Когда выбрать Web API:

Нельзя отрицать, что HTTP-сервисы на основе REST, подобные тем, которые созданы с использованием ASP.NET Web API, стали стандартом для создания веб-сервисов. Эти услуги предлагают простой и понятный подход для веб-разработчиков, создающих сервисы. Веб-разработчики понимают HTTP GET и POST и таким образом хорошо адаптируются к этим видам услуг. Поэтому, если вы пишете службы, строго ориентированные на HTTP , ASP.NET Web API является логичным выбором.

ii) Когда выбрать WCF:

Технология WCF полезна, когда вам необходимо поддерживать несколько конечных точек обслуживания на основе разных протоколов и форматов сообщений. Такие продукты, как Microsoft BizTalk, используют WCF для создания надежных сервисов, которые могут быть использованы через Интернет, а также с помощью различных конфигураций между машинами. Если вам нужно написать приложение, которое обменивается данными через TCP / IP при подключении к локальному сеть и работает через HTTP, если вне сети, WCF – ваш ответ .

Имейте в виду:

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

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

  • Почему разработчик должен использовать веб-службы вместо прямых подключений к db?
  • Адрес конечной точки изменения WCF во время выполнения
  • Пользовательский WCF DataContractSerializer
  • Как использовать пользовательскую сериализацию или десериализацию в WCF, чтобы принудительно создать новый экземпляр для каждого свойства datacontact?
  • Каков наилучший способ обхода проблемы WCF с использованием `` `WCF?
  • Как установить Json.Net в качестве сериализатора по умолчанию для службы WCF REST
  • jqGrid не заполняет данными
  • Получить все IP-адреса на машине
  • Как сериализовать словарь через WCF?
  • Права доступа WCF ServiceHost
  • Как настроить программные типы WCF?
  • Interesting Posts

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

    Как запустить пакетный скрипт без использования расширения * .bat

    Код VBA для скрытия или отображения строк на основе значения ячейки

    Struts2 Нет действия, отображаемого для пространства имен и имени действия , связанного с контуром контекста

    Можно ли использовать MySql User Defined Variable в .NET MySqlCommand?

    Получение атрибута с использованием XPath

    Как использовать Spring Security без сеансов?

    Как отсортировать NSMutableArray с помощью sortedArrayUsingDescriptors?

    Почему компилятору C / C ++ нужно знать размер массива во время компиляции?

    Ошибка Symlink при установке MySQL через Homebrew

    Использование float дает «вызов перегруженной функции неоднозначный» ошибка

    Получать случайные элементы из массива в swift

    C # производитель / потребитель

    Транспонирование динамических столбцов в строки

    NSArray от NSCharacterSet

    Давайте будем гением компьютера.