博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]ESFramework介绍之(31)―― 消息分类及对应的处理器
阅读量:5843 次
发布时间:2019-06-18

本文共 2057 字,大约阅读时间需要 6 分钟。

    这是一篇迟到了很久的文章,要不是今天看到Mediar朋友写的“”的文章,我也许还不会想起写这篇应该很早就发表的Blog,它可以帮助ESFramework的研究者/使用者们更好的使用ESFramework。Mediar朋友的那篇文章中介绍了通过服务器转发P2PMessage,Mediar手动实现了一个自己的处理器,实际上ESFramework已经内置了P2PMessage的处理器,那就是P2PMessageDealer,P2PMessageDealer不仅可以把消息转发给连接到同一个AS上的好友,而且可以转发给连接到异地AS上的好友。不管怎样,还是要感谢Mediar为我们提供的示例!
    到目前为止,ESFramework将接收自终端用户的消息分为6类,这可以通过ServiceType枚举看出来:
    public
 
enum
 ServiceType
    {
        Basic ,           
//
IBasicRequestDealer
        Function ,
        P2PMessage ,      
//
对于P2P消息,服务器仅仅转发,P2PMessageDealer
        FriendRelation ,  
//
如好友列表、好友资料等 ,FriendRelationDealer
        GroupMessage ,    
//
如多人联网游戏中的同步消息等(动态组消息) -- ActiveGroupMessageDealer
        CustomServiceType 
//
自定义服务种类
    }
    我先解释一下这几种类型的消息含义:
(1)Basic,基本消息是类似这样的消息,比如登录、退出、check消息等。
(2)Function,功能请求消息是所有请求功能服务的消息,这样的请求消息都有对应的回复消息,比如查询、要求服务器计算而得到结果等等。ESFramework中,几乎所有的Function类型的消息都是由功能插件处理的。
(3)P2PMessage,点对点消息,是指用户发给另一用户而经过服务器中转的消息,比如即时通讯中的聊天消息等。
(4)FriendRelation,好友关系请求消息,比如请求好友列表、好友资料等,这在很多IM应用中是常见的。
(5) ,动态组请求消息。ESFramework支持运行时动态组创建、管理等。
(6)CustomServiceType ,自定义的消息类型,即你的应用中用到的除上面5种消息类型以外的消息。
(7)还要补充一种消息,跨区域(AS)请求,这种类型的消息将被本地AS转发到目标AS去处理。( )
    ESFramework为每种类型的消息都提供了默认的处理器(或处理器接口),它们是:
(1)对于Basic消息类型,ESFramework提供了IBasicRequestDealer接口,你的应用只要实现此接口就可处理所有的Basic消息。
(2)对于Function类型的消息,由于通常是由功能插件处理,所以ESFramework提供了FunAddinDealerFactory来处理所有的功能请求消息。
(3)P2PMessage,对于所有要转发的消息,ESFramework提供了P2PMessageDealer,P2PMessageDealer可以进行本区域转发和跨区域(AS)转发。如果需要将转发失败的消息存储以待以后重试,可以使用 。
(4)FriendRelation,对于好友关系请求,ESFramework提供了FriendRelationDealer处理器,你只需要实现该处理器使用到的其它组件接口即可。
(5)GroupMessage,对于动态组请求消息,ESFramework提供了ActiveGroupMessageDealer可以直接进行处理。
(6)CustomServiceType ,对于应用自定义的消息类型,你需要实现自己的消息处理器。
(7)对于跨区域(AS)请求,你可以根据AS之间的通信方式实现特定的处理器。如果AS之间采用.net remoting通信,则ESFramework提供了ESFramework.Architecture.FourTier.ForeignDealer来处理跨区域请求。
    所有上述的消息处理器都可以装配到EsbRequestDealerFactory工厂,EsbRequestDealerFactory为每种类型的消息都预留了处理器插槽,你可以通过对应的属性进行处理器注入!图示如下:
    (图中黄色背景的组件都已经在ESFramework中提供了实现!BasicRequestDealer需要你实现IBasicRequestDealer接口)
    如果你的应用只需要使用其中几种类型的消息,那么只需要为EsbRequestDealerFactory装配对应的消息处理器,这样不会为不使用的消息类型付出任何额外的代价。

转载于:https://www.cnblogs.com/fx2008/archive/2011/11/27/2265238.html

你可能感兴趣的文章
Confluent平台5.0支持LDAP授权及用于IoT集成的MQTT代理
查看>>
诡异的xen故障:xenconsole: Could not read tty from store: No such file or directory
查看>>
HTTP工具CURL的使用简介
查看>>
选择“Asp.Net Web应用程序”还是“Asp.Net网站”?
查看>>
Server 2008 R2 AD RMS完整部署:准备篇
查看>>
浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路...
查看>>
P2P的远程协助系统技术分析[转]
查看>>
在.NET开发中的单元测试工具之(1)——NUnit
查看>>
文件的散列与校验:.NET发现之旅(五)
查看>>
生产了十几年NAS的群晖,这次准备重新定义NAS
查看>>
大家都有的迷茫我也来了
查看>>
46次课(Nginx安装 、 默认虚拟主机、Nginx用户认证、Nginx域名重定向)
查看>>
c# 适配器模式的详细介绍
查看>>
windows2008支持多用户同时登录
查看>>
UEditor 1.2.5 for java 自定义配置
查看>>
js微模板引擎
查看>>
Gson转JSON字符串时候, 将时间转成Long型
查看>>
oral_quiz->#N个骰子的点数和#
查看>>
15、文本查看命令--cat、more、head、tail
查看>>
Oracle模糊查询的实现
查看>>