Я потратил несколько месяцев, пытаясь понять концепции, лежащие в основе WCF, и недавно я разработал свое первое сервисное приложение WCF.
Я изо всех сил пытался понять все настройки в файле конфигурации.
Я не уверен в окружающей среде, но кажется, что с этим можно делать удивительные вещи.
На днях я узнал, что Microsoft выпустила новую вещь под названием ASP.NET Web API .
Из того, что я могу прочитать, это среда RESTful , очень простая в использовании и реализации.
Теперь я пытаюсь выяснить, в чем заключаются основные различия между двумя платформами, и стоит ли мне пытаться преобразовать мое старое приложение-службу WCF с новым API.
Может ли кто-нибудь помочь мне понять различия и использование каждого из них?
c#
wcf
asp.net-web-api
LeftyX
источник
источник
Ответы:
Новый ASP.NET Web API является продолжением предыдущего проекта WCF Web API (хотя некоторые концепции изменились ).
WCF изначально был создан для включения служб на основе SOAP. Для простых сервисов RESTful или RPCish (например, таких клиентов, как jQuery) ASP.NET Web API должен быть хорошим выбором.
источник
HttpClient
что-то удивительное, но оно не заботится о генерации сущностей и сериализации / десериализации.INotifyPropertyChanged
клиентские объекты? Как насчет проверки?Для нас WCF используется для SOAP, а веб-API для REST. Я хотел бы, чтобы веб-API поддерживал SOAP. Мы не используем расширенные функции WCF. Вот сравнение с MSDN :
источник
ASP.net Web API - это все о GET, POST, PUT, DELETE на основе HTTP и REST, с хорошо известным стилем программирования ASP.net MVC и возвращаемым JSON; Веб-API для всех легких процессов и компонентов на основе чистого HTTP. Для того, чтобы продолжить WCF даже для простого или самого простого единственного веб-сервиса, это принесет весь дополнительный багаж. Для облегченного простого обслуживания для ajax или динамических вызовов всегда WebApi просто решает проблему. Это аккуратно дополняет или помогает параллельно с ASP.net MVC.
Проверьте подкаст: Hanselminutes Podcast 264 - Это не WCF вашего отца - Все о WebAPI с Glenn Block от Скотта Хансельмана для получения дополнительной информации.
источник
В сценариях, перечисленных ниже, вы должны пойти на WCF:
WEB API - это фреймворк для разработки сервисов RESTful / HTTP.
Есть так много клиентов, которые не понимают SOAP, таких как браузеры, HTML5, в таких случаях веб-API - хороший выбор.
Заголовок сервисов HTTP определяет, как защищать сервис, как кэшировать информацию, тип тела сообщения и тело HTTP могут указывать любой тип контента, например HTML, а не только XML как сервисы SOAP.
источник
Со времени использования обоих до сих пор я обнаружил много различий между WCF и Web API. Оба технологических стека хорошо подходят для разных сценариев, поэтому невозможно сказать, что лучше, это зависит от конфигурации и сценария.
Примечание: данные не только на мой взгляд, но и собраны с других официальных сайтов.
источник
WCF даст вам так много из коробки, это даже не сравнимо ни с чем. Если вы не хотите самостоятельно выполнять (если назвать несколько) аутентификацию, авторизацию, шифрование, организацию очередей, регулирование, надежный обмен сообщениями, ведение журнала, сеансы и так далее. WCF - это не только веб-сервисы; WCF - это платформа для разработки SOA.
источник
Почему я отвечаю:
Я потратил огромное количество времени, чтобы понять разницу между этими двумя технологиями. Я изложу здесь все те моменты, которые, как мне кажется, «если бы у меня были эти моменты в то время, когда я размышлял в поисках этого ответа, я решил бы очень рано в выборе необходимой технологии».
Источник информации:
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.
источник
Есть сравнение на MSDN по этому поводу
WCF и ASP.NET Web API
Для меня выбор был о том, кто такие клиенты и где они находятся?
В пределах сети компании и клиентов на основе .NET: используйте WCF с привязкой TCP (быстрая связь, чем HTTP)
Вне сети компании, и используйте различные технологии, такие как PHP, Python и т . Д. Используйте Web API с REST
источник
С точки зрения бизнеса, в WebApi отсутствует WSDL, поэтому разработчики должны документировать все вручную. И если, например, операция WebApi возвращает список объектов, тогда клиент должен создавать объекты вручную, т.е. WebAPI действительно подвержен ошибкам определений.
Профи Webapi является более легким, чем WCF.
источник
Относительно утверждения «WebApi не хватает WSDL» существует несколько способов генерации Rest client. Одним из популярных подходов является Swagger UI / (Swashbukkle Nuget). Это дает богатый интерфейс для понимания схемы ввода и вывода конечной точки REST и интерактивного инструмента для проверки конечных точек.
JSON LD (Json Linked Documents) - это еще один новый стандарт, который еще больше улучшит опыт разработчиков REST на основе JSON, предоставив схему JSON с лучшей семантикой.
источник
С помощью wcf мы можем настроить и предоставить одну и ту же службу поддержки для нескольких конечных точек, таких как tcp, http.if, если вы хотите, чтобы ваша служба работала только на основе http, тогда будет лучше использовать веб-API. Web API имеет гораздо меньше настроек по сравнению с wcf и немного быстрее, чем wcf. Wcf также поддерживает отдых. Если у вас есть ограничение .Net framework 3.5, тогда вы можете выбрать wcf.
источник