第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
刘超
该思维导图由 AI 生成,仅供参考
上一节我们讲了 RPC 的经典模型和设计要点,并用最早期的 ONC RPC 为例子,详述了具体的实现。
ONC RPC 存在哪些问题?
ONC RPC 将客户端要发送的参数,以及服务端要发送的回复,都压缩为一个二进制串,这样固然能够解决双方的协议约定问题,但是存在一定的不方便。
首先,需要双方的压缩格式完全一致,一点都不能差。一旦有少许的差错,多一位,少一位或者错一位,都可能造成无法解压缩。当然,我们可以用传输层的可靠性以及加入校验值等方式,来减少传输过程中的差错。
其次,协议修改不灵活。如果不是传输过程中造成的差错,而是客户端因为业务逻辑的改变,添加或者删除了字段,或者服务端添加或者删除了字段,而双方没有及时通知,或者线上系统没有及时升级,就会造成解压缩不成功。
因而,当业务发生改变,需要多传输一些参数或者少传输一些参数的时候,都需要及时通知对方,并且根据约定好的协议文件重新生成双方的 Stub 程序。自然,这样灵活性比较差。
如果仅仅是沟通的问题也还好解决,其实更难弄的还有版本的问题。比如在服务端提供一个服务,参数的格式是版本一的,已经有 50 个客户端在线上调用了。现在有一个客户端有个需求,要加一个字段,怎么办呢?这可是一个大工程,所有的客户端都要适配这个,需要重新写程序,加上这个字段,但是传输值是 0,不需要这个字段的客户端很“冤”,本来没我啥事儿,为啥让我也忙活?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
基于XML的SOAP协议是一种用于远程过程调用(RPC)的通信协议,通过使用XML编写简单的请求和回复消息,并利用HTTP协议进行传输。相比于传统的RPC框架,SOAP协议解决了传输协议、协议约定和服务发现等问题。文章首先介绍了传统RPC框架的问题,包括双方压缩格式完全一致、协议修改不灵活、版本问题以及面向函数的设计等。随后,文章详细介绍了XML和SOAP协议的优势,以及如何将XML用于RPC中。通过SOAP协议,请求和回复被放在一个信封里面,使用HTTP协议进行传输,解决了传输协议的问题。同时,文章还介绍了Web服务描述语言(WSDL)用于描述服务、服务发现问题以及UDDI注册中心的作用。总的来说,SOAP协议基于XML的特点使得远程过程调用更加灵活、面向对象,并且解决了传统RPC框架存在的问题,适用于需要提供给陌生人使用的服务。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》,新⼈⾸单¥68
《趣谈网络协议》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(21)
- 最新
- 精选
- 叹息无门感觉这篇写的不是很严谨: 1,首先SOAP并非只能通过HTTP进行传输,关于SOAP binding应该提一下? 2,SOAP 的HTTP Binding 支持比较完整的Web Method,http GET/POST都是可以支持的,并且对应不同的模式。大多数情况下只使用POST是具体实现的问题。
作者回复: 是的,这里说的是通常的使用情况
2018-08-0136 - 燃webservice soap的初始目标:服务自描述,其实就是没有达成,UDDI早已默默死掉
作者回复: 是的,但是作为rpc历史上不能不说的一个环节,也要讲一下
2018-08-1610 - 雪山飞猪这套教程真的是比以前看过的好多书都要生动形象,高手出马,化繁为简,非常感谢老师的倾情分享
作者回复: 谢谢
2019-05-175 - Jerry Chan但是这个二进制格式,怎么转换为xml这种格式呢?过程是怎么解析的呢?主要是这块不清楚,作者能解惑下不?
作者回复: 不会有二进制转换成为xml,是由对象转换成为xml
2018-08-18 - 凡凡1.虽然http协议有post,get,head,put,delete等多种方法,但是平常来说post,get基本足够用。所以soap只支持post方法的差别应该在缺少get方法,get方法可以浏览器直接跳转,post必须借助表单或者ajax等提交。也就限制了soap请求只能在页面内获取或者提交数据。 另外,soap协议规范上是支持get的,但是由于一般xml比较复杂,不适合放在get请求的查询参数里,所以soap协议的服务多采用post请求方法。 2.应该要讲restful协议了,一种使用json格式交互数据的,基于http协议的,轻量级网络数据交互规范。2018-08-0117
- mgxian1.没有充分利用http协议原有的体系 比如get表示获取资源 post表示创建资源 delete表示删除资源 patch表示更新资源 2.restful协议2018-08-01310
- blackpiglet1. POST 请求构造比较麻烦,需要专门的工具,所以调用和调试更费事。 2. 更简单的应该就是RESTful 了吧,SOAP 感觉不太好用,复杂度比较高,用起来没有http顺手。2018-08-013
- vloz面向函数和面向对象在信息交互上的特征是什么?为什么讲onc合适面向函数?2018-08-013
- 悟空聊架构题目1: HTTP请求里面有很多种提交方式,文中只是提到了可以用post,其实还是可以用其他方式的,比如get。 题目2: restful,用json格式的数据发送请求和返回数据。2018-08-062
- spdiasoap的方言问题过于严重。其实简单场景可以用http rest或者json+http post,或者用比较新的graphql2018-08-012
收起评论