从零开始编写自己的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/

 

 

时间: 2024-11-01 20:14:02

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

从零开始编写自己的C#框架(9)——数据库设计与创建

原文:从零开始编写自己的C#框架(9)--数据库设计与创建 对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计数据库,不然可能会产生不可控的异常.   从零开始编写自己的C#框架 数据库设计规范   文件状态: [√] 草稿 [ 

从零开始编写自己的C#框架(1)——前言

原文:从零开始编写自己的C#框架(1)--前言 记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后来也差不多,自学了很多不同的知识,都一直只能自己默默的克服一个又一个困难.所以这几年带一些应届生或只有一两年经验的新人时,都会同他们讲:你们现在太幸福了,有问题可以找度娘,还可以找我来解决.做为过来人,能深深的体会到刚入门的时候,没有系统的介绍和老师指

从零开始编写自己的C#框架(15)——Web层后端登陆功能

原文:从零开始编写自己的C#框架(15)--Web层后端登陆功能 对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的.   1.在解决方案中创建一个Web项目,并将它设置为启动项   2.添加引用   3.添加WebManage文件夹与Login.aspx文件 4.添加登陆页面HTML代码 1 <%@ Page Language="C#" AutoEventWireup="

从零开始编写自己的C#框架(5)——三层架构介绍

原文:从零开始编写自己的C#框架(5)--三层架构介绍 三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发.   在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪-<.NET深入体验与实战精要>>,这是以前看到的关于三层架构介绍,觉得挺经典的,大家有时间的话认真看看) 对比以上两图,我们可以看出: 1)数据库好比猪圈 ,所有的猪有序地按区域或编号,存放在不同的猪栏里. 2)DAL 好比是屠宰场 ,把猪从猪圈

从零开始编写自己的C#框架(17)——Web层后端首页

原文:从零开始编写自己的C#框架(17)--Web层后端首页 后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显示公司公告.公司新闻.内部短消息.个人事务.各种业务提醒......等各种内容,这些大家可以需要去进行呈现. 先上代码 Main.aspx 1 <%@ Page Language="C#" AutoEventWireup=

从零开始编写自己的C#框架(11)——创建解决方案

原文:从零开始编写自己的C#框架(11)--创建解决方案 这段时间一直在充电,拜读了园子中大神们的博文(wayfarer的<设计之道>.TerryLee的<.NET设计模式系列文章>.卡奴达摩的<设计模式>还有其他一些零散的文章),获益良多,虽然对大部分设计模式还是有点蒙,不过还是大长见识了.另外还购买了园子里范钢大神的大作<大话重构>和其他大神推荐的<重构:改善既有代码的设计>,每天早上早起一小时看书,感觉这个时间头脑清晰,看书的效率特别高,向

从零开始编写自己的C#框架(4)——文档编写说明

原文:从零开始编写自己的C#框架(4)--文档编写说明 在写本系列的过程中,了解得越多越不知道从哪里做为切入点来写,几乎每个知识点展开来说都可以写成一本书.而自己在写作与文档编写方面来说,还是一个初鸟级别,所以只能从大方面说说,在本框架开发所需的范围内来讲述相关要用到的知识点,至于要更深入的去了解,请大家观看其他大牛的博客或购买书籍来学习. 为了加快进度,会对目录进行修改,将一些知识点合并或在后面使用的章节再进行描述. 谢谢大家的支持,如果您觉得本文对您有所帮助,请帮忙点击支持或发表评论.  

从零开始编写自己的C#框架(2)——开发前准备工作

原文:从零开始编写自己的C#框架(2)--开发前准备工作 没想到写了个前言就受到很多朋友的支持,大家的推荐就是我最大的动力(推荐得我热血沸腾,大家就用推荐来猛砸我吧O^-^O),谢谢大家支持. 其实框架开发大家都知道,不过要想写得通俗点,我个人觉得还是挺吃力的.在本系列中,我不会很深入的去讲述那些映射啊关系啊(绕得我头都晕了,这些请大家去查看相关的文档学习吧)......概念上的东西会少讲,直接上实例,讲实际应用.当然如果您觉得这样很不尊重面向对象什么的,那也没办法,只能说我们不在一个频道上.

从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)

原文:从零开始编写自己的C#框架(13)--T4模板在逻辑层中的应用(二) 最近这段时间特忙,公事私事,忙得有时都没时间打开电脑了,这两周只能尽量更新,以后再将章节补回来.   直接进入主题,通过上一章节,大家明白了怎么使用模板类编写T4模板,本章进的是一些简单技巧的应用 1.首先创建一个Test2.tt模板 2.然后修改模板内容为下面代码 这些代码与上一章最后面的那个差不多,只是修改了输出文件名.命名空间.类名.类属性(partial)和一个单例获取函数 1 <#@ template debu