摘 要:为了有效改善系统的结构,降低系统开发复杂度,提出了以现有开源框架为基础的轻量集成框架,该框架以Spring.Net为核心,与ASP.NET MVC、NHibernate框架进行整合,以多层次结构划分系统,从而实现应用程序的动态构建,减少系统的复杂度,确保系统的可扩展性和可维护性。对该框架进行了技术性分析,实验结果表明了该框架的可行性及有效性。
关键词:轻量框架;Spring.NET;电子商城;NHibernate
中图分类号:TP3 文献标识码:A
1 引言(Introduction)
近几年来,随着科学技术的不断发展,计算机应用日益普及,人们对应用软件的需求日益增大。软件规模越来越大,其代码设计越是复杂。客户的需求往往复杂而多变,在需求分析阶段初期,客户对自己的业务模型,并不一定完全熟悉,只能给出一个模糊而抽象的业务需求模型。当客户发现软件的功能并非自己所需的时候,则需要对软件进行修改和扩展,从而加大软件的开发难度及成本。
为了满足用户复杂多变的需求,软件的动态性越趋重要。软件的动态性体现在软件的灵活性和可扩展性上。当需要对软件进行更改和扩展的时候,能够在原有系统基础上较轻松的修改,且尽可能小的影响原有系统。为此,软件程序应该具备良好的分层结构,降低程序模块之间的耦合,增加扩展的灵活性,同时软件需要能够提供动态替换机制以及可插入机制的能力。本文以电子商城为例,提出了以现有开源框架为基础的轻量集成框架,用来解决系统集成中普遍存在着的扩展性、适应性问题[1]。
2 电子商城系统框架(Electronic shop system
framework)
以Spring.Net为核心来构建电子商城系统,以三层架构为基础,整合Asp.Net MVC以及Nibernate,构建基于Web的电子商城系统轻量级集成框架,同时以RESTful风格设计网络访问,在一定程度上提高SEO优化效果。
2.1 框架简介
(1)分层体系结构
在目前的软件设计架构中,三层架构是比较常见的一种分层式结构,即数据访问层、业务逻辑层、表示层这三层,同时还有一个模型层(Model)。数据访问层用于访问数据存储系统,控制数据访问逻辑,为业务逻辑层提供服务。而业务逻辑层则负责封装各种业务逻辑,数据校验等。而最上层的则是表现层,将数据以人性化的方式展现给用户。而模型则负责在各层传递数据。
(2)Asp.Net MVC框架
Asp.net MVC框架通过Controller、View、Model这三者来处理用户的请求以及展示数据。整个框架通过使用Asp.net MVC代替传统WebForms,可以减少框架复杂度,避免了WebForm中大量的ViewState而导致页面文件变得过于臃肿,从而减少了带宽的压力,增加测试的可行性,使得框架更加轻量化。
(3)Nhiberate框架
NHibernate是一个基于.NET的针对关系型数据库的对象持久化类库,与直接使用ADO.NET操作SQL来执行数据库的逻辑操作相比,NHibernate更能够大量减少开发以及维护的成本。NHibernate通过XML文件描述,建立对象与关系模型数据(表或视图)之间的映射,以面向对象的编程思想来实现对数据库的访问逻辑,从而可以提高开发效率,减少低级错误的产生。当对象需要持久化时候,则会通过框架来生成对应的SQL语句,同时由框架来维护事务会话,使得开发更加简便。由于不直接与数据库交互,从而使得程序拥有更好的可扩展性和可维护性。
(4)Spring.Net框架
Spring.NET是基于.NET之上的应用程序框架,也是java第三方框架Spring的.Net版本。Spring.NET主体是IOC和AOP[2]。IOC全称为Inversion of Control,叫控制反转,一般也称其为依赖注入,它改变了传统在程序中强制声明对象的创建方法[3]。通过IOC,模块与模块之间的依赖,只需依赖其暴露出的接口,而具体的实现有IOC容器来管理,通过配置文件指向具体的实现便可以让被调用方的具体实现注入的调用方,最终降低软件模块之间的耦合度,控制模块之间的调用,降低软件开发的工作量,提高软件应用效率。AOP全称为Aspect-Oriented Programming,面向切面的编程,它能够分解系统服务功能,分离出重复或者次要的部分使其模块化,并对其提供声明式的系统服务方式。典型的使用方式一般包含了方法调用的日志记录,异常的处理,事务的控制等,这一些都是最容易重复产生部分,通过AOP将其抽出,从而使得代码更加简洁,减少后续开发与维护的成本。
2.2 框架系统结构
基于Spring.Net的电子商城系统框架,以三层架构为基础,以Spring.Net为核心,衔接Asp.Net MVC和Nibernate,通过IOC控制各层的具体依赖,以AOP分解系统的服务,如图1所示。
图1 系统框架
Fig.1 System framework
2.3 技术可行性分析
表现层采用ASP.NET MVC框架实现,通过Spring提供的IOC机制,与业务逻辑层所交互,使得表现层与业务逻辑层相解耦。业务逻辑层,由表现层所调用,通过上层请求访问,结合数据访问层所提供的服务,进行相对应的逻辑验证,运算等操作,最后反馈信息。通过AOP服务,抽取封装日志记录,异常处理,事务控制等,从而到达分解系统服务功能,避免重复的开发。数据访问层,由NHibernate框架实现,与关系数据库建立映射,以面向对象的方式处理数据库,与Spring.Net结合,封装事务处理机制,大大减少系统构建的复杂度;内置的缓存机制,大大提高数据访问的效率以及可靠性。通过NHibernate可以方便切换不同的DBMS,提高整体可维护性与可扩展性。综上所述,该框架在技术上可行。
3 示例分析(Example analysis)
以电子商城系统为例,使用本文所述框架来实现电子商城系统的开发。
3.1 基础架构
以三层架构为基础,构建系统的初始化架构,划分为三层,数据访问层,业务逻辑层以及Web层,如图2所示。
图2 基础架构
Fig.2 Infrastructure
(1)数据访问层
IDAL项目:数据访问逻辑接口层;DAL项目:数据访问逻辑的实现层,采用Nhibernate框架实现。
(2)业务逻辑层
IBLL:业务操作接口层;BLL:业务逻辑实现层。
(3)表现层
Web:页面表现层,采用ASP.NET MVC框架搭建。
Entity层,贯穿三层,用于数据的传输和共享,持久化等。Config层,存放一些Spring.net相关的IOC和AOP配置。
3.2 数据访问层
基于NHibernate实现,通过XML描述方式,建立对象与数据库表之间的关系,以商品表为例,相关配置代码示例如下所示:
……
3.3 业务逻辑层
这一层系统业务核心价值所在之处,同样将具体的业务定义(IBLL)与实现分离(BLL)。对数据访问层的依赖,只依赖其接口,通过Spring.Net注入相应的配置。业务实现类中,只需依赖接口,通过XML注入具体的实现,先注册实现类,代码如下:
再通过配置,为业务实现类注入具体的数据访问实现。
3.4 Web表现层
表现层依赖业务逻辑层的接口,由Spring.net提供实现的注入。表现层中的View展示数据,交互之时,由Controller来控制数据的流向。而Web项目中,处于层次的最顶端,需要做最后的配置,即提供Spring.Net管理的入口。通过在Web.config中配置,将Asp.NET MVC的控制器,以及数据访问层,业务逻辑层的相关实现由Spring.NET来统一管理。
在Web.config中先配置一个Spring节点,然后配置相应的组件定义以及依赖关系,指向对应的文件。
4 结论(Conclusion)
本文结合电子商城系统开发实例,通过第三方框架Spring.Net和NHibernate,采用ASP.NET构建三层应用程序,把应用程序进行分拆,使得程序结构更加清晰,降低其复杂度,从而使程序拥有更高的可扩展性和可维护性。
后续工作主要是更好的完善整个轻量级框架,探讨和设计一套简便的配置管理与集成的解决方案,同时在本框架的基础上创建能够简便应用于电子商城的功能组件,最终降低系统复杂度以及达到开发集成与测试的技术要求。
参考文献(References)
[1] 张红光,蒋跃军,左玉龙.基于消息传递的企业信息系统集成
框架研究[J].计算机工程与设计,2005,26(12):3219-3221.
[2] 刘艳.利用Spring.Net构建动态的三层应用程序框架[J].硅谷
Silicon Valley,2013,(14):31.
[3] 林庆.基于ASP.NET的MVC设计模式的研究[J].计算机工程
与设计,2008(1):167-169.
作者简介:
林平荣(1981-),男,硕士,讲师.研究领域:软件工程.