协议约定问题

和 SOAP 不一样,REST 不是一种严格规定的标准,它其实是一种设计风格。如果按这种风格进行设计,RESTful 接口和 SOAP 接口都能做到,只不过后面的架构是 REST 倡导的,而 SOAP 相对比较关注前面的接口。而且由于能够通过 WSDL 生成客户端的 Stub,因而 SOAP 常常被用于类似传统的 RPC 方式,也即调用远端和调用本地是一样的。然而本地调用和远程跨网络调用毕竟不一样,这里的不一样还不仅仅是因为有网络而导致的客户端和服务端的分离,从而带来的网络性能问题。更重要的问题是,客户端和服务端谁来维护状态。所谓的状态就是对某个数据当前处理到什么程度了。这里举几个例子,例如,我浏览到哪个目录了,我看到第几页了,我要买个东西,需要扣减一下库存,这些都是状态。本地调用其实没有人纠结这个问题,因为数据都在本地,谁处理都一样,而且一边处理了,另一边马上就能看到。当有了 RPC 之后,我们本来期望对上层透明,就像上一节说的"远在天边,尽在眼前"。于是使用 RPC 的时候,对于状态的问题也没有太多的考虑。就像 NFS 一样,客户端会告诉服务端,我要进入哪个目录,服务端必须要为某个客户端维护一个状态,就是当前这个客户端浏览到哪个目录了。例如,客户端输入 cd hello,服务端要在某个地方记住,上次浏览到 /root/liuchao 了,因而客户的这次输入,应该给它显示 /root/liuchao/hello 下面的文件列表。而如果有另一个客户端,同样输入 cd hello,服务端也在某个地方记住,上次浏览到 /var/lib,因而要给客户显示的是 /var/lib/hello。不光 NFS,如果浏览翻页,我们经常要实现函数 next(),在一个列表中取下一页,但是这就需要服务端记住,客户端 A 上次浏览到 20~30 页了,那它调用 next(),应该显示 30~40 页,而客户端 B 上次浏览到 100~110 页了,调用 next() 应该显示 110~120 页。

此文章为10月Day4学习笔记,内容来源于极客时间《趣谈网络协议》,推荐该课程。

相关推荐
想成为优秀工程师的爸爸3 小时前
第十九篇技术笔记:UDP——相思传得快,飞鸽传书在
笔记·网络协议·tcp/ip·udp·信息与通信
0xR3lativ1ty6 小时前
关闭公网IP的两种方式
网络协议·tcp/ip·php
2401_873479409 小时前
固件升级如何按地区分批推送?IP地址查询定位决定升级策略
网络协议·tcp/ip·php
net3m339 小时前
所有esp_websocket_client_send。。。的地方都加锁,就不容易websocket 断线重连
网络·websocket·网络协议
Jiangxl~9 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
你觉得脆皮鸡好吃吗9 小时前
HTTP (XSS前简单了解)
网络·网络协议·http·网络安全学习
摸鱼仙人~12 小时前
HTTP 状态码系统拆解
网络·网络协议·http
白晨并不是很能熬夜13 小时前
【RPC】第 1 篇:全景篇 — 一次 RPC 调用的完整旅程
java·网络·后端·网络协议·面试·rpc·java-zookeeper
学编程就要猛13 小时前
JavaEE初阶:网络原理-HTTP(上)
网络·网络协议·http
S1998_1997111609•X14 小时前
滄集/㞯鎩.赫量被恶意篡改?|\^*仺\~:sall,sql=㶏齾bci.ji.app_sql=-heart{TCP.box}‘雧……㞋
网络·数据库·网络协议·百度·微信