从零开始编写自己的C#框架(8)——后台管理系统功能设计

简介: 原文:从零开始编写自己的C#框架(8)——后台管理系统功能设计  还是老规矩先吐下槽,在规范的开发过程中,这个时候应该是编写总体设计(概要设计)的时候,不过对于中小型项目来说,过于规范的遵守软件工程,编写太多文档也会拉长进度,一般会将它与详细设计合并到一起来处理,所以本文档看起来会怪怪的,不是很符合规范,它只是从实用角度出发来编写,以指导后面功能的设计与开发。
原文: 从零开始编写自己的C#框架(8)——后台管理系统功能设计

  还是老规矩先吐下槽,在规范的开发过程中,这个时候应该是编写总体设计(概要设计)的时候,不过对于中小型项目来说,过于规范的遵守软件工程,编写太多文档也会拉长进度,一般会将它与详细设计合并到一起来处理,所以本文档看起来会怪怪的,不是很符合规范,它只是从实用角度出发来编写,以指导后面功能的设计与开发。

 

 

从零开始编写自己的C#框架

后台管理系统功能设计文档

 

 

文件状态:

[√] 草稿

[  ] 正式发布

[  ] 正在修改

文件标识:

C#框架

当前版本:

0.1

作    者:

陈焕(AllEmpty)

联系方式:

1654937@qq.com

更新日期:

2014-04-23

   

 

目录

一、    文档介绍    3
1、文档目的    3
2、文档说明    3
3、读者对象    3
4、系统开发强度等级    3
5、开发环境及使用工具    3
二、    项目总体规划    4
1、系统实现功能图    4
2、系统整体性能规划    4
三、    后台管理系统功能介绍    6
1、    登陆与在线用户表    6
2、    系统首页    7
3、    系统管理    8
4、    信息发布    16
5、    员工管理    19
6、    个人事务    20

 

一、文档介绍
1、文档目的
本文档是《从零开始编写自己的C#框架》项目后台管理系统的开发指引说明。
2、文档说明
本文主要描述后台管理功能说明等,方便开发人员根据功能设计数据库结构,能更快捷和顺利的完成系统开发。
3、读者对象
本项目的开发人员。
4、系统开发强度等级
(强度分为:容易、中等、困难) 当前难度为:容易
5、开发环境及使用工具
Windows7 + IIS5 + SQL Server2005 + Visual Studio 2010 + Offices2010 + ExcelToSQLString2.91 for July等软件。

 

 二、    项目总体规划
1、系统实现功能图

 

 

2、系统整体性能规划
1) 安全性需求
整个系统的设计及服务器配置都认真的考虑了系统的安全性,能够防范常见的黑客攻击。
服务器安全:系统采用Windows2008,使用McaFee防火墙,启动安全策略后,采用非允许的软件无法对C盘及注册表进行任何写入或更改策略、对内对外端口非允许软件全部阻止策略、对站点所在文件夹,采入可运行目录无写入权限,可写入目录无执行权限策略。修改相关软件的访问端口(如有需要,可限制某些服务的远程访问权限,或指定IP段才可以访问)。严格按照《服务器安全部署文档》来配置服务器与网站,最大限度的保证服务器的安全。
代码级安全:上传到服务器上的程序代码,都必须进行编译和混淆;对提交到数据库的内容,都必须进行过滤处理,防止sql注入式攻击与XSS攻击;对上传的图片文件,必须进行检查操作,防止上传非法文件。后台与前台分开,登陆需提交验证码。
系统级安全:本系统通过菜单权限、页面按键权限和多权限组合的方式来管理系统中各个不同的权限组与页面权限;每个页面访问都会验证用户组权限、用户权限及链接中提交过来的密钥,以辨别是否是非法访问,防止后台操作人员跨页面非法访问。后台的所有操作都会记录到操作日志中,以保证出现问题后台快速定位,找出原因。
2) 性能需求
由于是个基础框架,在这个框架上可能会扩展不同的业务系统,有可能业务量会很大,所以在框架代码编写与数据库设计上,以千万级别数据库访问为基准进行设计。开发人员在开发时,必须严格遵守项目开发规范,以及数据库设计要求(详细请看下一章节)。
数据库设计上,数据量大的报表,实现实时与非实时查询相结合,将可以延后查询的数据全部放在深夜由数据库启动相关存储过程自动分析处理。
在数据查询条件编写上,将时刻注意查询条件位置,优化查询语句,并随时检查复合索引是否已创建,使用空间换性能等方式提高查询效率。
在编码时必须做到能不访问数据库的地方,绝不向数据库读取数据;对于需要反复读取的数据,可以存放到IIS缓存或Redis缓存中,减少数据库访问次数;可以使用XML、JS等文本方式读取数据的,根据具体的生成频率状况,有选择性的使用。尽量使用空间换性能的方式进行处理,减轻服务器的负担,提用户访问效率。
前台页面采用模版缓存方式,减少页面与数据库的交互,提交用户访问效率。
3) 可靠性需求
在设备选型方面,采用具有较高可靠性并支持容错的网络设备和服务器,如支持冗余电源、带电热拔插、链路冗余等容错技术。为了保证数据的可靠性,采用支持磁盘阵列(RAID)等磁盘冗余技术的服务器,尽量减少因为磁盘的故障造成系统的意外down机。
4) 可扩充性需求
随着业务的发展,系统在设计上考虑到未来功能的开发能够预留一定的应用扩展空间。框架完全自主开发,实现功能模块化、组件化、可继承,对常用功能函数,使用T4模板统一生成,减少人手复制粘贴操作,开发灵活。开发完善的集成接口,使系统更具备开放性,可多人协作团队开发,供相关开发人员进行功能延伸开发。
5) 后期维护方便快捷需求
整个开发必须遵循后续维护便捷为核心的思想进行,即后续开发维护时,在数据库中添加、修改和删除字段时,对原有的页面开发只需要修改一些小参数即可完成。在页面添加、修改和删除一些按键与功能时,也只需做一些小调整甚至只是在后台相关页面增改一些参数即可完成。
后台管理系统开发时,数据访问层统一使用SubSonic生成,减轻开人发员开发工作量与减少出错的可能;业务逻辑层常用函数统一使用T4模版生成,自定义函数编写也采用高度集合继承与封装方式,全部或部分使用泛类进行操作,这样处理后,在表示层开发时,大量的UI页面显示只需要传入相关的数据库表名和相关参数就可以马上实现列表、分页、排序、新增、编辑与删除等功能,避免重复的维护开发工作。
UI层使用FineUI插件,可以减轻开发人员对于UI绘制以及分页、排序等各种常用功能所花费的开发时间。

 

三、    后台管理系统功能介绍
由于很多功能很简单,看着原型图就明白,所以就不写详细的文字描述。


1、    登陆与在线用户表
对于在线用户列表的缓存方法,IIS缓存与Redis缓存开发编码是不一样的,如果后端站点使用多进程的话,只能使用Redi缓存,如果选用IIS缓存的话,必须进行跨站点共享缓存方式进行配置,或使用新的算法才行。
本项目开发将会选用Redis缓存。

登陆原型:

 

登陆流程判断与在线用户表的关系,请看下图:

 

2、    系统首页
首页的顶端,会显示当前登陆用户的一些信息
左边菜单栏会显示当前用户有权限查看到的目录
右边显示公司公告、公司信息,以及当前用户的登陆信息

 

3、    系统管理
1)    系统参数设置
主要是对系统全局参数进行设置,比如日志、邮件等各参数的设置(详细请看下面的原型设计)
设置了日志保留时间以后,存储过程会自动删除过期的日志
启用邮件通知以后,需要使用邮件通过的地方就会发送邮件

 

2)    图片重新生成
对上传到服务器端的图片按重新设置的格式全部重新生成
3)    菜单管理
管理后台的菜单与各个页面
对于后端系统的所有页面,都需要在这里添加绑定(注册),然后再赋予权限才能访问,只要页面继承了PageBase类,则页面会自动检查当前用户是否有该页面的操作权限。不添加的页面默认为无访问权限。
对于不用检测权限的页面,在创建后直接继承System.Web.UI.Page。这些页面必须调用指定函数,检查用户是否登陆以及是否从正确的路径进入本页面(系统对所有页面的路径都进行了加密,只要密钥不正确就无法进入相应页面)。
对于不用检测权限的页面,也需要在菜单中进行添加绑定,不添加绑定的话,用户操作日志就无法记录该用户浏览过这些特殊的页面。

 

4)    页面按键设置(公共)
这里设置常用的按键名称,方便按键权限设置时,不用一个个录入,只需要选择添加就可以了

 

 5)    页面按键权限设置
页面权限指的是页面中各个控件(按钮)的操作权限,只要页面继承了PageBase类,程序就自动在页面中查找ToolBar控件内的按键,并进行权限检查,除了刷新、查询、关闭等几个按键外,如果用户没有该控件权限时,由会自动将该控件禁用。
在本栏目为每个页面绑定按键名称后,职位设置权限时就会显示出来,给管理员打勾选择权限。

而对于需要更细化的权限管理的,比如页面中有一个树列表或分类,分类A与分类B各有一个按键叫做C,而有权限进入本页面的人有多个,有的人可以对分类A的按键C操作权限,而有的对分类B的按键C有操作权限。这时使用页面按键权限控制就很难实现了。需要另外开发一个职位权限控制功能来实现,以区分不同职位的人员分别控制页面中不同分类同名按键的操作权限。(讲的可能还不够清晰,这里再补充一下。这里讲的职位权限与后面的职位权限管理是不一样的,后面的职位权限是针对每一个页面和控件的,而这里是针对页面里不同分类同命控件权限,具体如何开发与操作,以后有时间的话再编写相关例子)

 

6)    部门管理
主要是用来管理企业架构,添加、编辑、删除部门,并可对所创建的部门进行排序操作。
每位员工只能隶属于一个部门。
在系统中部门是一个逻辑概念,因此部门设置与真实的组织结构可以不同。系统中部门的逻辑结构主要取决于按照组织结构划分的部门权限和工作范围。
部门设置主要用于数据筛选的权限管理。当需要查询部门数据时,使用部门编号字段作为过滤条件,就可以很方便的查询到当前员工所管理部门以及子部门的所有数据。而对于平级部门或上级部门的资料由无法查看。
如果企业有多个分公司,而这些分公司的人事或其他一些管理是相互独立的时候,只要在职位那里设置该职位绑定直属部门(可以为一级部门也可以是其他级别的部门——这主要是要看该企业是如何创建这个企业架构和具体需求的),那么当该用户在管理系统时,只能设置或查看他所在部门及子部门的权限或查看员工信息,而对于这个部门节点平行或以上的数据他是无法查看到的。只有在绑定时指定了所有数据的才可以查看到整个企业所有的数据。

 

7)    职位管理(角色)
根据企业自己的架构,在对应的部门里创建相应的各个职位
设置各职位的操作权限,如栏目的访问权限,页面里各个按键的使用权限等
一位员工可以同时拥有多个职位,当他拥用多个职位时,他就具有这些职位的所有权限。
职位权限的设置,它是将部门、菜单与页面控件权限捆绑在一起的综合应用。
职位权限管理主要是为了减轻管理员的工作量与出错率,在人事变动时(即调动岗位或新进员工),不用对员工权限重新设置,只需要绑定相应职位就可以了。

在设置菜单、页面访问操作权限时,要基于这样一个原则,用户不应该有的或可有可无的权限就不要开启,使界面简单、明了、易用。

 

8)    登陆日志
记录用户登陆、退出日志,并将用户在线时长记录在日志中。

 

9)    操作日志
框架底层会详细记录用户进入过那些页面,逻辑层生成的函数会记录用户增、删、改、更新等各种详细操作。

 

10)    在线用户
显示当前在线用户列表,可以查看这些用户的各种日志,并可以将指定用户踢除下线。

 

11)    错误日志
记录所有未捕捉到的异常信息,方便开发人员查看修复。

 

4、    信息发布
1)    信息分类管理
管理各种信息分类

 

2)    信息内容管理
管理与发布各种公告、公司新闻和其他信息。(如果有前端的话,可以将帮助、公司简介、新闻等各种内容在这里发布)

 

3)    邮件信息管理
查看系统中已发送的各种邮件内容,以及发送失败信息。

 

5、    员工管理
1)    在职人员
可添加、修改员工信息;设置该员工帐号是否可多人使用,设为否时,每个帐户只能有一个用户登陆,当该帐号在其他地方登陆时,前一登陆用户将被系统踢除,在踢除的同时,系统会发信息提示被踢除的用户(就像同一个QQ帐号多次登陆时,前一登陆帐号将被强迫离线)。设为可以时,该帐户就可以由多人拥有,可以同时登陆系统;用户的操作权限是同职位绑定的,只要指定了该用户的职位,该用户即拥有该职位的所有权限。
员工离职时设置员工离职状态,设置后该员工帐号就登陆不了系统
可帮助员工修改密码可用多种条件进行查询

 

2)    离职人员
可查看离职员工的详细信息
对离职员工点击复职,该员工就可以转为正常状态
点击删除,将删除该员工的所有信息,包括相片

 

6、    个人事务
1)    个人设置
员工可以在这里修改密码与联系方式

 

2)    部门通讯录
显示用户所在部门的所有员工通讯录(包括子部门)

 

3)    公司通讯录
显示用户企业所有员工通讯录

 

 

Word文档点击下载

 

 版权声明:

  本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 或Email给我(1654937@qq.com),大家一起探讨。

  更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/

 

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
11天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
48 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
26 0
|
3月前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
34 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
17 0
|
3月前
|
存储 编解码 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
37 0
|
3月前
|
存储 数据管理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
26 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
33 0
|
4天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
21天前
|
安全 JavaScript 前端开发
C#医院手麻系统源码,手术麻醉管理系统源码
手术麻醉管理系统贯穿患者入院至出院全程,整合术前术后流程,如手术排班、麻醉计划、术中监护及术后恢复。采用C#.net6.0、Vue、Ant-Design等技术,与sqlserver2019数据库结合。系统提供麻醉记录、手术安全核查、费用管理等功能,确保信息数字化和流程规范化。通过自动化记录和数据分析,增强手术安全,优化资源分配,并支持医疗质控与研究。
C#医院手麻系统源码,手术麻醉管理系统源码