王飞
【摘要】本文从企业级应用的系统开发现状入手,分析驱动数据库设计方法在Web应用开发中的不足,从而引出模型驱动的领域软件的设计方法,介绍了基于模型驱动的领域软件设计方法的开发模式。
【关键词】模型驱动领域软件开发
在互联网越发重要的今天,人们已经越发的离不开互联网,无论是在工作中还是在日常的生活中,互联网依然占据了人们大部分的时间,而且许多与生活工作相关的应用也都被架构在Web之上。
一、数据库驱动设计方法存在的不足
1.不能有效的反应人们的需求。传统的核心软件开发是一种以关系型数据库为基础进行设计与开发的,这种方式必然导致了软件对需求分析和实现系统的不一致性,也就由此影响了设计院的设计思维和思路。因此采用面向对象的数据库成为了首要选择。
2.运行性能影响。从理论上来说,数据是可以持久化的,只要服务器不停机或者有足够的存储器,那么数据就可以一直在内存中永久的保留下去。因此,在进行软件系统设计之初,设计人员应将重点放在问题域上,而不是对数据库的容量上。
3.导致过程化编程。面向对象程序的设计已经慢慢的被人们所认可与接收,传统的以资料库建木为主要核心的软件开发方法很有可能导致过程化程序的设计,费时费力。因为在对数据库建模的过程中,程序员首先要确定数据库的结构,然后不断的编写SQL语句、存储过程。
4.软件的模型和领域。用户在使用软件中的过程与环境被称为软件的领域,所以软件总是会与用户的兴趣和活动相关。而软件开发的目的就是利用计算机去解决和实现领域的实际问题。模型则是只是的一种简化和有意识的组成,一个合适的模型能够很好的表达出软件的领域。
二、模型驱动设计和领域驱动设计
模型驱动设计是领域驱动设计的基础,但是领域模型不仅仅是一个模型,更包括用来完成业务逻辑的许多元素。领域模型还具有模型所不具有的完成性约束、独有性等特征。
1.领域的构成。一般情况下,领域主要分为实体、值对象、工厂、仓储、服务等五种。实体作为领域的一种必须有自己的唯一的标识;值对象并没有概念性的标识,但是它却可以代表领域中的一种描述特征;工厂则是定义和创建实体的办法,工厂主要的工作就是创建对象,其最主要的特征就是可以屏蔽创建对象的复杂性;仓储较之数据访问对象虽然在概念上大同小异,但在本质上有着一定的区分,具体表现为仓储有“根”的概念,而数据访问对象则没有;服务在一般情况下是没有状态的,只有在被操作时才会出现可以代表领域某些特征的状态。
2.领域驱动设计的系统分层架构。在领域驱动设计的系统中,之前普遍采用的MVC分层架构将会被进一步细化,使得领域模型可以得到隔离(如图1)。
(1)用户界面层(表现层):这一层包括了所有用于服务访问系统的客户端,同时通过拦截客户端的请求,并将其通过单一的登录入口,将其构造层会话管理,并传递到客户端。(2)应用层:这一层并不负责业务逻辑的实现,其主要的工作职责就是定义系统需要完成的工作,并对下面的领域层的工作进行指导和实现业务逻辑工作。(3)领域层:实现全部的业务逻辑工作,是整个业务软件的核心,是重中之重。(4)基础结构层:主要工作职责是发送消息,为领域的持久化和用户页面的窗口绘制等进行工作,此外基础结构层还负责与外部资源、系统的通信。
三、领域驱动设计的优点
利用领域驱动设计方法对系统进行建模和开发的过程中,所产生的优点主要有两点:第一、DDD采用面向对象的思维方式在模型驱动的基础上进行开发,符合人类的自然思维逻辑。第二、采用領域驱动设计出的系统可以充分的利用诸如Net服务器等中间件的分布式集群处理的能力,从而减轻了数据库的载重负担。
四、结束语
通过对软件领域的分析,得到一个领域模型,在领域模型的基础上进行软件的设计与实现工作,通过重构的方法进行领域模型的精化工作。
参考文献
[1]甄镭. .Net与设计模式[M].北京:电子工业出版社,2006
[2]陈大峰,张泽鑫. Eric Evans.领域驱动设计[M].北京:清华大学出版社,2006
[3]汤晨,吴朝晖.一个利用模型驱动体系结构技术的分布式系统实现[J].计算机工程与应用,2003,(33):133-135
[4]王健,王军. WhiteC. xSLT从入门到精通[M].北京:机械出版社,2003