《企业考试系统》项目实践(02):应用程序体系结构
摘要:
阐述《企业员工认证考试系统》及《企业考试后台管理系统》所使用的程序体系结构,各层的组成及其作用。
对于较为复杂的“企业级”应用程序,应选择适当的体系结构来满足面向对象的“可复用”、“可维护”原则,参考Microsoft P&P 企业应用程序库中DAAB(数据访问应用程序块)的结构,针对本系统我采用如下的结构:
数据服务层
数据服务层实际上就是相应的数据库,提供数据的基础存储及基本的数据操作,按照MS的建议,对于数据库的操作尽量通过存储过程实现而不是在代码中添加SQL语句
通用组件层
将与项目无送的通用的工具性质的方法封装为类,将一系列工具类封装到一个或多个类库项目中,形成通用工具组件层,通常其封装后的组件类库称为“积件”,即意为可以像积木一样,在需要实现相应功能时,调用相应的组件,调用相应的类、方法即可。
通常封装在通用工具类库中的功能有如下一些:
- 加密、解密的算法
- 自定义的配置文件的操作
- 字符串的通用操作,如字符串格式验证、字符串拼接、数字型货币转中文大写等等
- 图片的操作,如图片与二进制数据间的相互转换、图像的转换、缩略图、模糊、锐化等
- 自定义的日志操作
- 自定义的异常类型
- 数据的分页、筛选、查找
- 等等
这里特殊提出一个通用数据访问工具,这个工具的作用是封装一个可以访问“任何类型的数据源”,支持对于数据源中数据进行“任意操作”(如基于连接的添加、修改、删除、查询;基于非连接的数据填充、数据回写等)的类型。具体的通用数据访问工具类的定义将在后面文章中提到。
数据模块层
封装数据用的基础类型,这里数据模块层主要有两大类:
- 基于连接方式操作数据时,封装数据的“实体类”,这一部分现可用ADO.Net Entry Framework替换
- 基于非连接方式的类型化的DataSet,即VS中的“数据集”(可复用的DataSet的子类)
数据访问层(Data Access Layer,DAL)
执行数据操作,将获取的数据源中的数据封装到相应的数据模块类型的实例中,其依赖数据模块,在业务逻辑层(BLL)和通用数据访问工具中起到连接的作用
业务逻辑层(Business Logic Layer,BLL)
业务逻辑层的主要功能即为封装业务逻辑,其具体的功能有如下几点:
- 对业务数据进行逻辑上的整合,例如在数据库中存储的数据为加密数据,在此处进行解密处理;处理计算列的结果等
- 实现组件端的数据输入验证
- 定义并实现异常策略,例如当组件端异常产生时如何处理这个异常
- 等等
附加服务层
即为Web Service,添加基于Web Service的功能,例如多个子系统用户的“单点登陆”服务等。其可以与BLL层或Web 应用程序结合为一层。
数据展示层
即为UI层,可以是Windows应用程序、Web应用程序等等,其主要功能包括:
- 用户交互
- 界面端数据输入验证
- 等等
对于此应用程序体系结构的划分主要是我个人的经验及习惯,各位如果有比较成熟的或你认为比较好的应用程序体系结构的组成方式,可以在评论中多多交流,或者发表到你的Blogs中,在评论中留下地址,我们多多讨论。