查看: 222|回复: 1

棋牌游戏服务器架构: 详细设计(二) 应用层设计(1)

[复制链接]

8

主题

36

帖子

220

积分

vip会员

Rank: 1

积分
220
发表于 2020-3-27 15:57:22 | 显示全部楼层 |阅读模式

这里的应用层,指的是CenterServer、LogonServer、LogServer、RoomServer等几个服务器,另外还包括游戏模块的设计。不过游戏模块和前4个服务器的设计很不相同。这里先说一下服务器应用的详细设计。

      这上面提到的四4服务器都需要响应客户端(这里的客户端的意思是泛指)的请求,进行数据库操作,同时还要能够配置,以及显示系统运行的状态信息等。这里会采用MVC模式来组织应用层逻辑。

棋牌游戏服务器架构: 详细设计(二) 应用层设计(1)

图1  Application层基本结构

      IController从ITCPServiceObserver继承而来,会与ITCPServerService进行交互,因此它需要解析客户端发过来的请求,如果需要作数据操作,则转发给IModel处理。

      IModel从DBServiceObserver继承而来,一些获取数据及存储数据的操作由它完成,这是通过IDatabaseServicer提供的服务完成的。

      IView实现了IObserver接口,主要用来显示IController和IModel的一些状态信息以及其他消息。

      Applications中的内个Server只要按照其任务实现IController,IModel和IView就行了。

1  Center Server详细设计

       CenterServer的主要功能是维护游戏列表和房间信息。游戏列表是从ServerInfoDB中加载到的,下面是一个简略的结构图。

棋牌游戏服务器架构: 详细设计(二) 应用层设计(1)


图2 CenterServer维护的信息结构

      因为前面已经详细介绍了应用层架构,所以这里只是列出IModel的实现,至于IController的实现,则是解析请求。要么用ServerList中取出游戏列表信息和房间信息返回之。要么向ServerList中添加房间,删除房间以及让ServerList更新在线人数等。

      CenterServer在处理请求时产生的输出信息会让IView输出显示。

2  Logon Server 详细设计

棋牌游戏服务器架构: 详细设计(二) 应用层设计(1)

图3  LogonServer结构图

      IController的实现LogonController有以下几个任务:

      1) 转发注册请求给LogonHandler让其处理;

      2) 转发登录请求给LogonHander让其处理;

      3) 定时使用CenterSocket发送请求给CenterServer, 取回的游戏列表和房间信息存入ServerList这中。

      IModel的实现LogonHandler的主要功能就是注册用户以及验证登录。

      CenterSocket是用来向CenterServer发送请求的。

      ServerList存的数据和CenterServer中的ServerList一样,但是其实现不同,它存的是LogonController从CenterServer中取回来的。


回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部