### 13.1.7 REST VS WebService WebService是曾经流行的一种基于HTTP的的接口方式,它的初衷现在看起来仍然是那么美好。比如 * 建立在SOAP协议上,SOAP是一种功能完备的消息交换协议。 * WSDL,WebService描述语言,能描述WebService提供的服务名称,参数,调用协议等。还通过WSDL能代码生成客户端调用代码 * WS-* 一系列跟WebService相关的辅助规范 * 异构系统之间一种互相调用方式。这在早期异构系统之间是一种优势,然而现在基于Web应用的平台,REST也具备这个有点 然而,美好的事情也并不全是看上去的那个样子,Rest和WebService 主要得差别就是前者是一种轻量级的架构,而后者是一种重量级架构。前者即适合终端到服务的调用,系统内部子系统的互相调用,也适合不同公司之间系统互相调用,而WebService只能适合不同公司之间系统的,这是因为 * SOAP协议过于复杂,是个重量级协议,SOAP协议基于XML,本来是要代替更早的XML-RPC协议,但自身却越来越复杂,开发一个WebService服务实现要比开发REST慢很多。 * WS-* 协议的复杂性,只有一些商业机构实现了WS-*的规范 * 在传输数据上,JSON比XML更为流行,XML数据封装,虽然数据表象能力强,但影响系统性能,比如XML解析曾经出现了一代比一代更好的方式,如DOM,SAX,XML Sta,也验证XML 在性能方面确实不理想 * XML网络之间传输的数据量也会大些。不如JSON简单 尽管WebService有诸如上诉缺点,但WebService仍然是一种流行的大型系统之间的交互方式,WebService具备的一些功能,比如WSDL,REST并没有做出规定,本章最后会介绍Swager,一种REST辅助工具,来用来增强REST应用 > WS-* 是指一些列跟WS相关的规范,比如 > > * [WS-Security](https://en.wikipedia.org/wiki/WS-Security) 安全相关,还有[WS-Trust](https://en.wikipedia.org/wiki/WS-Trust) > * [WS-Addressing](https://en.wikipedia.org/wiki/WS-Addressing) 访问调用相关 > * [WS-BPEL](https://en.wikipedia.org/wiki/WS-BPEL) 业务处理规范 > * [WS-AtomicTransaction](https://en.wikipedia.org/wiki/WS-AtomicTransaction) 事务相关,还有[WS-Transaction](https://en.wikipedia.org/wiki/WS-Transaction) > * [WS-Management](https://en.wikipedia.org/wiki/WS-Management) 管理相关规范 >