知行札记
专题程序与软件系统通信、接口与协议

通信、接口与协议

建立参与者、消息、寻址、编码与协议状态,解释请求、流、事件、失败和接口演进。

两个参与者怎样取得同一个含义

通信把一个参与者持有的信息交给另一个参与者。发送方选择目标、编码消息并发送;接收方辨认来源和消息含义,再产生结果。双方需要约定怎样找到彼此、哪些消息合法、字段怎样解释,以及交换到哪一步算完成。这些约定形成协议。

假设客户端提交订单。请求含商品、数量和请求标识;服务端解析并检查,产生订单编号;客户端收到响应后更新界面。消息发送成功、接收成功、业务成功和结果已持久化,是不同的事件。协议必须提供足够信息区分它们。

接口和消息的边界

接口规定对外可用操作和条件,协议规定通信的编码与交换规则。函数调用可以使用进程内接口;跨进程需要传输形式。一个领域对象进入消息时,经常转换成只含允许字段的传输对象,以控制格式、公开范围和演进。

序列化将结构转成可传递形式,反序列化从形式恢复数据。消息携带的是表示;对象引用、原型、文件句柄或数据库事务不能自然越过边界。发送与接收需要对大小、类型、精度、编码、可选字段和版本达成一致。

类型描述帮助开发者使用接口,运行校验检查真实消息,授权检查发送主体是否能产生该效果。生成客户端也只落实描述中已声明的部分。服务端返回与描述不符时,静态客户端仍可能得到非法数据。

请求响应、流和事件

请求响应把一次发起和一次结果对应,适合调用方需要明确回答的操作。相关标识帮助区分并发请求。流把多个片段持续传递,双方还要约定起始、片段含义、结束和中断。事件表达某件事情发生,消费者可以在不同时间处理。

图展示消息方向和正常对应。接收方内部步骤是教学简化,持久化或异步交付仍需单独说明。一条连接可以承载多次交换,一个逻辑请求也可能经历多条连接和重试。

流的消费者处理较慢时,需要控制生产速度或缓冲;缓冲无限增加会消耗资源,丢弃则改变消息保证。背压表示消费能力反馈到生产方的控制关系,具体协议可能提供窗口、暂停、队列上限或主动拒绝。

失败留下什么未知

发送前失败可以确认目标尚未收到这次尝试。发送后等待超时,可能是消息没到、处理失败、处理成功但响应丢失,或仍在处理。调用方看到的错误不能自动定位远端效果。

重试会重新发送。查询通常容易重复执行;创建订单、扣款和发送邮件需要处理重复效果。逻辑操作标识和接收方去重记录可以帮助判定同一意图;保留期、同标识不同参数、结果恢复和记录的原子提交都属于契约条件。完整任务效果在任务专题建立,通信页在这里保留重试所需背景。

重试还可能放大故障。多个层次各自重试,尝试数会乘积增加;退避、期限、最大次数和并发上限需有协调。调用方放弃等待,并未证明外部工作停止。

信任、缓存和互操作

连接加密保护传输过程中的相应性质;应用仍需判断消息主体、对象权限和内容。浏览器的同源、CORS 和凭证规则是具体宿主条件,不能推广成所有网络参与者的通用认证方式。

缓存复用先前结果,需说明缓存键、允许复用者、有效期和验证方式。协议可表达复用条件,应用对象变化后仍需要失效策略。HTTP 缓存、TLS、WebSocket 和 SSE 的完整消息规则由协议实践维护;本页使用这些名称说明它们在一般模型中的位置。

互操作要求双方使用相同的公开契约。共享源码类型、发布 OpenAPI 工件和运行时模式校验各自承担不同环节。跨语言消费者需要明确的数据表示;私有构建时推导机制则需要共同工具链或宿主。新增可选字段常有兼容空间,删除字段、改变含义或必填性通常需要迁移。

判断接口是否闭合

一份可用契约应说明操作、输入、返回、错误、权限、资源限制、重试与版本条件。检查要沿发送者、编码、通道、接收者和结果消费走通。库存在只证明有能力入口,实际配置和调用决定该路径是否启用。

本页综合 HTTP 归档与 TS 契约、请求执行、实时和服务间通信材料,建立平台无关模型。所有图和过程均为教学示意;没有据此声称特定网络、服务或运行观察通过。

最后更新于

本页目录