我要啦免费统计

                                               一种采用消息框架切分扩展的设计方法

                                                                                                       Lastupdate201246 蔡东赟

http://www.LomoX.hk社区发布。

ps:blog贴不了图啊,可以再附件下载:一种采用消息框架切分扩展的设计方法

 

传统的界面uiuilogic隔离方式采用的是接口的方式,为了解耦合,为了使隔离层之间业务统一。如图,ui层你就负责界面的,你想用什么语言都可以; uilogic层你就只做ui传下来的io,键盘鼠标等的操作行为解析; applogic你就负责业务,计算执行的任务。这样子,一个需求就可以同时三个人开发了。 

        

 

 

 


大型基础软件为了解耦而做的隔离,导致接口声明膨胀。可以看到applogic层和uilogic的接口会无限膨胀,与其带来的就是维护成本,如果是内部定义的接口,书写的时候你要每个层都提供一份声明。

         最近在想提供一个东西做为隔离层,先看图。

 


      Applogic uilogic就只有数据间的通讯了。采用异步的消息方式,不管你是多线程还是单线程。模块之间耦合彻底消失。有人会问你这个service用啥。

Zeromq吧,这是我机器上面测试的速度

http://www.cppblog.com/cdy20/archive/2012/04/01/169791.html  单线程一百w120s,那个快啊,如果作为本地的派发器的服务端足够了。

      通信数据如何处理呢?zeromq采用的是字符串发送,我们可以配合googleprotobuf定义解析协议数据。这个东西可以压缩,解压缩协议非常方便,配上这个高速度的mq,那简直棒极了。

 

Zeromq作为一个可以内核间、跨进程、跨机器通信的消息队列,不免又为我们提供了更多的设计的想象力。这么一个中间的消息的服务器,我们又可以把applogic切割,分成多个独立模块,如图。

 

 


如上图,我们可以不断拓展
applogic的模块,我们可以认为这些模块是独立的 动态链接库,独立的进程都可以,或者是独立线程,一切通信 进出都是通过发送send,接收recv

这个东西我现在遇到的工程项目组就有这个需求,他们要求是能够并发开发,甚至两个人统一个模块不四个分支同时进行。一个强大的消息框架,让我的模块可以成为任何一种定义。

画个圈圈,归纳一下:



 上图红色圈圈代表bus。


       上图抽象的图如下。

 

 

 

这样程序就可以任意扩展了。任意切分了。

 

         有错误和改进方法,请发到caidongyun19@qq.com.谢谢阅读。

共享促进技术发展。蔡东赟。www.lomox.hk


附上提醒:

对待本框架,个人:建议团队自由度不要太高,需要根据团队项目的特点做一定的规范约束。否则将面临质量和维护成本递增。

 from lomox  li:

 如果仅仅是做进程间通信,那是大材小用了
如果是进程内的线程间通信,就不合适
客户端面临的问题是消息中心在进程间和线程间的通信 

 

 

 

posted on 2012-04-06 11:13 阅读(1901) 评论(4)  编辑 收藏 引用 所属分类: 个人框架设计

评论:
# re: 一种采用消息框架切分扩展的设计方法 2012-04-06 12:22 | 饭中淹
感觉就是MVC。  回复  更多评论
  
# re: 一种采用消息框架切分扩展的设计方法 2012-04-06 13:07 | WXX
Chrome源码:
进程间IPC
进程内线程间MsgQueue
同一线程对象间注册消息,接受Notification

封装的足够好了,可以借鉴。  回复  更多评论
  
# re: 一种采用消息框架切分扩展的设计方法 2012-04-06 13:23 | 蔡东赟
@WXX
chrome 看来还是得看看源码的  回复  更多评论
  
# re: 一种采用消息框架切分扩展的设计方法 2012-04-06 15:04 | 蔡东赟
@WXX
zeromq估计超越这个了,你只要bind你制定的 ipc impro tcp 就可以了
这种封装 也很变态。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理