Почему я отвечаю:
Я потратил огромное количество времени, чтобы понять разницу между этими двумя технологиями. Я изложу здесь все те моменты, которые, как мне кажется, «если бы у меня были эти моменты в то время, когда я размышлял в поисках этого ответа, я решил бы очень рано в выборе необходимой технологии».
Источник информации:
Microsoft® Visual Studio® 2015 выпущена
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Почему ASP.NET Web API и WCF:
Прежде чем сравнивать технологии ASP.NET Web API и WCF, важно понять, что на самом деле существуют два стиля / стандарта для создания веб-служб: REST (передача состояния представления) и SOAP / WSDL. SOAP / WSDL был оригинальным стандартом, на котором были построены веб-сервисы. Однако его было сложно использовать, и у него были громоздкие форматы сообщений (например, XML), которые снижали производительность. REST-сервисы быстро стали альтернативой. Их легче писать, потому что они используют базовые конструкции HTTP (GET, POST, PUT, DELETE) и обычно используют меньшие форматы сообщений (например, JSON). В результате, основанные на REST HTTP-сервисы теперь стали стандартом для написания сервисов, предназначенных исключительно для Интернета.
Давайте определим назначение ASP.NET Web API
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.
Вывод:
я) Когда выбрать веб-API:
Нельзя отрицать, что основанные на REST HTTP-сервисы, подобные тем, которые созданы с использованием 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.