精英盒子 -> 零毫秒 -> 客户端架构设计,初稿 [打印本页]

jybox 2011-10-28 00:03

客户端架构设计,初稿

估计今后的客户端可能都采用这样的设计
个人认为在易用性上比较完美

分为4个层次
1.全局常量定义以及一些内联函数外加宏
这部分就不解释了
2.客户端内核
它是一个类,这个内核只负责网络通讯,实现通讯协议,解析命令等等的。通过信号槽机制来调用相应的函数(内核只负责发出相应的信号)
这个部分仅依赖QtCore和QtNetwork,不依赖QtGUI
3.客户端内核扩展
这个部分开始就要依赖QtGUI了,它也是一个类,继承自客户端内核。在客户端内核的基础上增加对GUI的支持
它负责绑定对应的信号槽,启动和暂停内核,启动GUI等等
4.用户界面
就是界面嘛,这部分的代码将会非常少,所有功能性的代码都被写在了客户端内核和客户端内核扩展里面

为什么要这样的架构呢。这样的结构充分利用了QT信号槽的优势,把各个模块分开,便于多人协作
同时,第三方开发人员可以直接把内核拿出来,作为SDK来用(实现了Abreto构想的,使开发者不用接触到协议细节的SDK),
第三方开发人员通过继承出自己的客户端内核扩展类,和自己的GUI,就可以实现自己的客户端
协议相关的内容都是客户端内核来处理,第三方开发人员不必关心这些,通过继承该类,第三方开发人员也有很大的余地来发挥
同时,内核不依赖GUI,又给了开发人员很大的自由,毕竟QtGUI库有10MB大呢

同时,官方客户端本身,也是一个应用了SDK的绝佳的例子,供第三方开发人员参考


abreto 2011-10-28 23:39
总之我以为先写SDK,官方客户端是在官方SDK基础上开发的

jybox 2011-10-29 13:36
abreto:总之我以为先写SDK,官方客户端是在官方SDK基础上开发的 (2011-10-28 23:39) 

结果没什么区别

jybox 2011-10-29 21:39
刚刚已经把这样的设计实现了
可以去看r39+的源码
客户的核心类为ClientCore
继承出的扩展是
ClientCoreEx

顺便召唤whtsky

whtsky 2011-10-30 08:18
召唤我干神马

jybox 2011-10-30 17:05
whtsky:[表情] 召唤我干神马 (2011-10-30 08:18) 

大家一起围观,取长补短

abreto 2011-11-20 21:22
jybox:结果没什么区别 (2011-10-29 13:36) 

当然有区别,官方客户端应该将就SDK,而不是SDk将就官方客户端

jybox 2011-11-20 21:28
abreto:当然有区别,官方客户端应该将就SDK,而不是SDk将就官方客户端 (2011-11-20 21:22) 

在前期,基于SDK来开发客户端
SDK可能得不到全面的测试

abreto 2011-11-20 21:37
jybox:
在前期,基于SDK来开发客户端
SDK可能得不到全面的测试

难道你用实际开发来测试?测试!!顾名思义测试是在开发SDK的时候做的,
而不应该在开发客户端的时候来测试SDK..
既然你发布SDK肯定是先测试了SDK是全面测试过无BUG的,
然后用这个SDK来开发官方客户端

jybox 2011-11-20 21:44
abreto:[表情]难道你用实际开发来测试?测试!!顾名思义测试是在开发SDK的时候做的,
而不应该在开发客户端的时候来测试SDK..
既然你发布SDK肯定是先测试了SDK是全面测试过无BUG的,
然后用这个SDK来开 .. (2011-11-20 21:37) 

切合实际一点不行么?
在SDK的基础上写一个客户端是对它最好的测试

切合实际!没有人手单独对SDK进行测试,而要自己对自己写的代码进行测试难免有主观印象

whtsky 2011-11-20 22:50
先发布客户端,客户端确定稳定之后发布sdk......

jybox 2011-11-21 08:52
第10楼whtsky于2011-11-20 22:50发表的:
先发布客户端,客户端确定稳定之后发布sdk......
我现在差不多就是这个意思




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.049206 second(s),query:5 Gzip enabled