WCF and ASP.NET Web API - когда что использовать


 ASP.NET MVC >  Web API


WCF and ASP.NET Web API
 

WCF is Microsoft’s unified programming model for building service-oriented applications. It enables developers to build secure, reliable, transacted solutions that integrate across platforms and interoperate with existing investments. (ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework. This topic presents some guidance to help you decide which technology will best meet your needs.

Choosing which technology to use

The following table describes the major features of each technology.

WCF ASP.NET Web API

Enables building services that support multiple transport protocols (HTTP, TCP, UDP, and custom transports) and allows switching between them.

HTTP only. First-class programming model for HTTP. More suitable for access from various browsers, mobile devices etc enabling wide reach.

Enables building services that support multiple encodings (Text, MTOM, and Binary) of the same message type and allows switching between them.

Enables building Web APIs that support wide variety of media types including XML, JSON etc.

Supports building services with WS-* standards like Reliable Messaging, Transactions, Message Security.

Uses basic protocol and formats such as HTTP, WebSockets, SSL, JQuery, JSON, and XML. There is no support for higher level protocols such as Reliable Messaging or Transactions.

Supports Request-Reply, One Way, and Duplex message exchange patterns.

HTTP is request/response but additional patterns can be supported through SignalRand WebSockets integration.

WCF SOAP services can be described in WSDL allowing automated tools to generate client proxies even for services with complex schemas.

There is a variety of ways to describe a Web API ranging from auto-generated HTML help page describing snippets to structured metadata for OData integrated APIs.

Ships with the .NET framework.

Ships with .NET framework but is open-source and is also available out-of-band as independent download.

Use WCF to create reliable, secure web services that accessible over a variety of transports. Use ASP.NET Web API to create HTTP-based services that are accessible from a wide variety of clients. Use ASP.NET Web API if you are creating and designing new REST-style services. Although WCF provides some support for writing REST-style services, the support for REST in ASP.NET Web API is more complete and all future REST feature improvements will be made in ASP.NET Web API. If you have an existing WCF service and you want to expose additional REST endpoints, use WCF and the WebHttpBinding.


13.04.2017 22:38   troika  

На сколько актуальна эта информация спустя 4 года? Можно ли сказать что Web API является более приоритетным направлением чем WCF? И стоит ли использовать Web API даже при реализации и клиента и сервиса на .Net, или в таком случае WCF все же будет предпочтительнее. Особенно интересует этот вопрос применительно к программам, активно работающих с базами данных при помощи EF6. Хотелось бы иметь возможность на клиенте писать linq-like запросы к базе через сервис. WCF (не считая тупикового и неперспективного WCF DataService) может каким-либо образом предложить возможность такого рода?

14.04.2017 11:25   admin  

Для HTTP да, Web API является более приоритетным. По остальным привязкам (netTcpBinding, netNamedPipeBinding, netMsmqBinding, netPeerTcpBinding, msmqIntegration) у WCF нет альтернативы.

14.04.2017 11:29   admin  

Мощные URL Conventions есть в OData v4, с помощью которых можно строить различные запросы к данным. Тут нужно определиться, Web API или OData.

14.04.2017 13:02   troika  

А если в этом контексте вспомнить по EntityFrameworkDataService, то что послужило причиной того, что он стал тупиковой веткой и был заброшен? На мой взгляд очень интересно и удобно получилось: не нужно создавать никаких отдельных классов, весь dbContext EF проксирован на клиента, хотя прямого доступа к базе у него нет. Есть ли у этого подхода какие-то подводные камни? Ну кроме безопасности что через конекст может передаться некая специфическая информация о самой базе данных. В случае настольных приложений внутри сети предприятия это не столь актуальная проблема.

14.04.2017 13:36   admin  

http://codearticles.ru/forums/3/11

Оставлять комментарии могут только зарегистрированные пользователи
Дата создания: 31.05.2013 12:50
Дата изменения: 31.05.2013 12:50
Автор: admin