商务服务
Linux系统下c++web服务器项目的分析
2024-12-26 20:48

软件的开发流程包含需求分析、对需求的建模以及后续的总体、详细设计、实现和测试过程。本文针对工程实践项目的需求进行了建模分析,包含用例建模、业务领域建模以及数据建模等,最终给出项目的概念原型。

 


 

  本课题主要是在Linux系统下完成一个以c++为基础的web服务器设计与开发。能够为相当数量的客户端提供服务,同时能够完成相应的日志输出以及连接管理等功能。通过连接服务器上的数据库,服务器能够支持客户端的并发访问并及时响应。用户能通过页面进行注册、登录和资料预览、下载等功能。项目基于Linux系统的网络编程接口和系统调用,使用线程池 + 非阻塞socket + epoll(ET和LT) + 事件处理(Reactor和模拟Proactor)的并发模型进行实现,使用状态机解析HTTP请求报文。

 

  一个web服务器主要需要完成的功能就是解析用户请求,对用户的请求完成响应,用户的请求包含注册、登录和资源请求等。同时服务器需要支持一定程度的并发量,以保证对用户的请求能够及时返回结果。

  • 主要功能需求

  主要包含以下几个方面:

  1. 服务器完成用户登录、注册的功能
  2. 服务器完成用户预览、用户下载资源的功能
  3. 服务器完成包含用户登录、请求资源等活动的日志的记录
  4. 服务器通过定时器清理非活动连接
  5. 管理员可以完成服务器资源的维护,包含删除、修改、上传资源等功能以及服务器资源的异常检测,同时管理员也可以作为用户完成一系列活动
  •  性能需求

   支持较高数量的并发请求,同时能够在给定时间内完成响应

  • 其他需求

   要求具有一定的可移植性,有良好的外部接口

  • 首先从需求的表述中可以发现,项目包含两种种参与者:用户、管理员。

  用户完成以下用例:

  1.  注册
  2.    登录
  3.    预览资源
  4.    下载资源
  5.    修改个人信息

  管理员完成以下用例:

  1.  资源上传
  2.     资源删除
  3.     资源更新
  4.     资源异常检测

  用户和管理员的用例可以概括成请求资源和维护资源两类。

  • 画出用例图

 

                             图 1 用户请求资源用例图

 

                

 

                                                             图 2 管理员维护资源用例图

 

首先分析项目的功能需求,主要包含:

  1. 服务器完成用户登录、注册的功能
  2. 服务器完成用户预览、用户下载资源的功能
  3. 服务器完成包含用户登录、请求资源等活动的日志的记录
  4. 管理员可以完成服务器资源的维护,包含删除、修改、上传资源等功能以及服务器资源的异常检测,同时管理员也可以作为用户完成一系列活动

用户完成登录等功能,说明用户是独立存在的,作为一个类。用户完成各类动作,这些动作可以统称为事件,通过http请求完成,所以http请求也是一个类。日志记录是独立存在,需要一个日志类来完成记录。服务器完成请求的解析以及日志的生成,并且和用户进行交互,所以服务器也需要作为一个类存在。服务器通过定时器完成非活动连接的清理,所以定时器也是一个类。剩下的登录,注册等都是动作,意味着用户和服务器之间存在着关联关系。同理管理员作为特殊的用户,应该是用户的子类,是继承关系,管理员和服务器之间也存在着关联关系。

经过上诉分析,得到项目的业务类图如下:

 

 

 

                                                                                              图 3 业务类图

 

 

 

根据绘制出的业务类图,有相应的数据模型如下:

  • User

列名

字段名

字段说明

类型

是否为空

说明

1

userId

用户ID

int

N

 

2

userName

用户名

varchar(50)

N

 

3

userPassword

用户密码

varchar(100)

Y

 
  • http_conn

序号

字段名

字段说明

类型

是否为空

说明

1

timer_flag

定时器标识

int

N

 

2

state

连接状态

int

N

 
  • timer

序号

字段名

字段说明

类型

是否为空

说明

1

user_data

用户数据

text

N

 

2

expire

剩余时间

varchar(50)

N

 
  • SourceInfo

序号

字段名

字段说明

类型

是否为空

说明

1

sourceId

资源ID

int

N

 

2

sourceName

资源名

varchar(50)

N

 

3

sourceType

资源类型

int

Y

 

4

sourceStatus

资源状态

int

N

 
  • 概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
  • 概念原型是一种虚拟的、理想化的软件产品形式。
  • 概念原型=用例+数据模型

 

用例和数据模型都在前文叙述过,这里总结出项目概念原型的工作过程:

  用户通过客户端向服务器端发起连接,服务器维持主线程来通过epoll系统调用监听socket连接,被监听到的socket连接会被accept。同时主线程会维持一个监听队列。服务器通过epoll系统调用来完成对监听socket(listenfd)和连接socket(客户请求)的同时监听。通过线程池来实现并发,为每个就绪的文件描述符分配一个逻辑单元(线程)来处理。

服务器需要处理三类事件:I/O事件,信号及定时事件。主线程负责读写,工作线程(线程池中的线程)负责处理逻辑(HTTP请求报文的解析等)。工作线程完成对HTTP报文请求的解析,并按照报文的类型返回不同的结果。在用户登录时还会查询数据库。同时完成对非活动连接的处理以及日志的输出。管理员作为特殊的用户,发出的请求会被以同样的方式处理。

对应的流程图和时序图:

 

                                                                                             图 4 流程图

 

 

 

                                                                                              图 5 时序图

    以上就是本篇文章【Linux系统下c++web服务器项目的分析】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/10444.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
过年无忧 | 一键get这些春节话术!
一键Get这些春节话术~过年无忧新年快乐春节将至,年味渐浓在这温馨又热闹的节日氛围里我们既能品尝各式各样的美味佳肴沉浸于味
2025在新加坡生活的我们将迎来“至暗时刻”:房租飙涨、每个月入不敷出…
聚焦新加坡真是开年暴击!2025年刚开始,还没过新年呢,万事通就出了一身冷汗:今年又是一个物价涨涨涨的年份。在网上一搜“新加
太抽象!太抽象!2024年游戏行业简直太抽象!
年末,DataEye研究院今天整点活,轻松一波。——用数据、新闻盘点2024年国内游戏业有多抽象。回首2024年有产品研发8年烧了数亿,
TikTok会如何收场
TikTok的命运再次悬而不决。在美国下架12小时又恢复运营之后,1月20日,美国总统特朗普签署行政命令,要求TikTok「不卖就禁」法
今天上午10:00,成绩发布!
早安,东台!‍今天是2025年1月22日‍星期三(农历腊月廿三)大美东台,活力满满进取创新、奋斗拼搏最近有哪些新动态?和小东一
农村土地托管服务的理论基础
中国产品流通经纪人协会供销合作行业标准《农产品食品供应商信用评价规范》参编单位征集函中国农产品流通经纪人协会供销合作行业
头上三尺有神明,每个人头顶都有一颗星,当星光消失人也就消失!
每当夜晚降临后,我们抬头看天空,会看到满天的星星,自古以来,人们从没有停止过对星象的观测和研究。古人观测星象,一则是为了
运营师抖音代运营
运营师抖音代运营:掌握流行短视频潮流的神奇职业短视频平台已经成为人们娱乐、学习和社交的重要方式。在众多的短视频平台中,抖
微短剧,2024年“最大赢家”? | 年终盘点
2024,短剧行业大变样。作者 | 张语格编辑 | 趣解商业文娱组“互联网大厂争相入局。”“98%的短剧制作方都在亏钱。”“用户被免
同类第一!20%弹性的人工智能 ETF 科创(588760)今日上市,一键布局科创板优质AI龙头
  最新公告内容显示,广发上证科创板交易型开放式指数投资基金(基金代码:588760;扩位简称: ETF 科创)已于 2025 年 1 月 1