AgileEASNETSOA中间件平台NetSocket通信框架-完整.docx
-
资源ID:1204890
资源大小:148.55KB
全文页数:25页
- 资源格式: DOCX
下载积分:5金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
AgileEASNETSOA中间件平台NetSocket通信框架-完整.docx
一、Agi1.eEAS.NETSOA中间件SOCket"cp根架介18在文章AKi1.CEASNETSOA中间件平台.Ne1.SoCkc1.通信框架-介绍一文之中我们对AKi1.CEASNETSOA中间SOCket/Tcp框架进行了总体的介绍,我们知道gi1.eES.NETSOA中间件SocketZTcp框架是一套Socket通信的消息中间件:Agi1.eEAS.NETSoA中间件SOCket/Tcp框架结木二、多人在线号天室系统在文他iIcEAS.WTSOA中间件上陋Sckc1.通信框架-通单例/-实现简单的依芳缩卷户端消息应笠给大家实例介绍了有关于Agi1.eEAS.NETSOA中间件SOCket通信框架的简单应用之后,我们通过文章ARi1.eEAS.NETSoA"间件平台.NetSoCket通信框架-完整版J1.i例在?£十天:系蛟-下栽配置向大家展示了一个完整成熟的.NETSoCket通信框架的应用案例,一个从在线聊天空系统.通过文章向大家讲解了如何下载和编洋安案例源代码、以及如何配置效劳端和客户段”相对于简单的客户端二方效劳端消息请求与杭答的例子而*.在线多人新天室系统的发杂衣都要起过客户端二效劳端消息请求例了N多倍,但是限于文意篇Iff1.的原因,我们没有在文章g:3E1S.V:TSOA中间件丫介zWe迎:枢:在纹脚大空.系统-卜投田追这中为大家介绍这个案例的具体代码。下面我将为大家介绍这个案例的关键代码及阅读、理解、修改完善所需要注意的地方。三、关于代码译环境及其他的地些设Jt本案例的源代码在下领压缩包的CodO目录之中,所有的引用Agi1.eEAS.NETSOA中间件平台的程序集及客户端、效劳兴运行所必须的文件都在下我压缩包的PUbIiSh目录之中,所有工程的编译怆出路径也都是在Pub1.ishI1.录,也就是所有工程不管是在Debug编译环境还是在Re1.ease编译环境都是输出在Pub1.ishI1.录之中,有关具体的设置请看卜列图:St1.HWWSX9JE(N)4(:)WSOTtI):半倒M):话就SnyePU)口帐:rmtRoOm(7个双目)1.ChitingRoofTvMiinGitnt“日ChtgRoom.Us<rM3n3ge<3ChAtRoom.B1.1.CoMracttE<33ChtRoom.B1.1.Host33ChtRoom.Entrties,,多ChtRoomaM*Q9e>J*PropertiesAMg1.1.B。ChMMHy(S“9I/KMeS“gee,IogXReWhMC“g*CJ1.ogOwtMenage-Cs5OrUnexs5OnUneMm9cUrSutMwg4/曰ChtRocm.$o<ke<RUAAPubSuA力COM互提G;壬蛛C)生成序列化程字量(EX855安帐关万盒受分后3HI四、解决方案之中的工程说明ChatROom解决方案之足共有ChatRoon.Entities、ChatRoon.B1.1.ContractsChatRooa.B1.1.1.1.ost、ChatRooa.MessagesChatRooa.Socket>ChatingRm.MainC1.ientsChatingROom.IsUrMarUIge共七个工程.其ChatRocm.Entities:是聊天室注册用好的数掘存储实体.其中只包括个实体1.s°r,即注册用户信息.Chatitoo1.B1.1.Contneta:为用户管理、登录验证、密码找回修改等功能的分布式效劳定义契约.其中仅包括一个效劳契约定义IUSerSerViCe(用户效劳).ChatRoo1.B1.1.Host:为ChatRocxn.BI.!.Contracts所定义的效劳契约的功能实现.ChatBo<a.MeettCM:效劳端与客户端通信消息的定义,包括聊天消息、用户登录请求、登录结果、在线用户清华消息、用户上下线状态通知消息.ChatRooe.Socket:为效劳端的业务代眄、包括AgiIeEASNETSOA效劳进程的SOCkCtSerViCe插件以及效劳端收到客户湍各种消息的消息处理器代码.ChatingRooifainCHent:为客户湘代码、包括客户段界面以及客户端收到通信消息的消息处埋器代码.五、关于S(M效劳SOCketSendCe插件如果比照Mi1.CEAS.ETSOA中间件平价.itSockc1.通皤框架-简单例/戈现简单的彼劳尔喀户时消融应答.细心的朋友一定会发现本案例中没有了类似SOCket.Deo.Server功能的工程.而是多了ChatRoom.Socket工程.关干这个问时就涉及到了Agi1.eEAS.NETSoA中间件平台的SOA效劳实例及SoCket框架的设计,在SOA效劳实例本身被设计成为了一个可以运行WCF、峪、SOCket等各吃点通信及其他应用效劳的运行容器,那么我们的Socket效劳翊也可以在此效劳实例之中运行,同时在我们的Agi1.eEAS.NETSOA中间件平台的位内核程序集ES.MicroKerne1.d1.1之中定义TSOCketSerViCe插件的实现标准:1:usingSystem;2: usingSystem.Co1.1.ections.Generic:3: usingSystem.1.inq:1: usingSystem.Text;5: usingEAS.Distributed;6:7: namespaceEAS.Sockets8: 9: /<sumnury>10: /SoCkeISerViCe效劳接口定义。11: /<summary>12: /<remarks>13: /一个Socket效劳器可以承载多种/个SoCket效劳,一个SOCket效劳处理一种业务.14: /如IMSoCkeCSerViCe处理IM相关的即时通讯业务,WFSocketService处理工作流相关的效劳,这两种Socket效劳可以同时运行在一个SoCket效劳器之中。15: /<remarks>16: PUb1.iCinterfaceISocketService:IAppService17:18: /<summary>19: /使用SerVerEngine初始化SoCketSCrVice。20: /<suunary>21: /<paramname="socke1.Serer”>Socke1.效劳器对象。<param>22: voidInitia1.izedSocketServerBasesocketServer);23: 24: ISoCketSerViCe接口中定义了一个初始化方法:VoidInitia1.ize(ISocketServerBaseSocketServer).用于SOA效劳实例先成对IsOCketSerViCe实例的初始化,其中传入参数为一个ISoCketSerVerBaSe对望.我本质的含义为SoA效劳实例调用ISOCkeISerViCe实例时象把SOA效劳实例之中的SOCke1.serVer对象做为参数传入,那么我们就可以在IS。CkC1.serViCC对象之中针时SOCkC1.SCrVCr做一些初始化工作,其中最重要的工作是,挂我与之相关的消息时象零IMeSSagCHandIer.ChatRoom.Socket工程之中包括-一个ISocketService的实现ChatROOa.Socket.MessageService1: usingEAS.1.oggers;2:usingES.Sockets;3:usingSystem;56789-0:1i:usingSystem.Co1.1.ections.Generic:usingSystem.1.inq:usingSystem.Text;namespaceChatRoom.Socket/<snmary>/聊天室消息效劳,由EAS.SOA.Server.Exe引擎的SoCket初始化程序。12:/<su11unary>13:PUbIiCc1.assMessageService:ISocketService14: (15: -reionISocketService成员16:17: PUbIiCvoidInitia1.ize(EAS.Sockets.ISocketSorverBasesocketServer)18: 19: try20: 21: SocketServer.AddHander(newChatMessageHand1orO);SocketServer.AddIIander(new1.oginMessageHari(I1.erO);23: ChatRooinContext.Instance.SocketServer-socketServer:24: 25: catch(Systen1.Exceptionexc)26:27: 1.ogger.Error(exc);28: 29:30: socketServer.SessionS1.arted+=socketServerSessionStarted;31: socketServer.SessionAbandoned+=socketServer_SessiOnAbandoned;32: 33:31: voidSoCke1.SerYeJSeSSionS1.HrIed(ObjeCIsender,NeISeSSionEVen1.ArgSe)35: 36: 1.ogger,1.nfo(string.Format(,Session:1.O,Started",e.Session.SessionID):37: 38:39: voidSocke1.ServerSessionAbandoned(objectsender,NetSessionEventArBse)40: (41: 1.ogger.Info(string.Format("Session:0?Abandoned*,e.Session.SessionID):42: 43:44: /voidSocketServerMessagerReccived(objectsender,EAS.Sockets.MessageEventArgso)45: /(46: /1.ogger.Info(string.Fonnat("MessagerReceived:”,e.Message.ToStringO):47: /48:49:50: /voidSocketServerMessageScnd(objectsender,EAS.Sockets.MessageEventArgso)51: /(52: /1.ogger.Info(string.FormatCrMessageSend:10)*1e.Message.ToStringO);53: /)54:55: pub1.icvoidStartO56: (57:58: 59:60: pub1.icvoidStopO61:62:63: 64:65: #endregion