关于自定义协议 ,大家来讨论一下,怎么做最合适
客户端和服务器端通过自己定义的应用层网络协议来互相通讯,目前来说有几种方式:
1.传输数据,以某种特定的间隔符号来区分数据,比如 商品编号|商品名称|商品价格|商品数量|
这样传输的好处是需要传输的数据比较小,速度快,
缺点是:如果以后协议需要修改,和以前客户端的兼容性会是个头痛的问题,调试的时候,也会比较头痛,如果数据多了,得一个一个的数,看问题出在那里
2.传输数据+数据描述信息 ,比如 以json方式,或者xml格式来传输数据,比如 商品编号=0211|商品名称=胡箩卜|......
优点:调试方便,语义明确,如果以后需要修改协议,和老的客户端兼容性比较好
缺点:传输的数据增多,每次传输,都要额外的传输一些重复的数据,相对的就会比较慢点
现在我有一个想法,不知道是否可行,说出来大家探讨一下
程序启动的时候,服务器端一次将数据的模板传输过来,
如果行情信息是模版A,(商品编号|商品数量|商品价格|)交易信息是模版B,出错信息是模版C,程序启动的时候,一次传输A B C,然后等到传输实际数据的时候,只传输模版名和实际的数据,比如(A,0211|20|23.34)
这样做的好处是
数据量基本没有增加,有了协议模版,当需要修改协议的时候,只要修改协议模版,客户端就能正确的读取数据了,兼容性没有问题
大家觉得这个想法是否可行?模版的解析有没有好的办法?