怎样的协议设计,才能让开发变得轻松?
在封装好网络数据后,客户端和服务端可以基于网络层进行数据的传输,
开发人员可以不用去关心低层的网络协议,
我们主要对一些功能进行协议的设计,比如人员的增,删,改以及备份。
现在遇到了一些比较费时的问题,
在兼容老版本的协议下,新增功能无法在原有协议上进行修改,只能新增协议,
这样如果难得添加一次功能,那也就忍了,如果频繁的新增功能,
造成的结果是越来越多的协议,外加大批的时间浪费下去,
大家有啥经验不?
以前觉得一些协议的一些参数很鸡肋,现在觉得多预留一些参数确实是给后人留了不少的后路~
大家有时间的可以一起交流交流
[解决办法]
分层协议设计
也就是说每一层只关心这一层的协议,做剥离,然后交给下一层处理
[解决办法]
可以参考成熟的开源,把协议做全
[解决办法]
一个好的框架设计很重要
[解决办法]
推荐一下,欢迎讨论!
[解决办法]
加就加呗,既然是新增功能,肯定得加了
[解决办法]
好的东西都是反复修改的。。。
先尽量往好的方向弄,再达到一定的容忍度后,发现再这样发展下去,软件过于庞杂,于是就重写。。
然后,继续这样发展下去。。 最后就会成型一个比较成熟的软件。。。
<技术还不懂,纯理论。。 呵呵>
[解决办法]
协议的原型做成XML格式的,这样方便阅读,也方便升级。
真体使用协议时可按功能划分不同的命令代码,例如:
0x1000XXXX 用户管理
0x2000XXXX 权限管理
....
以此类推
个人理解
[解决办法]
路过路过路过,学习学习..................
[解决办法]
做个工具,让它自动生成协议文件和读协议文件;在一些书籍上看的,觉得不错;只用维护ENUM协议定义就可以了
[解决办法]
新增没关系吧 早期受各方面限制后期很有可能会有要增改的地方
主要是尽量每个功能模块独立 使用接口 这样方便增减
[解决办法]
如果是这样,你要抽象一个协议框架,还要有一个协议的管理器,可以供以后拓展协议,但是这个协议的抽象比较难写!
[解决办法]
>在兼容老版本的协议下,新增功能无法在原有协议上进行修改,只能新增协议,
我想你是说旧的软件和新的协议兼容的问题,也就是说你的系统里,新旧软件还要并存,旧软件无法解释新的协议。但我的理解,你们应是一个封闭的系统(因为协议都是你们自己定义的),完全可以全部升级软件,不会有兼容的问题。
>这样如果难得添加一次功能,那也就忍了,如果频繁的新增功能,
>造成的结果是越来越多的协议,外加大批的时间浪费下去,
>大家有啥经验不?
协议设计之初就要考虑到前后向兼容性问题。如果看过ITU的规范,很普遍的做法是ASN.1来表达数据(例如消息单元等),兼容性就变成定义如何处理不认识的消息单元,例如丢弃等。
[解决办法]
从内向外,一层一层扩展...
[解决办法]
协议是该可扩展。
是否可以增加一个BYTE的协议版本号字段?这样扩展能力更强了。
{
BYTE btSYN;
WORD wdLen;
BYTE btVer; //版本号?
。。。
}
根据版本号来执行不同的解析,套用到不同的协议结构里去。
[解决办法]
协议不是有版本号吗?
你重新定义一个新的版本号,然后这个协议定义的更有扩展性,然后所有的新功能都用新协议不就好了