微软官方链接:https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-and-aspnet-web-api?
基本名词解释
SOAP: “Simple Object Access Protocol”的缩写, 即简单对象访问协议。SOAP是使用WCF和XML格式的主要基础。Web Service构建用于提供有关服务数据信息的WSDL(Web Services Description Language)文件。WSDL文件用于客户端理解服务中可用的方法,描述了服务的元数据。
REST:“Representational State Transfer”的缩写,即表述性状态传递,是一种架构设计模式,也可说是一种风格,这个风格的基本原则包括客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。
RESTFUL:REST 指的是一组架构约束条件和原则,而满足这些约束条件和原则的应用程序或设计就是 RESTful。RESTFUL特点包括:每一个URI代表1种资源;客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;通过操作资源的表现形式来操作资源;资源的表现形式是XML或者HTML;客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
关于WCF
WCF(Windows Communication Foundation),用于创建分布式和可互操作的应用程序。 WCF是用于开发面向服务的应用程序的有效平台。它使开发人员可以创建安全,可靠且引人注目的开发解决方案,这些解决方案可以跨平台集成,并且可以与现有系统进行互操作。
关于Web API
ASP.NET Web API是一个框架,刻意在浏览器和移动设备构建HTTP服务。 它是在ASP .NET Framework上开发RESTful应用程序的理想平台。
ASP.NET Web API是用于构建基于HTTP的服务的可扩展框架,可以在不同平台(例如Web,Windows,移动设备等)上的不同应用程序中访问这些服务。
WCF的优点
- 支持多种协议,例如HTTP,TCP,命名管道。
- 较高的安全性和可靠性
- 可以将请求-答复,单向和双工消息交换模式与WCF一起使用。
Web API的优点
- 支持基于HTTP的动词(GET,PUT,POST和DELETE),因此支持基于约定的CRUD操作。
- 很方便定义和使用。
- 可向各种设备展示数据和服务。
- Web API是开源的,是在.NET平台上创建RESTful服务的理想选择。
- 可以进行Web服务的可伸缩,分离的开发,其他开发人员可以共享并使用它来访问Web服务。
WCF的特点
- 高度可配置的传输
- 序列化很方便
- 与IIS集成良好
- 易于自我托管
- 非常多的元数据
- 复杂模型
- 复杂的数据合同
Web API的特点
- 与HTTP紧密耦合
- 易于测试
- 提供内容协商支持
- 允许开放式格式
- 不依赖平台
WCF与Web API的对比
参数 | WCF | Web API |
---|---|---|
消息交换模式 | 支持请求-答复,单向和双工消息交换模式。 | HTTP是请求/响应,但可以通过SignalR和WebSockets集成支持其他模式。 |
获得方式 | .NET Framework附带。 | 随.NET Framework一起提供,但它是开源的,也可以作为独立下载带外提供。 |
支持MVC功能 | 不支持任何MVC功能。 | 支持MVC功能,例如路由,控制器,结果,过滤器,操作等。 |
编码支持 | 文本,MTOM和二进制 | XML,JSON等 |
传输协议 | HTTP,TCP,UDP和自定义传输 | HTTP |
使用模型 | 编码模型上的属性定义 | HTTP的动词映射到方法 |
配置 | 使用web.config和属性配置HttpConfiguration类,但不使用web.config服务。 | 可以使用web.config服务配置Web API。 |
RESTful服务 | 它提供对RESTFUL服务的支持,但有局限性。 | 构建RESTFUL服务的理想选择。 |
WCF与Web API的使用场景
场景 | WCF | Web API |
---|---|---|
需要支持诸如消息队列,端到端消息安全性,双工通信,分布式事务等方案。 | √ | × |
已经有可用的WCF服务并且想要额外添加HTTP支持时。 | √ | × |
同时支持SOAP和RESTful | √ | × |
想要通过HTTP创建面向资源的服务。 | × | √ |
项目是MVC应用程序,并且需要HTTP上的某些功能。 | × | √ |
只想构建一个HTTP / RESTful服务 | × | √ |
关键区别
- WCF提供请求-答复,单向或双工,而Web API默认仅是请求-答复。
- WCF用于开发基于SOAP的服务,而Web API用于基于SOAP和RESTful的服务。
- WCF不提供对MVC功能的任何支持,而Web API支持MVC功能。
- WCF支持HTTP,UDP和自定义传输协议,而Web API仅支持HTTP协议。
- WCF提供了文本,MTOM和二进制编码支持,而Web API支持UTF-8编码格式。
- WCF支持消息队列,消息安全性,双工通信,事务,而Web API不支持。
- WCF代表Windows Communication Foundation,而API代表应用程序接口。