没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
“易聊”软件设计说明书
“易聊”软件设计说明书
1. 引言
1.1. 背景
1.2. 参考资料
2. 设计概述
2.1. 任务和目标
2.2. 需求概述
2.3. 运行环境概述
2.4. 详细设计方法和工具
3. 模块设计
4. 项目结构
5. 流程逻辑
5.1. 整体用例
5.2. 各用例活动图
5.2.1. 注册登录
5.2.2. 添加好友(拉式,第一次迭代)
5.2.3. 接受好友请求(拉式,第一次迭代)
5.2.4. 添加好友(推式,第二次迭代)
5.2.5. 接受好友请求(推式,第二次迭代)
5.2.6. 与好友文字聊天
5.2.7. 与好友图片聊天
5.2.8. 与好友视频聊天(第二次迭代)
5.2.9. 修改个人信息
6. 接口定义
6.1. 通用枚举类说明
6.2. 接口会使用的类说明
6.2.1. 接口使用的实体类说明
6.2.2. 接口使用的统一响应类
6.3. 接口说明
6.4. netty的handler说明
6.4.1. ChatHandler
6.4.2. HeartBeatHandler
7. 框架说明和代码设计(设计模式)
7.1. 框架的设计
7.1.1. java反射机制(代理模式)
7.1.2. Spring
7.1.2.1. Bean
7.1.2.2. 控制反转(IoC)和依赖注入(DI)(工厂方法模式)
7.1.3. Netty
7.1.3.1. 责任链模式和装饰者模式
7.1.4. Mybatis
7.1.4.1. 对象关系映射(ORM)(动态代理工厂)
7.2. 自己的设计
7.2.1. 单例模式
7.2.2. 拦截器
7.2.3. 抽象工厂模式结合策略模式
8. 用户界面设计
8.1 通讯格式
8.2 用户界面设计
8.2.1 首页
8.2.2 好友列表页
8.2.4 个人页
8.2.5 聊天页
8.2.6 登录页
9 数据库系统设计
9.1 数据库逻辑结构
1. 引言
1.1. 背景
课程作业要求完成一个聊天软件,平台不限,至少要求最基础的聊天功能。本项目内部开发代号为“易
聊”。
1.2. 参考资料
netty源码
https://github.com/netty/netty
openjdk11源码
https://github.com/AdoptOpenJDK/openjdk-jdk11u
tiny-spring源码
https://github.com/code4craft/tiny-spring
spring-framework源码
https://github.com/spring-projects/spring-framework
2. 设计概述
2.1. 任务和目标
预计完成好友功能,文字图片聊天,视频聊天功能。
2.2. 需求概述
业务需求见架构设计说明书,本系统的性能需求要求能够承担每秒1万次请求(注:由于没有实际
项目经验,参考了csdn对netty的一篇测试),可以看到阿里云8核16G的服务器能承担三万左右并发,
由于本系统的部署机为2核4G,预估性能瓶颈为每秒1万次请求。
2.3. 运行环境概述
本系统运行在2核4G的腾讯云服务器上,硬盘大小为50G。操作系统采用ubuntu18.04,数据库使
用mysql,使用redis缓存,使用fastDFS文件服务器管理文件。
2.4. 详细设计方法和工具
本设计文档包括,模块图,UML活动图,接口定义,包图,代码设计讲解,用户UI设计,数据库设
计。
3. 模块设计
如图,系统划分为聊天模块和用户管理模块,聊天模块与用用户管理模块功能重叠比较小,使用的
技术也不同,开发时也很方便并行开发。
聊天模块中,文字图片聊天,视频发送的ws链接部分,心跳保持模块,分别是netty的管道模式
(责任链模式)上的3个valve(责任链的处理单元),可以分开编写,并行开发。视频聊天模块中使用
websocket的部分也可以作为一个valve来实现,webRTC部分则需要另外实现。
用户模块中,离线消息作为用户模块的一部分似乎并不合理,但是由于离线消息是采用拉取的方
式,而不是推送的方式,所以在编码是是可以放在用户的controller里的。统一登录验证采用基于注解
的拦截器模式,通过在springboot框架下自定义注解,然后在需要登录的接口前添加@LoginRequired
注解即可。其他均为用户路由的接口。
4. 项目结构
注意,本图中没有画出部分不涉及到引用关系的子图
项目的根目录为cn.mikyan,同时我们在外部引入了包org:n3r这个包,用于生成字符串型的id。下
面主要介绍cn.mikyan包下的子包功能
cn.mikyan包下的类包括启动类和配置类,用于项目的启动和配置。utils包是全局工具类,需要的
通用工具都包含在这个包里。service包定义了后端的主要服务,所有的后端服务都在这个包里实现。
controller包利用service包内提供的服务,编写接口,负责与前端的交互。enums包下编写全局枚举
量,主要用于controller类。pojo下编写全局实体类,主要保存交互对象,例如消息对象,用户对象
等。mapper是ORM(对象关系模型)中的对象所在包。netty包负责所有websocket相关的处理,主要聊
天功能都在这里实现,注意,netty包结构有修改,用抽象工厂和策略模式重构了ChatHandler,在下面
的代码设计部分有详细标识,本部分不再列出。
5. 流程逻辑
5.1. 整体用例
剩余28页未读,继续阅读
宏馨
- 粉丝: 20
- 资源: 293
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0