{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

摘抄文档

原文地址:https://www.cnblogs.com/love-zf/p/12800700.html