{Web API}Vs{WebService}Vs{WCF}
前言
从相同点中比较不同点
都是分[服务端,客户端],都是客户端去调用服务端.
不分场景的讨论优劣之分就是耍流氓.
WebService
关键字
[
XML,
SOAP,
WSDL,
]
特点
协议:HTTP/SOAP
数据格式:XML
适合用Web Service的情况
[
跨越防火墙,
应用程序集成,
B2B集成,
软件重用,
]
构成WebService平台的三大技术:[XML,SOAP,WSDL]
WebService采用Http协议来在客户端和服务端之间传输数据。
WebService使用XML来封装数据,XML主要的优点在于它是跨平台的。
WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式.
这些特定的HTTP消息头和XML内容格式就是SOAP协议规定的。
WebService服务器端首先要通过一个WSDL文件来说明自己有什么服务可以对外调用。
简单的说,WSDL就像是一个说明书,用于描述WebService及其方法、参数和返回值。
WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。
客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。
WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:
1.注册到UDDI服务器,以便被人查找;
2.直接告诉给客户端调用者。
WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,
然后由Http协议来传输数据。
WCF
关键字
契约先行
分布式通信框架
配置繁琐,学习成本高
协议:TCP、HTTP、MSMQ等
数据格式:xml,json,atom等
wcf被优先考虑的场景
单向消息,双工通信,消息队列
协议只允许TCP,UDP
WCF个人秀
WCF可以不依赖于IIS。
WCF可以配置成BasicHttpBinding来兼容(或者说变身成)WS。
WCF可以基于TCP或者MessegeQueue来传输数据。
WCF的可配置性比WS强,比如安全性。
WCF可以是有状态的,并支持事务。
WCF 支持多种通信协议 Http/Https 、TCP/UDP、MSMQ、命名管道、对等网、消息可达性、事务流等。
WCF 可以与ASP.NET 集成、共享一个上下文(HttpContext)。
WCF 支持多种消息传输格式 :text,binary,mtom,Json 等。
WCF 安全性要强:支持对称安全、非对称安全、消息安全、传输安全、SSL 流安全、Windows 流安全等。
WCF 支持多种会话模式:单向、双向、请求/响应。
WCF 支持REST 。
WCF 支持多种格式化方式。DataContractSerializer、XmlSerializer、 DataContractJsonSerializer 等。
WCF 支持 WAS hosting、Windows 服务 hosting、Self-Hosting、IIS hosting 等。WCF 支持多种并发模式:单例、单调、会话
Web API
关键字
wcf被优先考虑的场景
支持多种客户端
创建面向资源的服务或者希望支持HTTP的全部特性(构建RESTful架构)
综合比较一下
WCF与Web服务是什么关系
WCF 能够创建兼容 Web 服务的服务,也就是说可以创建能够与Web 服务互联互通的服务,
他们两个并不能用简单包含或者等同关系来表述。
WCF 是一套框架,用来创建各种服务。
其中包括创建 Web服务(采用 basicHttpBinding绑定的服务就是一个Web 服务)。
速度
由于RESTful服务使用HTTP协议和HTTP的请求/响应较SOAP轻巧,
因此如果你打算为低流量设备或手机端构建服务,
Web API会是最佳之选。
相较于SOAP,HTTP的请求/响应可读性更高,因为SOAP包含了header、body等更为复杂的元素。
综上所述,我们似乎难以决定哪个更好。
但是,我们能得出两点结论。
一,如果你需要构建一个用于不同平台的服务,那么请使用WCF;
二,如果你需要构建基于因特网的服务,那么请使用Web API。
技术未来
微软技术未来趋势看.NET Core,
微软一直没有将WCF移植到.NET Core,没准Silverlight之今日,就是WCF的明日?
反观Web API,微软2014年推出开源.NET Core中就有ASP.NET Core Web API...
工作用到的WCF,WebService,WebAPI
当初为什么用了WCF/Web API/WebService,基于什么考虑?
扩展知识
- SOAP和HTTP的区别
版权声明
版权声明:本文为CSDN博主「春水上行」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/c99463904/article/details/76018436