In the scenarios listed below you should go for WCF:
- If you need to send data on protocols like TCP, MSMQ or MIME
- If the consuming client just knows how to consume SOAP messages WEB API is a framework for developing RESTful/HTTP services.
Consider:
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, 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 SignalR and 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. |