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?

Stack Overflow Questions ASP.net web API vs. WCF
Stack Overflow 问题 ASP.net web API 与 WCF

以下是使用 WCF 的优点/好处

  • 如果您计划使用.NET Framework 3.5,WCF 是一个理想的选择。
  • WCF 支持多种协议,如 HTTP、TCP、命名管道。
  • 如果您想使用事务消息安全和可靠消息安全等标准构建服务,WCF 服务很有用。
  • 您可以使用 WCF 的请求-响应、单向和双工消息交换模式。

为什么使用 Web API?

Google Trends WCF vs. ASP.Net web API

Google Trends WCF 与 ASP.Net 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 Vs Web Service

参数 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