admin 管理员组文章数量: 1184232
2024年3月28日发(作者:javascript从哪里开始学)
第31卷第6期
2011年12月
惠州学院学报(自然科学版)
JOURNAL OF HUIZHOU UNIVERSITY
Vo1.3i.No.6
Dec.2011
基于.NET平台的分层架构与设计模式应用研究
薛晓萍,许
(惠州学院计算机科学系,广东
摘
强
惠州516007)
要:随着时代的进步,科学技术也经历着跨越式的发展,现今的软件行业较传统设计模式已经有了天壤之
别,逐步走出作坊式的生产,向着工程化迈进。系统设计者对构建耦合度低、高可靠性、可维护性及良好扩展性的系
统愈发注重。本问为针对.NET平台上的分层架构,结合设计模式对其进行深入的研究和探讨,并通过对企业OA
的设计和开发,对企业级项目的构架和开发的整体流程、面向对象的设计思想有了更清楚的认识。
关键词:.NET;分层;软件架构;设计模式
中图分类号:TP3l1 文献标识码:A 文章编号:1671—5934(2011)06—0040—04
1 问题提出
在传统的软件设计中,将数据库访问、业务逻辑及UI等代码编写在一起,这样可读性差、耦合度高,为将来的
维护和重构带来极大不便,为了解决该问题,系统分层架构思想应用而生。即将系统的各个功能分离开,放在独
立的层中,各层之间通过协作来实现整体功能。
分层架构的提出,是软件开发思想的一个重大进步,它的出现,在很大程度上解决了软件开发中的强耦合问
题,也为编写代码清晰、可维护性良好的系统提供了理论基础。
目前,最成熟的分层架构体系应该是Java平台下的J2EE架构,以Struts、Hibernate和Spring为代表的J2EE架
构已经成为分层架构的经典。而在其他平台,如.NET、PHP,尚无成熟的分层架构框架。
本课题研究基于.NET平台的分层架构与设计模式,在研究本课题的过程中,逐步开发完成了一个企业级的
智能OA(Office Automation)系统,将所有理论研究贯穿于该系统的开发过程,该课题已作为2011届学生毕业设计
题目。
2设计原则及总体架构
2.1设计原则
1.单一职责原则(The Single Responsibility Principle,简称SRP)。就一个类而言,应该仅有一个引起它变化的
原因。单一职责原则实际上消除了对象之间的耦合,避免一个类承担过多的职责,不是说一个类就只有一个方
法,而是单一功能。
2.开放封闭原则(The Open—Close Principle,简称OCP)。软件实体(类、模块、函数)应该是可扩展的,但是不
可修改的。也就是说,对于扩展是开放的,对于更改是封闭的。
3.Liskov替换原则(The Liskov Substitution Principle,简称LSP)。子类应当可以替换父类,并出现在父类能够
出现的任何地方。
4.依赖倒置原则(The Dependency Inversion Principle,简称DIP)。其一,高层模块不应该依赖于低层模块,二
者都应该依赖于抽象。其二,抽象不应该依赖于细节,细节应该依赖于抽象。
5.接El隔离原则(The Interface Segregation Principle,简称ISP)。采用多个与特定客户类有关的接El比采用一
个通用的涵盖多个业务方法的接口要好。
收稿日期:2011一O8—20
作者简介:薛晓萍(1960一),女,河北张家口人,教授,硕士,主要研究方向为数据库及应用。
第6期 薛晓萍等:基于.NET平台的分层架构与设计模式应用研究 ・41・
2.2总体架构
目前,典型的分层架构是三层架构,即自底向上依次是数据访问层、业务逻辑层和表示层,这种经典架构经历
了时间和实践的检验,被认为是合理、有效的分层设计。但是,实际的项目中,对上述三层会做出进一步的扩展,
将原有的三层扩展到七层,即数据访问组件基础层、SQL Ser
一
ver(Oracle)数据访问层、数据访问抽象工厂层、数据访
问接口定义层、业务实体层、业务逻辑层、表示层。如图1所示。
里审
图1各层模块结构图
目前,在典型的 三层架构中,对各层的职责划分并没有一个统一的规范,综合现有的成功实践和.NET平台的
特殊性,将七层架构的职责划分如下: .
(1)表示层:是系统的uI部分,负责使用者与整个系统的交互。在这一层中,理想状态时不应包括系统的业
务逻辑,该层中的逻辑代码,仅与界面元素有关。
(2)业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关。
(3)数据访问层:有时候也称为持久层,其功能主要是负责数据库的访问,实现数据访问接口层的定义,其中
包含的逻辑就是对数据库的CRUD操作。如果要加人ORM元素,那么就会包括对象和数据表之间的Mapping,以
及对象实体的持久化。
(4)业务实体层:用来封装实体类数据结构,一般用于映射数据库的数据表或视图,用以描述业务中客观存
在的对象。
(5)数据访问接口定义层:抽象出数据访问逻辑,脱离与具体数据库的依赖,从而使得整个数据访问层利于
数据库迁移。
(6)数据访问抽象工厂层:用于管理数据访问层层对象的创建,偏于业务逻辑访问。
(7)数据访问组件基础层:定义了有关数据库访问的一些公共方法。
3关键性构建及各层次实现
3.1 实体类设计
实体类是对对象的封装,是现实世界中实体的计算机表示。它通常包括私有变量及对应的get、set方法,这些
私有变量或者属性,则对应现实对象相应的属性。理想情况下,实体类中不能含有任何逻辑,它应该单纯是数据
的封装。
一
般来说,虽然不同的实体类有很大差别,但是由于表示的是同一种实体,对应的也是同一张表,所以它们的
・
42・ 惠州学院学报(自然科学版) 2011年第31卷
属性基本是一样的。这样,我们就可以让各层依然依赖具体的实体类,而在需要使用特殊实体类时,通过一个叫
转换器的机制,进行不同实体类之间的转换,从而将实体类的差别控制在某个层中,而不会蔓延到整个系统中。
3.2接口设计 .
接口的设计实际上处在现实需求和程序实现之间,起到承上启下的用。它决定了需求分析中的各个需求如
何合理地映射成各个层次的不同方法。所以接口的设计应该在需求分析的基础上进行。
3.3 IOC容器及依赖注入机制设计
依赖注入(Dependency Injection)和控制反转(Inversion of Contro1)是同一个概念。具体含义是:当某个角色
(调用者)需要另一个角色(被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实
例。但在具有依赖注入的系统里,创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者
实例的工作通常由Ioc容器来完成,然后注入调用者,因此也称为依赖注入。
具体到分层架构中,依赖注入可以这样理解:当上层类
的需要调用下层类功能时,不再是由上层类直接实例化下层
类,而是通过IoC容器获取一个下层类的实例,然后注入到
上层类中,如图2所示。
注入
Abstract Factory模式是在依赖注入机制中广泛采用的
设计模式,Spring的IoC容器就采用了这个经典模式,它的
中文译名叫做“抽象工厂”,其定义是:提供一个创建一系列
相关或相互依赖对象的接口,而无需指定它们具体的类。
.
Abstract Factory模式虽然可以完成依赖注入的机制的
设计,但是其本身也有缺陷。当层次的实现过多时,整个系
创建
统就会存在很多工厂,这些工厂不仅使代码变得臃肿,也难
以维护。.NET平台上,有一种叫“反射”的机制,利用这种机
图2 IoC耦合
制,可以简化Abstract Factory设计模式的代码,如图3所示。
图3反射工厂结构图
3.4数据访问层实现
一
般情况下,一个数据访问层对应一种数据库或一个数据访问框架。例如,可以为SQLServer、Oracle、MySQL、
DB2等数据库编写一个数据访问层,也可以编写基于NBear或NHibemate的数据访问层,只要它们实现了数据访
问层接口所定义的功能,则可以相互替换,来支持不同的数据库或框架。
数据访问层的职责是与数据源的交互,负责数据的创建、删除、更新及查询工作,并且不包含任何业务逻辑。
因为分层架构要求各层次职责单一且明确,所以,我们设计的数据访问层应该是干净的、只关注于数据的访问。
第6期 薛晓萍等:基于.NET平台的分层架构与设计模式应用研究 ・43・
它包含的操作基本流程应该是:获取参数、根据参数确定操作命令、执行命令、返回结果。
3.5业务逻辑层实现
业务逻辑层负责系统相关业务的实现,在分层架构中起到承上启下的作用。业务逻辑层中凡是需要进行数
据库操作的地方都应该调用数据访问层完成,因此其中不应该包含任何对数据库操作的代码。另外,业务逻辑层
也不应该对数据的呈现形式有任何影响,因为那是表示层的责任。
3.6表现层实现
表现层负责与用户交互。不论你的系统做的多么复杂,表现层的好坏,直接影响用户对系统的影响。如果一
个系统底层做得非常优秀,而表现层非常糟糕的话,一定不可能得到用户的青睐。
除了uI部分,表现层也承担了许多功能性职责,如对用户输入数据的验证,Session的管理以及页面之间的跳
转逻辑等。
4结束语
在企业OA项目的设计和开发过程中,对项目的架构能力有了较深的理解,编码量也有了一个阶段性的扩
充,项目完全采用了面向对象的思想进行开发,很大程度上颠覆了之前的编程习惯和思想。因此,思想的转变是
本次设计中收获最大的地方,通过课题的研究,对企业级项目架构和开发的整体流程、面向对象的设计思想有了
一
个更清楚的认识。
参考文献:
[1]程杰.大话设计模式[M].北京:清华大学出版社,2007:335—366.
[2]温谦.CSS设计彻底研究[M].北京:人民邮电出版社,2008:1—28.
[3]弗里曼(Freeman,E.),等.Head First设计模式[M].中文版.北京:中国电力出版社。2007:1—10
[4]拉曼(Larman,C.).UML和模式应用[M].原书第3版.北京:机械工业出版社,2006:1—21.
[5]特罗尔森.c群与.NET 3.5高级程序设计[M].第4版.北京:人民邮电出版社,2009:5—8.
【责任编辑:吴跃新】
The Applied Research of N--Tier Architecture and Design
Patterns Based on.NET Platform
XUE Xiao—ping,XU Qiang
(Department of Computer Science,Huizhou University,Huizhou 516007,Guangdong China)
Abstract:Science and technology has achieved leapfrog development with the progress of the times.Sharply different from traditional
design model,modelll software industry has marched toward engineerization by gradually eliminating workshop production while system
designers focus more on low coupling,high reliability,maintainability and good extension of the system.By exploring N—Tier architec—
ture and its design patterns,the article presents a better understanding of the enterprise OA design and development,the overall flow of
constructing and developing the enterprise projects and customers—oriented desing conceptions.
Key words:.NET;N—Tier;Software Architecture;Desing Patterns
版权声明:本文标题:基于.NET平台的分层架构与设计模式应用研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1711607024a602047.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论