EasyProtocol是一种序列化工具,目前提供了java,c#的支持,由于它是一种二进制的格式,比使用json,xml 进行数据交换快许多。当然比起protocolbuffer这种专业的序列化工具,可能在性能,大小上差一点,但是很轻巧,简单,适合互相学习,比较适合一些小型项目。
包结构:
根目录下2个文件夹: language和 tools
1.language:分别对java和c#语言提供支持,提供了依赖的jar包和dll文件
2.tools:协议生成工具
progen.bat --执行生成类文件的批处理
easyProtocol-tools.jar --生成类文件需要的jar包,也是唯一的jar包
config.xml --生成类文件的相关配置 。具体配置项可以参考文件的注释
progen.xml --协议文档汇总文件
protocols --存放我们手动编写的协议
协议格式说明:
由一个xml文件来定义protocol和bean,这个协议文档的格式:
<protocols>
<Import file=""/>
<Namespace name="">
<Bean name="">
<variable name="" type=""/>
...
</Bean>
...
</Namespace>
<Namespace name="">
<Protocol name="" type="" maxsize="">
<variable name="" type=""/>
...
</Protocol>
...
</Namespace>
</protocols>
整个协议文档由Import和2个Namespace元素组成:
元素 | 说明 | 属性介绍 |
Import |
用来导入其他的协议文档,经常是一些公共使用的协议文档 |
file:导入文件的路径 |
Namespace |
命名空间,包含bean元素和Protocol元素 |
name:bean和Protocol的命名空间 |
Bean |
定义一个实体bean,方便在Protocol中调用, |
name:名称 |
Protocol |
定义一条协议,可以包含多个variable子元素 |
name:协议名称 type:协议号 maxsize:协议大小 |
variable |
定义一个变量 |
name:变量名称 type:变量类型 |
备注: 具体可以参考自带的实例protocols文件夹下,分别是一个common.xml公共模块协议文档和module_11_player.xml玩家模块协议文档
github链接:https://github.com/ksfzhaohui/easyProtocol
下载地址:http://www.oschina.net/code/snippet_159239_47065