博客
关于我
游戏服务端框架之模仿SpringMvc实现消息路由
阅读量:293 次
发布时间:2019-03-03

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

经典web项目的三层架构

经典web开发项目通常采用三层架构来组织代码。典型的,第一层为表现层,通常使用MVC模式;第二层为业务逻辑层,该层主要是各种service业务操作类;第三层则为数据访问层,通过dao层对数据表进行增删查改操作。

游戏项目的三层架构

类似的,我们的游戏项目也可以采用上面的三层架构。在命名方面,我们部分借鉴了SpringMvc的命名,使用Controller注解对应MVC模式的控制器,使用RequestMapper注解对应的消息处理者(类似于web的http url地址)。网关层收到玩家请求后,将消息分发到对应控制器的指定方法处理者。控制器只用于控制业务流程,具体的业务逻辑将交由业务逻辑层service(游戏项目常用Manager来命名)。

使用控制器处理对应业务模块的请求消息

从前面的Message抽象消息的定义可以看出,每一个请求消息包含有一个模块id,一个模块(一个相对独立的游戏功能模块)映射到唯一的控制器;每一个消息包含一个cmd类型,一个cmd类型就代表该功能模块一个子操作。

模块控制器与cmd业务处理method的一对多关系模型如下:
从上面的模型图可以看出,对于给定的模块号+给定的cmd类型,可以找到唯一的M

你可能感兴趣的文章
从零构建通讯器--4.4-4.5信号在创建线程的实战作用、write函数写入日志设置成不混乱、文件IO详解
查看>>
从零构建通讯器--5.2三次握手,telnet,wireshark
查看>>
如何判断两个浮点数是否相等?
查看>>
2017ccpc杭州 E. Master of Subgraph(点分治 + 树dp + bitset)
查看>>
2021牛客寒假算法基础集训营3
查看>>
苹果进军搜索,背后藏着什么“阳谋”?
查看>>
egg:如何在控制器中拿到前端传的参数
查看>>
MVC之修改
查看>>
struct 模块
查看>>
python之集合类型内置方法
查看>>
编程与编程语言分类
查看>>
【 UVA - 572 】 Oil Deposits (DFS水题)
查看>>
约瑟夫环问题
查看>>
CF #716 (Div. 2) B. AND 0, Sum Big(思维+数学)
查看>>
Java 設計模式 - 建造者模式
查看>>
ES6 JavaScript 重新認識 Promise
查看>>
2020-07-16:如何获得一个链表的倒数第n个元素?
查看>>
Imagination官方信息速递2021年光线追踪专刊
查看>>
webpack01 -- webpack安装和配置
查看>>
分享九款不同页面404源码html
查看>>