仍是老规矩先吐下槽,在规范的开发过程当中,这个时候应该是编写整体设计(概要设计)的时候,不过对于中小型项目来讲,过于规范的遵照软件工程,编写太多文档也会拉长进度,通常会将它与详细设计合并到一块儿来处理,因此本文档看起来会怪怪的,不是很符合规范,它只是从实用角度出发来编写,以指导后面功能的设计与开发。html
从零开始编写本身的C#框架前端
后台管理系统功能设计文档算法
文件状态:sql [√] 草稿数据库 [ ] 正式发布后端 [ ] 正在修改缓存 |
文件标识:安全 |
C#框架服务器 |
当前版本:网络 |
0.1 |
|
做 者: |
陈焕(AllEmpty) |
|
联系方式: |
1654937@qq.com |
|
更新日期: |
2014-04-23 |
目录
1、 文档介绍 3
一、文档目的 3
二、文档说明 3
三、读者对象 3
四、系统开发强度等级 3
五、开发环境及使用工具 3
2、 项目整体规划 4
一、系统实现功能图 4
二、系统总体性能规划 4
3、 后台管理系统功能介绍 6
一、 登录与在线用户表 6
二、 系统首页 7
三、 系统管理 8
四、 信息发布 16
五、 员工管理 19
六、 我的事务 20
1、文档介绍
一、文档目的
本文档是《从零开始编写本身的C#框架》项目后台管理系统的开发指引说明。
二、文档说明
本文主要描述后台管理功能说明等,方便开发人员根据功能设计数据库结构,能更快捷和顺利的完成系统开发。
三、读者对象
本项目的开发人员。
四、系统开发强度等级
(强度分为:容易、中等、困难) 当前难度为:容易
五、开发环境及使用工具
Windows7 + IIS5 + SQL Server2005 + Visual Studio 2010 + Offices2010 + ExcelToSQLString2.91 for July等软件。
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绘制以及分页、排序等各类经常使用功能所花费的开发时间。
3、 后台管理系统功能介绍
因为不少功能很简单,看着原型图就明白,因此就不写详细的文字描述。
一、 登录与在线用户表
对于在线用户列表的缓存方法,IIS缓存与Redis缓存开发编码是不同的,若是后端站点使用多进程的话,只能使用Redi缓存,若是选用IIS缓存的话,必须进行跨站点共享缓存方式进行配置,或使用新的算法才行。
本项目开发将会选用Redis缓存。
登录原型:
登录流程判断与在线用户表的关系,请看下图:
二、 系统首页
首页的顶端,会显示当前登录用户的一些信息
左边菜单栏会显示当前用户有权限查看到的目录
右边显示公司公告、公司信息,以及当前用户的登录信息
三、 系统管理
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) 错误日志
记录全部未捕捉到的异常信息,方便开发人员查看修复。
四、 信息发布
1) 信息分类管理
管理各类信息分类
2) 信息内容管理
管理与发布各类公告、公司新闻和其余信息。(若是有前端的话,能够将帮助、公司简介、新闻等各类内容在这里发布)
3) 邮件信息管理
查看系统中已发送的各类邮件内容,以及发送失败信息。
五、 员工管理
1) 在职人员
可添加、修改员工信息;设置该员工账号是否可多人使用,设为否时,每一个账户只能有一个用户登录,当该账号在其余地方登录时,前一登录用户将被系统踢除,在踢除的同时,系统会发信息提示被踢除的用户(就像同一个QQ账号屡次登录时,前一登录账号将被强迫离线)。设为能够时,该账户就能够由多人拥有,能够同时登录系统;用户的操做权限是同职位绑定的,只要指定了该用户的职位,该用户即拥有该职位的全部权限。
员工离职时设置员工离职状态,设置后该员工账号就登录不了系统。
可帮助员工修改密码,可用多种条件进行查询。
2) 离职人员
可查看离职员工的详细信息
对离职员工点击复职,该员工就能够转为正常状态
点击删除,将删除该员工的全部信息,包括相片
六、 我的事务
1) 我的设置
员工能够在这里修改密码与联系方式
2) 部门通信录
显示用户所在部门的全部员工通信录(包括子部门)
3) 公司通信录
显示用户企业全部员工通信录
版权声明:
本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人赞成必须保留此段声明,且在文章页面明显位置给出原文连接,不然保留追究法律责任的权利。若有问题,能够经过1654937@qq.com 联系我,很是感谢。
发表本编内容,只要主为了和你们共同窗习共同进步,有兴趣的朋友能够加加Q群:327360708 或Email给我(1654937@qq.com),你们一块儿探讨。
更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/