Herm统一分发框架的分发各种对象的流程

分发框架管理一个树状的Handlers,Handler分为通用的(general)和专有的(specific)。通用的Handler是为所有的对象服务;专有的Handler是为某个对象服务(常见的是Role)。框架结构描述如下:

        cmd1—–>handlers

        cmd2—–>handlers

        cmdN—–>handlers

                                 +——->cmd1——>handlers

                                 |

        oid1————–+——–>cmd2——>handlers

                                 |

                                 +———>cmd3—–>handlers

 

        oid2—-……

 

这里以网络消息为例,说明统一框架是如何分发一个消息的。前提是各种外部对象将oid-type-handler注册到分发器中。

1. 得到一条消息,得到object id和消息command。

2. 在general handlers中,查看command是否有对应的Handlers,有的话,调用Handler的接口。

3. 根据object id定位到该object的specific的Handlers,有的话,调用Handler的接口。

 

这是一个很简单的东西,看似没什么用。他的作用巨大,实际开发中大大简化了消息处理流程,消除了程序耦合度。

这个东西是由Herm base库提供,应用程序可以独立地使用。Herm framework也使用这个分发器分发消息。framework中是一个session维护一个分发器。

简单说一下不通的服务器使用分发器的区别。网游服务器一般有接入服务器和逻辑服务器。接入服务器管理多个session,收到消息后,将不同的session的消息合成一个session发给逻辑服务器,也就说逻辑服务器就一个session。接入服务器将specific handlers个数全设成0;逻辑服务器得到消息后一般须有借助specific handlers将消息分发给真正的处理对象。

原文链接:https://www.cnblogs.com/herm/archive/2011/04/24/2773946.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18691

(0)
上一篇 2023年7月10日
下一篇 2023年7月11日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml