CS架构的服务器设计与实现过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013-7-24
13
六 消息管理
•消息格式定义:消息=消息体+消息头 • 消息拦截器:对消息进行拦截,加密,压缩等 •消息监视器:验证接收到的每个消息格式是否正确、消息是否合法 、消息是否符合特定规格 •消息分派器:统一调用消息拦截器,监视器,对消息加工处理。然 后将消息分配到对应的消息处理器上 •消息处理器 :处理特定类型的消息
2013-7-2Hale Waihona Puke Baidu 12
二插件机制实现
1.获取插件目录下的每个插件(DLL) 2.通过Assembly.LoadFrom加载一个插件 3.通过反射 Type. IsSubclassOf查看其是否实现了某种插件类型的 接口 4.通过Activator.CreateInstance 来实例化一个插件对象 通过这四个步骤就可以实现一个简单的插件系统
3.
2013-7-24
10
二应用服务器与功能服务器之间的通信保障
1. 第一种情况:当功能服务器正常工作一段时间后重启 每次功能服务器启动/重启时都向应用服务器发送“我启动 了”的消息,这样应用服务器就去主动与功能服务器建立Tcp连接 池或恢复已存在的连接池。 第二种情况是应用服务器重启: 功能服务器通过Remoting定时给应用服务器发送心跳包,当 发生Remoting异常时,功能服务器就知道应用服务器掉线了。应用 服务器掉线后,功能服务器就定时给应用服务器发送“我启动了” 的消息,直到应用服务器重启完毕。 第三种情况是网络断开后恢复: 应用服务器定时检测不到功能服务器发送的心跳包,应用服 务器就当功能服务器下线,功能服务器Remoting不到应用服务器, 功能服务器就当应用服务器掉线了,当网络恢复的时候,功能服务 器重新向应用服务器发送“我启动了”的消息
2.
3.
一插件机制
•插件又称为扩展,是一种特殊的组件,用于增强和扩展基本框架的 行为能力。插件和框架的通信协议是一组接口,插件的各种特性都可 以通过该接口进行访问。插件主要有如下特点: •(1)一个插件是一个独立的物理单元。它可以独立的提供一项完整的 服务(功能),而不需要依赖于其它插件。 •(2)插件能自我描述 ―― 插件的所有对外的发布信息都由插件自己 内部提供,而不依赖于外部文件或注册表。 •(3)插件能自我管理 ―― 插件如果需要配置信息,则插件自己能读 取和修改配置信息,而不是框架来完成这些事情。 (4)插件自我独立 ―― 一个插件不得引用其它的插件。如果一个 插件与另一个插件关系紧密,那么应该将这两个插件合成一个插件, 或者重新分解为两个独立的插件.
2013-7-24
14
消息处理模块 事件记录 消息处理模块
服务器的实现过程
消息合法检测
网络组件(TCP/UDP)
加密,解密
消息分配器
压缩,解压
应用服务器
消息处理器工厂
日志记录
基于连接池的消息处理器
消息处理器2
功能插件1 网络组件(TCP/UDP) 功能插件2
功能服务器
谢谢
CS架构的服务器设计与实现过程

名: 孔德帅
主要内容
系统框架 应用服务器设计 功能服务器设计 应用服务器与功能服务器之间的通信 插件机制 消息管理 实现过程
2





2013-7-24
一CS服务器系统框架
C/S四层框架
数据库1
功能服务器1 功能服务器2 应 用 服 务 器 客户端
数据库2 功能服务器3
2013-7-24
3
一应用服务器设计—功能定位
•应用服务器:转发所有的功能请求给功能服务器,并处理所有的非功能请求,并 管理终端用户、进行状态保持、日志记录等。
2013-7-24
4
二应用服务器结构
Tcp/Udp
UI用户界面
用户管理模块
网络通讯模块
事件记录 多连接池管理 消息分配模块 消息处理模块
基本消息处理器:用于处理非功能请求,如登录请求、退出请求等 日志记录模块:将一些重要的事件信息写入到Windows的事件日志中 或日志
2013-7-24 6
一功能服务器
功能服务器:处理并且仅处理所有的功能性请求,不参与用户管理、状态保 持等,提供最纯粹的功能服务
2013-7-24
7
二功能服务器结构
基本消息处理器
功 能 服 务 器
功 能 服 务 器
2013-7-24
5
三应用服务器结构
UI用户界面:1用于显示当前连接的用户,和每个用户正在请求的服 务2用户显示当前注册的功能服务器,和每个功能服务器的当前 状态、用户管理模块:用于管理所有在线用户的状态,并对用户 作定时掉线检查 网络通讯模块:主要作用是接收客户端来的消息,不作任何处理直接 转发给消息处理模块。 消息处理模块:对消息信息进行,解密,解压,验证等 消息分配器:根据消息的类别(基本请求、功能请求),将基本请转 发给基本消息处理器处理,而将功能请求通过连接池管理者转给 功能服务器进行处理
UI用户界面
网络通讯模块 事件记录
功能插件管理模块
消息分配模块
消息处理模块
功 能 插 件
功 能 插 件
功 能 插 件
2013-7-24
8
三功能服务器结构
网络通讯模块:主要作用是接收客户端来的消息,不作任何处理直接转发给 消息处理模块。 1.消息处理模块:对消息信息进行,解密,解压,验证等 • 消息分派模块:将从通讯模块来的字节流分裂为一个或多个请求消息,然 后调用对应的功能插件来处理,并将处理点结果返回给通信模块,最后由 通信模块发送给客户端。 • UI用户界面:用于显示当前的连接,和每个连接上正在请求的服务。并控 制加载的各个功能插件的相关信息。 • 功能插件管理模块:用于加载、管理所有的功能插件。 • 日志记录模块:将一些重要的事件信息写入到Windows的事件日志中或日志
2013-7-24
9
一应用服务器与功能服务器之间的通信
1. 2. 应用服务器和功能服务器之间的所有功能通信是通过TCP连接池 进行的,在这种情况下,应用服务器是主动联系功能服务器。 应用服务器和功能服务器之间的非功能通信通过Remoting的方式 来完成,即当功能服务器启动时,将自己的地址信息通过应用服 务器发布的远程服务接口告诉给应用服务器,然后应用服务器再 根据这个地址去和功能服务器建立TCP连接池。 在非功能通信中,是功能服务器主动联系应用服务器,所以功能 服务器不需要发布远程服务接口,功能服务器只需要知道应用服 务器发布的远程服务的地址即可(服务器的配置文件中)通常这 个服务地址记录在功能
相关文档
最新文档