WCF VS Web API

本文探讨了WCF(Windows Communication Foundation)和Web API之间的差异。WCF支持多种协议,高安全性和可靠性,但较为复杂,适合SOAP服务。Web API则侧重RESTful服务,易于使用和测试,支持HTTP动词,适用于跨平台和设备的HTTP服务。两者在协议支持、安全特性和使用场景上存在显著区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微软官方链接: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的对比

参数WCFWeb 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的使用场景

场景WCFWeb 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代表应用程序接口。

 

估计大家经常会碰到诸如:http://www.deepleo.com/12这样的链接,没有.php,.aspx,.jsp这样的后缀,这个是大势所趋。 其实这就是REST。REST翻译成中文就是:“表述性状态转移”:Representational State Transfer,是网络服务接口的一种风格,并不是一个标准。 REST常用的四种HTTP命令,GET、DELETE、PUTPOST。 GET:是获取资源,DELETE: 是删除资源,PUT:修改资源,POST:不用说就是添加资源。 就web service而言,REST要比SOAP(SOAP是标准,不是风格)轻量得多,容易得多。最初开始接触web service的时候,所有的材料上来就是一大堆的名词,SOAP, WSDL,看得头都要大了,后来提出来的REST就容易理解得多,虽然目前SOAP在企业级的web service中还有一席之地,但是在公共的Internet上,不是REST的服务实在不好意思人打招呼,我们经常可以看到评价某某服务是RESTful的,但是从来没有听说某某服务是SOAPful的。 REST提出了一些设计概念准则: 1.网络上的所有事物都被抽象为资源(resource); 2.每个资源对应一个唯一的资源标识(resource identifier); 3.通过通用的连接器接口(generic connector interface)对资源进行操作; 4.对资源的各种操作不会改变资源标识; 5.所有的操作都是无状态的(stateless)。 微软对REST的支持有点晚,自.NET3.5开始,WCF也可以提供RESTful接口。当然,REST不光限于web service,网页服务也可以RESTful,微软的ASP.NET MVC框架提供了直接的REST支持。 有关.net,MVC实现REST风格的方法请参见张善友老师的博客:http://www.cnblogs.com/shanyou/category/307401.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值