APP下载

大型应用软件的多层体系框架的设计与实现*

2013-07-31丁纯立

湖北科技学院学报 2013年2期
关键词:用户界面控件页面

丁纯立

(福建信息职业技术学院,福建 福州 350003)

一、引 言

随着企业对信息化产品的依赖越来越强,相关的软件产品的功能也越来越强大,软件结构越来越复杂,对于大型复杂的软件系统来说,开发、维护成本高、重复开发率高、开发效率低越来越困扰着软件开发者,尤其在进行团队开发时情况更是严重。在此背景下,人们认识到对总体的系统结构设计比起对计算的算法和数据结构的选择已经变得更加重要。

为了克服上述问题,人们总结程序开发的经验,提出采用分层的方式进行处理,在分层软件框架设计中最成熟的就是三层架构的分层方案,即把系统从应用逻辑上对其进行抽象细分用户界面层(UI),业务逻辑层(BLL),数据访问层(DAL)三个层次,同时再加上共用实体类和一些通用辅助类,如数据库访问类、事务处理类等。以上的设计提高了软件代码的复用质量,但还存在许多问题,如缺乏安全管理,缺乏用户登录日志管理,各层之间的耦合度不能让人满意;在数据访问层还是存在冗余代码,工作重复现象,因此必须对三层架构进行有效扩充才能满足用户需求。

文中将结合.NET平台所提供的相关技术,构建出一个基于三层架构设计思想、面向对象、可复用的信息系统软件开发框架,下面进行具体分析。

二、设计与实现

1.用户界面层:直接和用户进行交互,把数据内容呈现给用户或接收用户输入的数据的部分。在一般的分层架构解决方案中,表示层的设计是根据用户所选的不同控件,将实体类的值绑定到对应控件的属性上,以完成数据的自动获得与显示。这种方法的缺点是,大型应用程序都有非常多的页面,对每个页面进行控件与实体类属性的对应,代码量大且重复率高,随着需求的变化,调整就更加繁琐,为了解决上述问题,框架将用户界面层分成了UI和UI控制逻辑层,在UI层设计了界面页面的基类PageBase.cs,系统中的每个UI界面类都从PageBase.cs继承,在 PageBase.cs中,定义了 ErrorMsg出错提示,ErrorState出错状态,ActionPage动作页面,Action执行动作等公共变量,让每一个表示层页面的操作与逻辑层的操作都有返回信息与状态,这样不仅可以更好的控制和判断程序,同时通过记录每个页面的公共变量值还可以实现应用程序的异常管理,用户登录日志管理等功能,这些功能也是一个成功的框架中必不可少的重要组成部分。在UI控制逻辑层设计了一个公共类DORM.CS,用以将web页面控件的值自动赋值到哈希表中,主要的设计思路是,通过获取页面上以“UI_”这个命名的控件,取相应的控件名和值,分别保存在哈希表里面对应的KEY、values里面,然后返回哈希表,以此来解决繁琐的页面控件与实体类属性对应操作的问题。

2.业务逻辑层:主要是处理业务方面的逻辑。在这一层中,框架将BLL层细分为业务逻辑接口层和业务逻辑实现层,在业务逻辑接口层抽象出了用户界面层所需要用到的功能,并将这些接口统一放在DAO_Interface接口文件中,主要接口如图1所示

图1 业务逻辑接口

这一层可以让团队成员独立开发而减少相互间的依赖性。就是说业务逻辑实现层里还没写实现过程的时候,项目组的其它成员,可以先调用而不用管它是怎么实现的,从而提高协同效率。业务逻辑实现层继承业务逻辑接口层,然后根据具体不同的要求来实现。

3.数据访问层:

这一层用于实现信息系统对数据库的操作,完成业务流程对数据库中数据的插入、更新等操作。在这一层中,框架封装了所有BLL层需要用到的数据库操作,并将其放入DALCommon类文件,以保证数据访问层只有单一访问接口,减少各层之间的耦合性。

在传统的数据访问层中,一般采用辅助类,如SqlHelper通过一组静态的重载方法来封装数据访问功能,开发时可以通过调用辅助类的静态方法来对数据库进行操作,这种方法虽然解决了部分代码复用问题,但还是存在当需求变化时,需对一系列相关模块进行修改的问题,而且在团队开发中极易出现开发代码重复现象,为了解决上述问题,在本框架的数据访问层引入Ibatis开源框架。IBatis.net具有完全由开发者掌控Mapping规则。基于XML配置,开发者可掌控底层,传入参数支持 Hashtable、EntityObje,Dictionary等.可将离散参数封装为单一参数传入等优点;这样当需求变化时,只需修改相应Xml文件中的SQl语句即可,其它部分都可以不用改动,以保证接口稳定度。

IBatis DataMapper的工作原理如图2所述。

图2 Ibatis实现原理

properties.config:数据库配置信息(包含数据名、用户名、密码、地址)

proivders.config数据库驱动(包含.Net所有的数据库驱动)

Maps文件夹:包含整个数据库各表和各模型的关系.(主要是包含SQL语句)

Model文件夹:包含各个表的模型

在DALCommon类文件中数据访问层通过Map ID和Hashtable对进行执行操作,在本层中,日志记录采用Log4net技术,下面通过查询操作来展示软件框架代码的具体实现。

public DataSet Select(Hashtable hTable,ref string errMsg,ref bool errState,ref string ActionPage,string MapID)//带参数的查询

最后形成的框架如图3所示:

图3 软件框架结构图

三、应用和总结

在大型应用软件中一个面向对象的、可复用的信息系统软件框架已经成为一个软件开发团队的核心物质资本,而且更重要的是软件框架将是一个系统的开发周期、开发成本及软件维护的核心影响因子。本文所设计的框架具有以下特点:(1)在用户界面层使用UI控制逻辑层,解决对页面控件的烦琐的操作,并且配合业务逻辑层和数据访问层的操作;(2)使用业务逻辑接口层和业务逻辑实现层,来实现项目各模块的独立开发和共享功能;(3)使用IBatis技术作为数据访问层解决了项目各模块对数据频繁操作及维护困难的问题;(4)通过记录每个页面的公共变量值以实现应用程序的异常管理,用户登录日志管理等功能。在有关学校的信息管理系统中得到成功应用,实践证明,应用本框架省略了很多基础性的工作,开发周期大大缩短,同时大大降低了各层之间耦合度和减少了软件的冗余代码,极大的提高了软件生产率。

猜你喜欢

用户界面控件页面
刷新生活的页面
基于CiteSpace的国外用户界面体验图谱量化分析
物联网用户界面如何工作
关于.net控件数组的探讨
UI用户界面色彩设计研究
基于B/S的跨平台用户界面可配置算法研究
ASP.NET服务器端验证控件的使用
网站结构在SEO中的研究与应用
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
几种页面置换算法的基本原理及实现方法