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将消息分发给真正的处理对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值