(计算机系统结构专业论文)领域模型驱动的web服务共享平台构建.pdf_第1页
(计算机系统结构专业论文)领域模型驱动的web服务共享平台构建.pdf_第2页
(计算机系统结构专业论文)领域模型驱动的web服务共享平台构建.pdf_第3页
(计算机系统结构专业论文)领域模型驱动的web服务共享平台构建.pdf_第4页
(计算机系统结构专业论文)领域模型驱动的web服务共享平台构建.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

(计算机系统结构专业论文)领域模型驱动的web服务共享平台构建.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连理工大学硕十学位论文 摘要 在对目标领域的软件开发中,是否合理组织领域业务逻辑,对领域模型的建立,以 及代码的设计实现,乃至软件的维护都有重大影响。领域驱动设计( d o m a i n d r i v e n d e s i g n 简称d d d ) 是一种软件设计思想,它摒弃了以数据为中心的原则,转而以领域 中的业务逻辑为中心。d d d 以明确清晰表现领域内的业务逻辑为目标,关注精简的业 务模型及实现的匹配。领域专用语言( d o m a i n s p e c i f i cl a n g u a g e 简称d s l ) 是用于解 决特定领域或者问题域的计算机编程语言,它提供了该领域适合的、固定的抽象概念和 符号,侧重于声明而不是过多的规则和命令。d s l 是领域专家用来描述领域内业务逻辑 的理想语言。 随着电子商务的发展,各个企业都开发了自己的信息系统,但是由于信息资源分散 且规范不统一,形成了很多信息孤岛。企业之间亟需一个服务平台来处理行业供应链上 下游资源的整合。经过资源整合及规范统一,买方和卖方都不再仅仅是买或卖商品,而 成为一个巨大的行业供应链上的一环。 本文针对服装行业商家联盟,结合s o a 技术构建一个w e b 服务共享平台,平台为 纺织服装供应链上的企业提供相应的业务服务。供应链中的企业作为平台服务的需求 者,平台则成为企业的软件资源库。服务共享平台提供了包含产品管理、采购管理、客 户供应商管理、决策支持、安全控制等供应链中的业务流程服务,并将这些服务在供应 链中共享。构建业务服务框架包含以下四个步骤: ( 1 ) 应用d d d 软件设计方法构建领域模型,将重心放在如何处理业务逻辑上。 ( 2 ) 设计描述领域模型的元模型,并且生成领域模型的x m l 表达方式。 ( 3 ) 将领域模型的x m l 表达方式映射为w e b 服务软件工厂下的x m l 语法规则。 ( 4 ) 细化领域模型服务,并通过w e b 服务软件工厂为平台自动生成服务框架。 以领域模型为主导构建服装行业的服务共享平台的意义在于一方面让企业软件快 速应对变化的业务,另一方面促进了整个供应链的资源整合,统一行业的应用程序服务 规范。 关键词:领域驱动设计;领域专用语言;w e b 服务;模型驱动 大连理工大学硕士学位论文 t h ec o n s t r u c t i o no fd o m a i nb u s i n e s sw e bs e r v i c es h a r i n gp l a t f o r m d r i v e nb yd o m a i nm o d e l a bs t r a c t d o m a i nm e a n sa l li n d u s t r yi nar e a lw o r l d d u r i n gt h es o f t w a r ed e v e l o p m e n ti nac e r t a i n d o m a i n ,t h ek e yp o i n ti sw e a t h e ry o uh a v eo r g a n i z et h eb u s i n e s sl o g i cw e l l ,i tw e l lh a v eag r e a t i n f l u e n c et ot h eb u i l d i n go ft h ed o m a i nm o d e l ,t ot h ed e s i g no fp r o g r a m m i n g ,e v e nt ot h e m a i n t e n a n c eo ft h es o f t w a r e d o m a i n d r i v e nd e s i g ni sap h i l o s o p h yw h o s ef o c u si st h e i n t r i c a c i e so f t h ed o m a i na n dt h e o b j e c ti st om a k et h e s ei n t r i c a c i e se x p l i c i ti nt h ed o m a i nm o d e l a d o m a i n - s p e c i f i cl a n g u a g ei sap r o g r a m m i n gl a n g u a g eo rs p e c i f i c a t i o nl a n g u a g ed e d i c a t e dt o ap a r t i c u l a rp r o b l e md o m a i n ,ap a r t i c u l a rp r o b l e mr e p r e s e n t a t i o nt e c h n i q u e i tp r o v i d e sa s u i t a b l e ,f i x e d ,a b s t r a c t i o nc o n c e p t sa n ds y m b o l s ,f o c u s e do nd e c l a r er a t h e rt h a nr u l e so r c o m m a n d s d s li sad e s c r i p t i o no ft h ef i e l do f b u s i n e s sl o g i co ft h ei d e a ll a n g u a g e a st h ed e v e l o p m e n to fe - b u s i n e s s ,e n t e r p r i s e sh a v et oi n t e g r a t er e s o u r c e sw i t hp a r t n e r s , e s p e c i a l l yt h er e s o u r c e sa r o u n dt h es u p p l yc h a i n t h e ya r en ol o n g e rb u y e ro rs e l l e rb u ta l la m e m b e ri nt h eh u g es u p p l yc h a i n ,a n dw o r kt o g e t h e rw i t he a c ho t h e r t h i st h e s i sc o n s t r u c t saw e bs e r v i c es h a r i n gp l a t f o r mf o rt h eu n i o no fc l o t h i n gi nt h e c l o t h i n gs u p p l yc h a i n t h ee n t e r p r i s e sa r o u n dt h es u p p l yc h a i na p p l yt h es e r v i c ei nt h e p l a t f o r m ,w h i c ha c t sa sas o f t - w a r el i b r a r y t h e r ea r ep r o d u c tm a n a g e m e n t ,p r o c u r e m a n a g e m e n t , c u s t o m e r r e l a t i o n s h i p m a n a g e m e n t ,s u p p l i e r sm a n a g e m e n t ,d e c i s i o ns u p p o r t ,s e c u r i t yc o n t r o ls u b s y s t e m so nt h e p l a t f o r m t h es e r v i c e sa r es h a r i n ga r o u n dt h es u p p l yc h a i nb u s i n e s s t h e r ea r ef o u rs t e p st o a c h i e v et h ew h o l e p r o j e c t : ( 1 ) f o c u so nt h ed o m a i nl o g i c ,a p p l yd d d t od e s i g nt h ed o m a i nm o d e l ( 2 ) d e s i g nam e t am o d e lt od e s c r i b et h ed o m a i nm o d e l ,a n dg e n e r a t et h ex m ls t y l eo f t h ed o m a i nm o d e l ( 3 ) m a p p i n gt h ex m ls t y l eo fd o m a i nm o d e lt ot h ex m ls t y l eo fw e bs e r v i c es o f b , v a r e f a c t o r ys e r v i c em o d e l ( 4 ) r e f i n et h ed o m a i ns e r v i c em o d e l ,a n dg e n e r a t es e r v i c ef r a m e w o r ka u t o m a t i c a l l yb y w e bs e r v i c es o f t w a r ef a c t o r y t h a ti st os a yt h ec o n s t r u c t i o no ft h ec l o t h i n gs u p p l yc h a i ns e r v i c es h a r i n gp l a t f o r mh a v e ag r a t ei n f l u e n c et o i n t e g r a t et h er e s o u r c ea n du n i f o r mt h ea p p l i c a t i o ns e r v i c ea p p l y i n g s t a n d a r d i tc a nn o to n l ya l l o ws u p p l i e r sa n db u y e r sh a v et h eo p p o r t u n i t yt ob ec l o s e r 、析t h e a c ho t h e rb u ta l s oa c c e l e r a t et h ef l o wo fr e s o u r c e st h r o u g ht h es u p p l yc h a i na n de n h a n c et h e 领域模型驱动的w e b 服务共享平台构建 p r o d u c t i o ne f f i c i e n c y , a n dt h em o s ti m p o r t a n t i st h a ti tw o u l dt a c k l i n gc o m p l e x i t yi nt h eh e a r t o ft h ee n t e r p r i s es o f t w a r e k e yw o r d s - d o m a i n d r i v e nd e s i g n ;d o m a i n - - s p e c i f i cl a n g u a g e ;w e bs e r v i c e ;m o d e l d r i v e n i v 大连理工大学学位论文独创性声明 作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究 工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外, 本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请 学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献 均已在论文中做了明确的说明并表示了谢意。 若有不实之处,本人愿意承担相关法律责任。 学位论文题目:缬珐槿型躯拗的础醴刍搀赶鱼j 醴 作者签名:因 茑- 譬一日期:斗年月卫日 大连理丁大学硕十学位论文 大连理工大学学位论文版权使用授权书 本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间 论文工作的知识产权属于大连理工大学,允许论文被查阅和借阅。学校有 权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将 本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印、或扫描等复制手段保存和汇编本学位论文。 学位论文题目:塑垴趔医盐缅逊醒壹蕴赶盘垫建 作者签名: 盘盔壹日期:兰咀年上月三生日 导师签名: 萄譬日期:兰4 年丘月卫日 大连理工人学硕士学位论文 1 绪论 1 1 研究背景与意义 企业中的业务操作并不是一层不变的,因此为企业服务的软件系统也必须经常作一 些业务上的调整。这要求企业应用软件能用最小代价来实现业务变化,这对应用程序架 构设计提出了更高的要求【1 1 ,如何能及时有效地将变化的业务需求转换为企业应用程序 成为重中之重。 在软件开发中,领域专家与软件开发人员之间存在着一些隔阂,其根源在于领域专 家与软件开发人员有着两种截然不同的语言。领域专家精通实际业务,软件开发人员则 采用面向对象的思维,习惯用类图描述业务,从而造成了交流障碍,导致业务人员很难 把需求用软件开发人员容易明白的方式表述出来。同时软件开发部门不得不一次又一次 重写原来的应用来实现新的业务需求。历史上为此出现了诸如软件工程、r u p 等系统化 软件开发模型【2 1 ,但是这些方法主要针对的是单个独立的软件系统的开发,而没有从一 个企业架构的高度来解决这个问题,于是企业花费在软件开发后期维护上的费用与日俱 增。 d d d 软件设计方法以业务逻辑为核心,构建领域模型,专注领域的模型构建与代 码匹配 1 1 。领域专家和开发人员使用统一协作语言编程,消除隔阂。d s l 就是一种很好 的描述复杂领域的领域专用语言,应用d s l 进行领域建模,将模型作为领域专家和软 件开发人员交流的语言。d d d 是复杂领域软件开发必须考虑的一种软件设计方法。 随着互联网技术的普及以及经济全球化进程的加剧,电子商务迅猛发展,b 2 b 、b 2 c 电子商务模式日渐成熟,其缺点也逐渐显示出来。资源零散且没有针对性,缺乏统一的 服务标准规范,需要强大的技术支持和资金【3 】。由此下一代的公共服务平台应运而生, 公共服务平台将产品供应链中的企业组合成联盟,整合行业供应链上下游资源,买方和 卖方都不再仅仅是买或卖商品,而是一个巨大的需求和供应链上的一环,企业在交易伙 伴中间提供整个业务流程的合作和交互。但是目前还没有一个成熟的软件构架支持公共 服务平台。 本文作者所在的实习公司下属一个服装公司,研究发现服装企业大多是中小企业, 区域化集中的产业集群现象明显,因此急需一个专业化的公共平台。本文结合需求提出 了构建服装行业服务共享平台的软件开发方法。应用d d d 软件设计思想,采用d s l 描 述领域模型,并将领域服务模型自动生成为w e b 服务框架。服务共享平台为服装行业 领域模型驱动的w e b 服务共享平台构建 供应链中的企业提供业务服务,统一行业的应用程序服务规范,促进了整个供应链的资 源整合。 1 。2国内外研究现状 2 0 0 4 年建模专家e r i ce v a n s 出版了文献,在该书中e r i ce v a n s 叙述了当前企业复 杂业务开发的弊端,提出了d d d 的基本思想及前提和基础并结合很多实例系统阐述指 导软件开发人员做好业务层,设计合适的软件框架。倡导单一模型同时满足分析原型和 软件设计。d d d 发展到现在已经出现了多个d d d 开发框架,如r o r ,r i f e ,j d o n f r a m e w o r k 【4 】等。 2 0 0 6 年j i m m yn i l s s o n 发表了文献 5 】,展示了在n e t 项目中应用d d d 、o r m ( o b j e c t r e l a t i o n a lm a p p i n g 对象关系映射) 、模式技术进行软件开发。该书让开发人 员看到了构造项目中的实例,也领略到了如何在n e t 平台施展d d d 等相关开发方法进 行项目开发。 文献 6 8 】论述了挪威国家石油公司构建下一代原油交易和供油链的项目中,应用 d d d 开发技术及提供的一系列策略结合敏捷技术并取得良好效果。文献证明在复杂领 域中应用d d d 是一个很好的选择。 文献 9 】是m a r t i nf o w l e r 关于d s l 的研究,文献中对于内部d s l 和外部d s l 及代 码自动生成都作了相关研究,举例说明如何选择并应用合适的d s l 。就已有的几个比较 好的d s l 工具作了介绍。说明d s l 给企业软件开发带来的极大突破,并指出d s l 的下 一个发展方向就是语言工作台( w o r kb e n c h e s ) 。 文献 1 0 介绍了微软发布的w e b 服务软件工厂( w e bs e r v i c es o t t w a r ef a c t o r y 简称 w s s f ) 的基本功能,w s s f 是一种语言工作台,延伸了d s l 的功能。实现了服务模型 构建及代码的自动生成。 文献 1 1 论述了从业务逻辑中提炼服务,并应用w e b 服务软件工厂( w e bs e r v i c e s o f t w a r ef a c t o r y 简称w s s f ) 自动生成服务框架,表明以w e b 服务的方式向外提供自 动生成服务具有可行性。 1 3 文章工作组织 论文的结构组织如下: 第一章主要介绍本文研究的背景及意义,领域驱动设计与领域专用语言的国内外研 究现状和本文的组织结构。 第二章介绍领域驱动设计和领域专用语言的理论基础和基本概念。主要介绍领域驱 动设计的前提与基石,以及与传统m v c 软件开发的区别。介绍了领域专用语言的分类 大连理工大学硕士学位论文 和流行的实现工具,以及如何应用这些实现工具。 第三章介绍s o a 与w e b 服务。主要介绍s o a 的概念、通用模型和构建规则,并 介绍了作为s o a 的主要实现方法- w e b 服务。介绍w e b 服务的定义,构建w e b 服 务的方法,实现w e b 服务的平台。 第四章构建领域服务模型并自动生成服务框架。本章设计并应用d s l 描述领域模 型,首先应用d s lt o o l s 设计适合于服装领域服务的d s l 。通过设计完成的d s l 描述 服装领域服务模型,并转化为x m l 表现形式。将应用d s l 构建的领域服务模型x m l 表达方式映射成为w s s f 定义的x m l 语法。最终由w s s f 生成服务框架。 第五章将构建的领域服务模型应用于服装供应链的服务共享平台。设计并实现服务 共享平台。 领域模型驱动的w e b 服务共享平台构建 2 领域驱动设计 2 1d d d 概述 d d d 是应用于复杂领域业务逻辑的软件开发方法,以敏捷开发为手段,以模型驱动 设计为根基,以软件领域为着眼点。应用d d d 可以快速应对软件开发中的变化。d d d 的核心是建立一个单一的既符合软件所处领域本身又适合软件分析开发需要的领域模 型【1 2 , 1 3 】。d d d 摒弃了以数据为中心的思想,转而以领域中的业务逻辑为中心。领域专 家与编程人员在软件开发全程协同合作,共同制定对象模型,共同完成编码和重构,让 领域实际业务在程序中直观地体现出来。 2 1 1 d d d 的前提与基石 d d d 的前提包括两点【l 】: ( 1 ) 对于多大数软件项目,主要的焦点应该在领域及领域逻辑方面。软件的分析 设计与实现过程中,应该始终把描述领域、表达领域、实现领域放在第一位,而那些与 领域关系不大的问题,比如对象的持久化,对象的界面显示等问题应该放在次要位置, 至少在分析与设计阶段尤应如此。 ( 2 ) 复杂的领域设计应该基于模型。在d d d 的过程中,需要一个展示复杂领域 知识的平台,这个平台就是模型,通过对领域知识的不断获取与升华,模型也逐渐趋向 领域本身,成为领域在代码上的映射。 d d d 的基石是统一协作语言( u b i q u i t o u sl a n g u a g e ) 1 l 。领域驱动设计关注领域的 业务逻辑,业务逻辑的分析与理解需要领域专家和软件开发人员共同参与。由于参与人 员都有各自的术语,为了保证他们之间能顺利交流,必须提供一种通用语言来消除不同 的表达方式,统一表达方法。 d d d 将模型作为统一协作语言,作为开发人员领域专家之间的交流工具。这样就 不可避免的需要对领域业务建模,模型真实反映领域业务,并且使最终产物代码真正反 映领域。一般的建模方法并不能真正满足这个需求,模型设计之初并没有考虑到程序代 码和设计,当开发人员开始实现应用程序时,可能发现模型的某些设计无法转换成实际 的代码,模型并没有提供对实现的指导。d d d 提倡一个模型不仅仅能帮助早期的分析 人员,并且可以作为设计的基础,这种方法要求对代码有重要的暗示作用。模型驱动设 计方法恰好满足了需求【”】,模型驱动设计将代码与作为基础的模型紧密关联,使代码具 有含义并使模型起到相关作用。在代码设计细节中若发现模型设计有所偏差,则重构模 型,以保持模型一致性。 大连理t 大学硕士学位论文 2 1 2d d d 与重构 前面已经讨论了创建和表现领域模型的重要性,所以代码设计应该围绕模型展开, 模型自身也会基于设计决定而有所增进。模型并不是一经设计就能深刻反映代码以及反 映领域的,为了保持模型与领域的一致性,模型需要进行迭代的设计和重构。 重构是不改变应用行为而重新设计代码以让它更好的过程【1 4 1 。重构通常是非常谨慎 的,按照小幅且可控的步骤进行,这样我们就不会破坏功能或者引入某些b u g 了。毕竟, 重构的目的是让代码更好而不是更坏。自动化测试可以为我们确保未破坏任何事情提供 很大的帮助。代码重构有很多种方式,甚至存在重构模式。这些模式描述了一个重构的 自动化方法。有些基于这些模式的工具可以让开发人员的生活比以前更容易,缺少了那 些工具的支持,重构起来会非常困难。 这类重构更多处理的是代码和它的质量。还有另一种类型的重构,跟领域和它的模 型相关。有时会对领域有新的理解,有些事物变得更清晰,或者两个元素间的关系被发 现。所有的这些会通过重构被包括到设计中。让拥有表现力的代码更易读和理解是非常 重要的。通过阅读代码,我们可能不光了解代码是什么,同时了解它为什么要这样。只 有这样才能让代码真正捕获模型的主旨。 基于模式的技术性重构,可以被组织并结构化,但是面向更深层理解不能按照同样 的方式进行。我们不能为它创建模式。模型的复杂性和模型的多变性不可能提供让我们 按照机械化的方式进行建模的方式。一个好的模型产生于深层的思考、理解、经验和才 能。传统建模方法认为建模的第一件事是阅读业务规范,从中寻找名词和动词。名词被 转换成类,而动词则成为方法。这是一种简化,将产生浅层次的模型。所有的模型开始 时都缺乏深度,但我们可以面向越来越深的理解来重构模型。设计必须灵活,僵硬的设 计很难做重构。头脑中若没有对代码建立灵活性的概念,那么这样的代码就会很难维护。 当需要发生变化时,代码并没有你所想象的那样容易变动,会在原本应该很容易重构的 事情上花费很多的时间。 使用经过验证的基础构造元素并使用一致的语言将给开发工作带来成效。这会减少 不良模型所带来的挑战,我们可以捕获到领域专家非常关心的内容,并且以此来驱动实 际的设计。一个忽略表面内容且捕捉到本质内涵的模型是一个深层模型。这会让软件更 加和领域专家的思路合拍,也更能满足用户的需要。 从传统意义上讲,重构描述的是基于技术动机的代码转换。重构同样可以由对领域 的深入理解,以及对模型及其代码表达进行相应的精化所推动。只有使用迭代的重构过 程,再加上领域专家和开发人员一起密切关注对领域的学习,才能成功构建出一个极其 复杂的领域模式。 斑城模1 4 驱动的w e b 服务共享平台构建 213d d d 与传统w c 软件开发的区别 软件架构是系统的草图,控制着软件的全局,主导着,i :发活动的组织和实施。软件 1 r 【:发人员迫剀需要将实现技术和代码表达的逻辑业务区分丹来,实现更大的灵活性。企 业模型分层的概念被提出,典型的分层有三层结构和四层结构【l ”,表现层、业务逻辑层、 持久崖组成了= - 层结构,把业务逻辑层再坌l l | 分为控制层和领域模型层就成为| j 【】层软件体 系结构。咀四层结构的传统软件丌发的举例,每个新的业务概念都必颁在叫个地方被涉 搜,一次业务处砰i 能会在层问穿越多次,如图21 左传统m v c 发方式,从上至下 依次为,表现层、摔制层、领域模刑层、持久层,虽然屡模式使得层i n j 调用灵活,f 日是 恰恰导致渊j _ | 关系复杂,小易管理小易维护。 隧艇鲴霉函嗣豳i 鳓:竺鞫釜璺l 豳圈鞫辫圈 2 - - - - = ;蔷舞i 舞罐, 攀: , = ;篁= =“_=盘撵 4 辩 嘲21 传统m v c 开发方式与钡域驱动开发方式 f i g2i t r a d i t i o n a l m v cd e v e l o p m e n t v sd o m a i n - d n v e nd e v e l o p m e t l t 幽21 五持久层中的数据表支持关系型数据理沦,而领域层巾的领域对象支持埘象 理论两者之间的理论基础小例小共有町兼容性【l “,这叫可以在对象和关系数据库之f n j 建立桥梁,即应用对蒙关系映射( o b j e c t - r e l a t e dm a p p i n g 简称为o r m ) 技术。对象到 荚系型数据转换交由o r m 持久层完成。凶此持久层巾的数据表j 眵式完全以用对象柬 代替,根据领域对象可以自动制定持久化对象。图2 1 右为应用d d d 的软件卅发方式。 在数据存储上图21 右应用了o r m 技术,持久层中保存持久化对象,持久化对象可以 由t 层的领域对象直接生成,也可以手动定制。 秤恃久层卜立u 何完成对琢的有序规范调度是更值得关注的内容。首先d d d 构造真 实宽整体现领域的领域到蒙i ”】,并将所有的业务逻辑封装在帽麻的领域对象内。其次麻 川聚合方法封装实体和值对象,聚台是一个用柬定义对雾所有权和边界的领域模式j 。 一个模型会包含众多的领域对象,对象间容易形成复杂的关系网。客户和用它名字歼立 的银行账户之日j 存在的一个1 对l 的关系会被表现为两个对象之间的引州,并且在两个 大连理t 大学硕士学位论文 数据库表中隐含着一个关联关系,一个表存放客户信息,另一个表存放账户信息。然而 对于模型而言,通常不让它们尽量完整,而是尽量地简单和容易理解。这意味着,直到 模型中嵌入了对领域业务的深层理解,否则就要时常对模型中的关系进行消减和简化。 聚合是针对数据变化可以考虑成一个单元的一组相关的对象。聚合使用边界将内部和外 部的对象划分开来,每个聚合有一个根。这个根是一个实体,并且它是外部可以访问的 唯一的对象。根可以保持对任意聚合对象的引用,并且其他的对象可以持有任意其他的 对象,但一个外部对象只能持有根对象的引用。如果边界内有其他的实体,那些实体的 标识符是本地化的,只在聚合内有意义。因此d d d 可以使数据操作集中在一个或者几 个聚合内由根往下执行,控制了程序执行的流程。 d d d 的软件设计方法更贴近领域现实,具体事务由对象主导,而对象又包括数据 和行为【1 2 1 ,认为对象更适合用来主导业务而不是为过程来存储数据。这是面向对象编程 原则的回归。 2 2d s l 领域专用语言( d o m a i n s p e c i f i cl a n g u a g e ) ,也译为领域特定语言,顾名思义,是 面向特定领域的一种特化的语言,它提供了该领域合适的、固定的抽象概念和符号。其 基本思想是“求专不求全 ,不像通用目的语言那样目标范围涵盖一切软件问题,而是 专门针对某一特定问题的计算机语言【9 】。 d s l 提供了该领域合适的、固定的抽象概念和符号。d s l 通常比较小,侧重于声明 而不是过多的规则或命令,并且比通用目标语言g p l ( g e n e r a lp u r p o s el a n g u a g e ) ,如 c 、c + + 、j a v a 等的表达能力要差。比如,d s l 不能操纵复杂的数据结构。所以领域专 用语言也曾被称为应用领域语言、“小 语言或宏语言,与脚本语言紧密相关。像s q l 、 u n i xs h e l l s 、m a k e f i l e s 等可以视为领域专用语言。 由于d s l 在领域级别上的高度抽象性,使得用d s l 更易于编程、易于验证,提高 了产品的生产力、可靠性、可维护性和可移植性,并且可以实现系统级的重用。d s l 发 展的终极目标就是,要让不懂通用编程语言的领域专家也能通过应用d s l 描述领域业 务逻辑。虽然从形式上看d s l 和“整洁的代码 都具有简洁清晰的特征,但并不能因 此将简单将两者草率地归为等同。从概念上说,程序的编写过程就是把业务领域中的问 题通过代码或者程序模型表达出来。 2 2 1 d s l 与通用语言的区别 d s l 与普通语言的区别在于: 领域模型驱动的w e b 服务共享平台构建 ( 1 ) d s l 更多的是表述特定问题域,但编程语言不是面向特定的问题域的,而是 面向一般问题域。d s l 中关于问题域的名词是关键字,而编程语言不是。对于保险行业 来说:代理人,保单都是d s l 中的关键字,而在编程语言中不是,在o o 语言中需要 建立起保单对象。同时注意:o o 追求的是一个细粒度的设计,而在d s l 中可以是相对 的一个粗粒度的概念。d s l 中对象体系的观念并不直接。 ( 2 ) d s l 不处理编程语言中所涉及到的技术问题。 ( 3 ) d s l 是针对一个领域问题域的过程化叙述,d s l 基于特定问题域的概念或者 符号,给出一个特定问题的流程。 2 2 2d s l 分类 d s l 大体可以分为两类,内部d s l 和外部d s l 9 1 。 ( 1 )内部d s l 内部d s l 可以直接嵌入到编程语言中,应用通用编程语言例如c 撑、j a v a 等来实现 设计d s l ,内部d s l 可以应用编程平台的所有工具编译器。 内部d s l 也有它明显的缺点。首先因为它受限于通用编程语言的语法和结构,设 计内部d s l 的人员必须对某种编程语言掌握熟练,但是d s l 存在的意义就是可以让不 熟悉编程语言的人也能够进行领域内业务逻辑的描述。其次内部d s l 又限制了对领域 描述的发挥,因为任何一个表达式必须符合编程语言的表达规范。 ( 2 ) 外部d s l 外部d s l 就是应用任何可以使用的语言,将领域内的知识描述出来,它的好处是 外部d s l 不受拘束,形式自由,不受主流编程语言的限制,另外它也通常是运行时解 释的。 然而其缺点也很明显。首先它需要花很多时间去设计语言,写编译工具,写代码生 成工具以及集成开发环境。其次需要学太多语言和思维方式,因为在面向对象编程中我 们已经习惯了用对象和方法来表达思想,但在其他d s l 里则可能要运用完全不同的概 念。 2 2 3d s l 实现工具 当前为领域专家设计d s l 的主流工具有以下两个: ( 1 )m p s m p s 是2 0 0 7 年底j e t b r a i n s 发布的一个让专业软件开发人员创新的自定义语言,扩 充现有的语言,已及使用这些语言来开发程序的环境 1 8 】。作为一个用于创建d s l 的工 具,可以让对编程不熟悉的领域专业人士轻松通过使用m p s 创建d s l 。m p s 的主要 大连理工大学硕士学位论文 任务是尽可能简单地支持新语言的创建以及现有语言的扩充。其先进的功能支持对语言 型态系统、限制性因素以及专用编辑器进行定义,创建功能强大而易于使用的编程语言。 m p s 使用一种生成方法:在更高层面上描述语言,m p s 以及其他语言,尤其是j a v a 语 言,生成可编译的代码。 m p s 提供的软件开发环境可以创建新的定制语言,也可以扩展现有语言,然后用它 们开发面向领域的应用。m p s 还可以定义新语言的类型系统、约束和专门的编辑器。 m p s 用一棵抽象句法树( a s t ) 来维护代码。a s t 由节点组成,节点又包含属性、子节 点和引用,程序代码就靠a s t 和这些节点完整地表达出来。创建新语言的时候,开发 者定义代码编排和表达的规则,还可以规定语言类型系统的组成元素。m p s 凭借这些规 则即时检查程序代码,减少用新语言编程的出错机会。m p s 还采用了代码生成的办法: 用新语言在更高的层次上表达,然后m p s 生成j a v a 、x m l 、h t m l 、j a v a s c r i p t 等语言 的可编译代码。用m p s 建立新语言的时候,必须从主语言扩展。m p s 已经提供了一些 常用的主语言扩展,协助开发者处理字符串、容器、日期、正则表达式等语言成分。 ( 2 ) d s lt o o l s 2 0 0 5 年微软发布了的d s l t o o l s 实现建模工具设计。d s l t o o l s 秉承了模型驱动架 构的设计理念【l5 1 ,通过定义元模型( m e t a - m o d e l ) 的方式来实现特定领域模型的建模工 具。元模型描述了实际模型的元素之间的关系,相当于定义了模型的结构。d s lt o o l s 具有可视化的元模型设计界面【1 9 1 ,定义了实际模型的结构。当元模型被运行的时候, d s lt o o l s 会自动生成一个领域模型建模工具的环境。通过它可以按照元模型中定义的 结构来建立实际模型,同时它将模型以x m l 文档格式存储,这就便于设计程序来读入 这个文件,对模型进行分析,如图2 2 所示。 文章后续章节中应用d s lt o o l s 作为实现建模工具,其中最重要的原因,是因为通 过它与n e t 能融合在起,可以使用应用d s l 设计得到的x m l 能在n e t 平台中作更多 的处理。 d s lt o o l s 使得建模过程可视化。通过d s lt o o l s 实现的建模工具利用了v i s u a l s t u d i o 的外壳,设计人员可以很方便地从工具箱中拖拽需要的模型元素,其可视化的操 作方式将是建模过程变得简单而有趣,而且模型的表现方式也更为直观,模型可扩展性 极强。 d s lt o o l s 采用m d a 提倡的基于模型驱动的设计方法,建模工具其实是元模型驱 动方法,当模型根据需要发生变化时,只需相应地修改元模型,再重新编译执行,就可 以得到新的建模工具,这样领域模型就可以被设计实现。通过d s lt o o l s 设计的建模工 具将模型以x m l 文档格式储存,x m l 以其语义丰富灵活与结构严谨而著称,易于应用 领域模型驱动的w e b 服务共享平台构建 程序的处理和分析。 模型设计者 图2 2d s l 建模工具开发 f i g 2 2 d s lm o d e l i n gt o o l sd e v e l o p m e n t 员 d s l 也使得服务生成具备可能性,x m l 存储格式也使得通过程序来分析模型成为 可能,让服务生成得以自动化进行。另外,微软的w s s f 也使用d s lt o o l s 来描绘服务 模型f 1 0 t ,d s l 成为了连接d d d 与s o a 的一座桥梁。 2 2 4 应用d s l 实现工具 通过d s lt o o l s 来设计领域建模工具的过程,其实就是建立领域元模型的过程。d s l t o o l s 中设定的最简单的元模型设计中有两个主要的元素:实体和关系。实体代表了领 域模型中的一系列模型元素,而关系则描述实体之间的关联。元模型关系可以预先定义 为如u m l 的引用、继承等,也可以直接定义为关联关系,后期由软件开发人员来具体 指定关系,使得领域专家更易上手。 下面举一个例子来说明d s lt o o l s 中的建立元模型过程。譬如一个家族树( f a m i l y t r e e ) 模型,用来为一个家族的族谱建模。那么这里最重要的模型元素就是人( p e r s o n ) , 人必须具备出生年份、死亡年份等属性;人与人之间在族谱方面需要建模的关系就是父 母关系,表示一个人是否为另一个人的父或母。另外,d s lt o o l s 规定元模型必须有一 个根节点,一般就用模型名称命名,最终这个家族树元模型就如图2 3 所示。 大连理工大学硕士学位论文 卜黑;。i l 枷”唧州f 雾等圆p o r l i 兰竺竺型| 。釜:誊。;i 图23d s lt o o l s 中建立的家族树元模型 f i g2 3f a m i l y h 臂m e h - m o d e d e f i a e d i n d s l t o o l s 领域模犁驱动的w e b 服务共享平台构建 3 面向服务架构( s o a ) 3 1s o a 理论基础 s o a 无疑是当前信息技术领域中的热门话题,它最初由i t 行业分析公司g a r t n e r 在1 9 9 6 年提出。g a r t n e r 认为s o a 将成为创建和交付软件的主导框架,同时预测到2 0 1 0 年时,应用软件收入增长的8 0 将来自基于s o a 的方案,尽管如此,s o a 在很多用户 心目中还是一个眩目的困惑。 在具体阐述s o a 之前,让我们先讨论一下什么是服务,以及它与业务的关系。服 务的概念缘起于业务领域,例如一家银行的运作涉及了向客户提供分门别类的各种服 务,包括开户、存款以及贷款等。以开户业务为例,客户可能会被问及许多具体的细节, 例如个人信息、开户种类等等,由职员将这些信息填入表格并输入系统,最后打印出来 由客户确认并签名完成服务流程。这些服务表面上看是由银行相关职员向客户提供,事 实上该服务涉及的所有信息的处理都在后台系统中完成,职员相当于扮演了系统与客户 之间的界面,所以也可以认为是由i t 系统对客户进行了服务,i t 服务和业务服务由此 具有了良好的一致性【2 0 】。 对象管理组织( o m g ) 这样定义1 1 r 服务:服务提供了一种机制,允许通过预定义 的接口访问一组功能,同时确保服务描述中规定的约束和政策得到满足。 服务同组件一样,它提供了独立的构建模块,这些模块共同代表业务应用程序环境。 服务是明确定义的、独立的工作单位,不依赖于上下文或其它服务的声明,由服务提供 者执行来完成服务客户所需的最终结果。提供者及客户都通过代表他们自己的软件组件 来承担职责。使用s o a ,所有的业务任务或流程都可以被设计并作为互联网( 或其它任 何网络) 上使用的服务来构建【2 1 1 。服务的高明之处在于,复杂的服务应用程序可以由 若干个服务组合而成,例如一个转账服务程序可以通过组合一个提款服务和一个存款服 务来实现。 在s o a 环境中,服务应当有明确的功能范围和边界,如果一个服务包含的功能太 多,势必降低整个架构的可重用度:而如果服务的功能过于单一,那么就会因为过多的 服务间消息传递而降低整体效率。所以确定一个合适的服务粒度至关重要,对此并没有 放诸四海皆准的原则,需要通过分析实际的业务需求来定义。每个服务在s o a 中不仅 是一个功能的集合,同时也包含了数据和执行环境等要素,这是为了确保服务的自治性, 服务可以独立运行,而不是必须依附于其他进程,这构成了“模块化高度封装”这一 s o a 的基本特征,也是它区别于过去的c o r b a 和c o m 等构件技术的一个基本特征。 大连理工大学硕士学位论文 另外由于服务具有了自治性,就可以更完善地贯彻分布式计算的思想,将服务根据各自 的职能以及所处的地域分散到不同的主机上,而不必把所有服务集中在一台或几台服务 器上,如此可以有效地实现负载平衡并提高系统效率,这就是s o a 提倡的“松散耦合 部署 。 s o a 并不只是一个由服务组成的架构那么简单,它同时也是一种定义和设计i t 架 构的方法,使得基于不同操作系统平台和程序设计语言的应用能够交互协作来实现业务 流程。为了达到这样的互操作性,服务的接口与实现就必须分开,通过在接口层面进行 统一规范的描述,把涉及实现的具体细节屏蔽掉,就可以允许基于不同平台的服务互相 调用,这不啻为一个简单而行之有效的方法。对于每一个服务,其他服务和应用程序只 需要知道它提供的功能是什么,以及如何正确地调用这些功能,而不必关心它究竟是如 何实现的。这也正如同现实中的服务,比如去理发店接受理发的服务,通常顾客只关心 理完发时发型是否满意,而不在意理发师是如何把他的头发弄成这样的。 其实将接口与实现分离的策略,早在j 2 e e 、c o r b a 和c o m 等中间件技术中就已 采纳,但当时每种技术都定义了各自的接口描述方式,如j 2 e e 的j a v ab e a n s 和c o m 的 d l l ,这样就使得跨越多种技术的互相调用变得非常艰难。如果能够使用统一的接口描 述方式,那么不同平台和语言下实现的服务就能够解释其他服务提供的接口,进而进行 访问,这就是w e b 服务技术的核心思想。在w 3 c 组织和几家巨型软件服务提供商( 如 微软、i b m 等) 的共同努力下,w s d l ( w e bs e r v i c e sd e s c r i p t i o nl a n g u a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论