WCF、Web API、WCF REST 和 Web 服务之间的区别?

Difference between WCF, Web API, WCF REST and Web Service?

WCF 和 Web API 与 WCF REST 和 Web 服务有什么区别? WCF真的那么复杂,应该使用webapi吗? 是否WebApi能包办一切不占人便宜?

.Net 框架有许多技术允许您创建 HTTP 服务,例如 Web 服务、WCF 和现在的 Web API。互联网上有很多文章可以描述您应该使用谁。如今,您有很多选择可以在 .NET 框架上构建 HTTP 服务。 在这里你可以阅读更多:

WCF vs ASP.NET Web API

WCF Service vs ASP.NET Web Api

.Net 框架有许多技术允许您创建 HTTP 服务,例如 Web 服务、WCF 和现在的 Web API。互联网上有很多文章可以描述您应该使用谁。

网络服务

  • 它基于 SOAP 和 return 形式的 XML 数据。
  • 仅支持HTTP协议。
  • 它不是开源的,但任何理解 xml 的客户都可以使用。
  • 它只能在 IIS 上托管。

WCF

  • 它也是基于 SOAP 和 return 形式的 XML 数据。
  • 它是网络服务(ASMX)的演变,支持各种协议,如TCP、HTTP、HTTPS、命名管道、MSMQ。
  • WCF 的主要问题是其冗长乏味的配置。
  • 它不是开源的,但任何理解 xml 的客户都可以使用。
  • 它可以在应用程序或 IIS 上或使用 window 服务托管。

WCF 休息

  • 要将 WCF 用作 WCF Rest 服务,您必须启用 webHttpBindings。
  • 它分别通过 [WebGet] 和 [WebInvoke] 属性支持 HTTP GET 和 POST 动词。
  • 要启用其他 HTTP 动词,您必须在 IIS 中进行一些配置以接受对 .svc 文件的特定动词请求
  • 使用 WebGet 通过参数传递数据需要配置。必须指定 UriTemplate。
  • 支持XML、JSON和ATOM数据格式。

网络API

  • 这是一个以简单易行的方式构建 HTTP 服务的新框架。
  • Web API 是开源的,是通过 .NET Framework 构建 REST-ful 服务的理想平台。
  • 与 WCF Rest 服务不同,它使用 HTTP 的全部功能(如 URI、request/response headers、缓存、版本控制、各种内容格式)
  • 它还支持 MVC 功能,例如路由、控制器、操作结果、过滤器、模型绑定器、IOC 容器或依赖项注入、单元测试,使其更加简单和健壮。
  • 它可以在应用程序或 IIS 上托管。
  • 它是轻量级架构,适用于带宽有限的设备,如智能手机。
  • 响应由 Web API 的 MediaTypeFormatter 格式化为 JSON、XML 或您想要添加为 MediaTypeFormatter 的任何格式。

To whom choose between WCF or WEB API

  • 如果要创建支持特殊场景(例如单向消息传递、消息 queues、双工通信等)的服务,请选择 WCF。
  • 当您想要创建可以使用可用的快速传输通道的服务时,请选择 WCF,例如 TCP、命名管道,甚至可能是 UDP(在 WCF 4.5 中),并且您还希望在所有其他情况下都支持 HTTP传输通道不可用。
  • 如果您想通过 HTTP 创建 resource-oriented 服务,可以使用 HTTP 的全部功能(如 URI、request/response headers、缓存、版本控制、各种内容格式)。
  • 如果您希望向包括浏览器、手机、iphone 和平板电脑在内的广泛客户端公开您的服务,请选择 Web API。

参考:http://www.dotnettricks.com
作者 : Shailendra Chauhan