WCF 与 Web API 之间的区别
什么是 WCF?
WCF 是 Windows Communication Foundation 的缩写。它用于创建分布式和可互操作的应用程序。WCF 是开发面向服务应用程序的有效平台。它允许开发人员创建安全、可靠、高调的开发解决方案,这些解决方案可以跨平台集成并与现有投资互操作。
什么是 Web API?
ASP.NET Web API 是一个框架,可让您为浏览器和移动设备构建 HTTP 服务。它是开发 ASP .NET 框架上的RESTful 应用程序的理想平台。
ASP.NET Web API 是一个可扩展的框架,用于构建基于 HTTP 的服务,这些服务可以在不同平台(如 Web、Windows、移动设备等)的不同应用程序中访问。
主要区别
- WCF 提供请求-响应、单向或双工通信,而 Web API 默认仅支持请求-响应。
- WCF 用于开发基于 SOAP 的服务,而 Web API 用于基于 SOAP 和 RESTful 的服务。
- WCF 不支持任何 MVC 功能,而 Web API 支持 MVC 功能。
- WCF 支持 HTTP、UDP 和自定义传输协议,而 Web API 仅支持 HTTP 协议。
- WCF 提供 Text、MTOM 和 Binary 编码支持,而 Web API 支持 UTF-8 编码格式。
- WCF 支持消息队列、消息安全、双工通信、事务,而 Web API 不支持。
- WCF 是 Windows Communication Foundation 的缩写,而 API 是 Application Program Interface 的缩写。
为什么使用 WCF?
以下是使用 WCF 的优点/好处
- 如果您计划使用.NET Framework 3.5,WCF 是一个理想的选择。
- WCF 支持多种协议,如 HTTP、TCP、命名管道。
- 如果您想使用事务消息安全和可靠消息安全等标准构建服务,WCF 服务很有用。
- 您可以使用 WCF 的请求-响应、单向和双工消息交换模式。
为什么使用 Web API?
以下是使用 Web API 的优点/好处
- Web API 支持基于约定的 CRUD 操作,因为它与 HTTP 动词(GET、PUT、POST 和 DELETE)配合使用。
- 以 RESTful 的方式定义、公开和使用它很容易。
- ASP.Net Web API 允许您向各种设备展示数据和服务。
- Web API 是开源的,因此它是创建 .NET 平台上的 RESTful 服务的理想选择。
- 支持可伸缩、松耦合的 Web 服务开发,这些服务可以被其他开发人员共享和使用以访问 Web 服务。
- 它还有助于构建简单、非 SOAP 的 HTTP 服务。
WCF 的特点
- 高度可配置的传输
- 更好的序列化选项
- 与 IIS 良好集成
- 易于自托管
- 非常丰富的元数据
- 复杂的发布模型
- 丰富的数据契约
Web API 的特点
- 严格绑定到 HTTP
- 易于测试
- 提供内容协商支持
- 允许开放式格式化
- 不依赖于平台
- 强大的资源导向
- 二级经验,具有新兴的超媒体支持
WCF 与 Web 服务
参数 | WCF | Web API |
---|---|---|
消息交换模式 | 请求响应、单向或双工。 | 默认仅支持请求-响应。但是,可以通过 WebSockets 集成支持其他消息模式。 |
托管 | IIS 托管、自托管和工作流激活服务。 | 自托管和 IIS 托管。 |
开源 | 它不是开源软件。 | 它随 .Net 框架一起提供。它也可以作为独立下载提供。 |
支持 MVC 功能 | WCF 不提供任何对 MVC 功能的支持,例如控制器、路由、过滤器、操作结果等。 | ASP.NET Web API 支持 MVC 功能,如路由、控制器、结果、过滤器、操作等。 |
编码支持 | 文本、MTOM 和二进制。 | 默认支持 UTF-8 编码格式。 |
支持 | 支持 HTTP、UDP 和自定义传输协议。 | 仅支持 HTTP 协议 |
模型的使用 | 用户属性驱动的编程模型。 | 将 HTTP 动词映射到方法 |
配置 | 使用 web.config 和属性配置 HttpConfiguration 类,但不配置 web.config 服务。 | Web API 可以使用 web.config 服务进行配置。 |
RESTful 服务 | 它提供对 RESTFUL 服务的支持,但有局限性。 | 非常适合构建 RESTFUL 服务。 |
WCF 与 Web API 的决定性因素
以下是一个快速清单,可帮助确定是使用 WCF 还是 Web API
场景 | WCF 4.5 | ASP.NET Web API |
---|---|---|
需要支持消息队列、端到端消息安全、双工通信、分布式事务等场景。 | Select | 请勿选择 |
当您已有可用的 WCF 服务并希望另外添加 HTTP 支持时。 | Select | 请勿选择 |
一个代码库同时支持 SOAP 和 RESTful 端点。 | Select | 请勿选择 |
希望通过 HTTP 创建面向资源的服务的。 | 请勿选择 | Select |
您的项目是 MVC 应用程序,并且希望通过 HTTP 提供某些功能。 | 请勿选择 | Select |
您只想构建 HTTP / RESTful 服务 | 请勿选择 | Select |