目前我所接触到的协议格式基本结构都很固定,

一部分是协议框架,规定协议的头和尾,校验算法,以及其它一些通讯相关的基本参数

第二部分是协议数据

实现这种协议解析的方式一般是先根据框架确定该协议有效,然后解析出数据,由协议数据解析部分处理。

目前这种结构的数据解析部分一般是继承于基本框架,通过统一的接口解析,组织数据。这种方式可行性没有问题. 实际应用中,因为协议框架部分与数据解析部分通过继承耦合在了一起,不利于单独的功能管理。就理解而言,框架本身是为了识别数据构建的一个通讯框架结构,跟数据本身没有必然的联系(良好设计的框架),框架只与通讯部分相互联系即可,而数据分析并不必然需要跟框架耦合在一起。

基于这种思路,我提出第二种可行的协议解析方案,协议解析分为:框架部分和数据部分,这两部分本身是独立的,只通过相关接口交互,没有其它耦合交互。这样数据解析部分就可以作为一个独立的功能单元使用,即使程序的其它部分也使用这种数据组织方式,直接调用解析即可,而不用担心跟框架和通讯耦合,可能造成不良影响。这种思路,还简化了协议设计的实现难度,框架解析和数据解析完全分开,完全可以独立设计,便于合作,实现快速开发。对于协议兼容,也只需要考虑数据解析部分,而不必考虑框架结构部分,这种思路,我认为是更可行的一种方案。