-
Notifications
You must be signed in to change notification settings - Fork 1
概念定义
为了帮助您快速掌握kyou的使用方式,首先您需要理解kyou定义的一些概念。
报文是两个系统之间交换的数据。
假设我们现在有两个系统,系统A在处理业务时需要系统B的协助。这时A应当向B发起一个请求,B在接到这个请求之后对其进行处理并生成处理结果,A在拿到这个结果之后才可以去执行下一阶段的业务逻辑。
所以,在这个过程中,A将一些数据传输给了B,B又把另一些数据传输给了A。A和B之间通常是通过网线相联,此时在网线上传输的便是1和0的序列。为了令A发出的这串1和0能够被B理解,A和B之间一定要约定好一套规则,用以描述如何将数据转化为1和0的序列,又如何从1和0的序列中解析出实际传输的数据。
这些1和0便是我们这里提到的报文,而这份约定通常被称为"报文规范"。通常来说,一份报文规范会分为_数据结构定义和格式定义_两个部分。
其中,数据结构定义部分会列出服务端所有可能接收的请求和返回的响应的详细列表,包括请求中有哪些字段,每个字段的名称、数据类型、是否可选、是否可重复,等等;格式定义部分则会详尽地定义报文格式的所有细节,包括对于各种数据类型的处理,如何表达某条数据的名称、值、类型,这条数据是否存在、是否重复等,并且整体上不应存在任何歧义。
kyou的存在意义就是帮您简化报文处理工作。
将需要传输的数据转成实际传输的报文的过程,我们称之为组包。
组包过程的输入是期望传输的数据,根据报文规范的要求,输出对应的报文。
kyou定义了一套文档对象模型,用于描述上面提到的_数据结构定义_。您需要把将要组包的数据用这套文档对象模型表示出来,这样kyou才能帮助您执行组包过程。
组包样式定义用于描述上面提到的_格式定义_。您需要按照报文规范的描述,按照kyou定义的语法编写一套组包样式定义,这样kyou将可以把文档对象模型和组包样式定义结合起来,生成您期望的最终的报文。
在kyou中,提到"报文字节流",如果在上下文中没有其它明确的含义的话,通常用于表示最终组好的报文或尚未最终组包完毕的报文中间状态(即组包组到一半的报文)。
之所谓有"字节流"这个说法,因为将字节输出到报文中是整个组包过程最底层的动作,在这一层次kyou不认识其它的数据形式,只认识字节。同时,组包过程是对报文中的每个节点进行的,处理完一个节点就将其对应的字节输出,完全对应一个输出流的行为。