面向XML的领域建模设计
面向XML的领域建模设计
面向XML的领域建模设计
在领域驱动设计(DDD:Domain Driven Design)中,实现业务逻辑层主要有三种模式:Transaction Script、Domain Module和Table Module。随着业务逻辑复杂程度的增加,采用各模式实现的工作量变化趋势有所不同;根据应用特点,三种模式也各有优势:
1、Transaction Script:业务逻辑直接用SQL脚本与数据库交互,实现简单,但是限于SQL面向过程化的特点,完成复杂业务逻辑时工作量较大。
2、Domain Module:将业务数据封装为业务对象,适于业务逻辑复杂的应用,但需要O/R映射的支持。
3、Table Module:将业务数据组织成数据表方式,虽然对象化特征不如Domain Module明显,但适于展现层使用。
应用建设初期选择的实现模式随着业务需求和历史数据量的变化可能需要进行调整,此时要增加一个适应性机制,保证在尽量不影响客户程序的前提下,选择合适的实现模式。随着XML数据使用日趋广泛,须借助XPath、XQuery和XSL
为层次型数据增加专门的扩展机制,使得基于XML数据源的业务逻辑也可以采用上述三种模式实现。
概要设计
整体逻辑结构
总体适配机制如下:
面向XML的领域建模设计
为业务服务增加抽象接口IDomainService,客户程序通过DomainServiceFactory获得该抽象接口,这样客户程序不依赖于具体的业务服务实体类,仅依赖于抽象的服务接口,当下层实现模式调整时,不影响客户程序;为了让框架可以同时适应关系数据库和XML数据,增加了抽象接口IDataSource,代表不同的数据源对象;IDataMapper负责根据不同的数据源,完成关系数据或XML数据与业务对象的映射;为了减少 DomainServiceFactory 与具体业务服务对象产生依赖,增加配置管理对象ConfigManager,由它获取指定的业务服务的实体类名称,并通过反射机制动态生成目标实例。
性能改进
由于业务实体经常会对应到具有Master-Detail关系的多个表,而且有些复杂业务实体本身会包含一组或几组其它业务实体,出于性能考虑,为了避免IDataMapper在映射过程中频繁调用数据源逐个生成子业务实体,需要在IDataMapper与数据源之间增加一个DTO(Data Transfer Object)对象IDataTransferObject,通过将调用打包的办法,减少频繁的远程调用。
详细设计
面向XML的领域建模设计
面向关系数据库的业务服务设计
为了将业务实体纳入适配机制的管理,依据依赖倒置原则,先对各模式实现的业务实体进行抽象。
为每种模式实现的业务对象抽象独立接口,并编写对应的关系数据库实现类;Domain Module需要调度数据映射和DTO进行关系数据与业务实体的映射;增加抽象基类DomainModuleBase,通过调用IDataMapper和 IDataTransferObject 完成数据提取和映射工作。
面向XML数据的扩展设计
由于XML的层次特征,3个模式的实现技术与关系数据库不同:
面向XML的领域建模设计
配置机制设计
通过增加服务接口工厂类的方式隔离客户程序与具体业务服务实体类间的依赖,工厂类通过配置管理ConfigManager获得每个目标服务接口对应的实体类名称,
借助反射动态包装目标服务接口。静态结构和执行过程如下:
面向XML的领域建模设计
实验环境准备及实验结果分析
测试业务对象
为了比较三种模式实现特点的不同,测试中设计了2个具有Master-Detail特征的业务实体:Customer和Order,两者之间也存在1:N的关系,对应的关系数据库和XML数据实现如下:
面向XML的领域建模设计
目标服务是一个根据客户名称,返回其所有订单明细项小计之和的接口。
测试内容准备
针对关系数据库和XML数据方式的不同,业务逻辑如表3。其中,XML数据的Transaction Script模式为了计算简单,增加一个采用XSTL生成“客户名称—订单项明细小计”的中间过程:
面向XML的领域建模设计
Transaction Script方式下生成中间结果的XSLT。
测试数据
面向XML的领域建模设计
测试结果及分析
通过修改ConfigManager中实现业务服务的实体类名称,结合数据库调用监控获得如下数据:
测试结果分析如下:
1)借助适配机制,在目标实现模式甚至数据模型修改时,客户程序保持稳定,修改内容控制在配置文件部分,不影响客户程序的业务逻辑;
2)使用不同模式设计完成的业务对象,借助适配机制和XML数据扩展机制,在关系数据库和XML数据方式下,可完成同样的服务功能;
3)通过DTO组件的调用打包作用,可以将包括2份订单、4项订单明细的信息一次性提取,将多次调用打包为1次调用,减少了网络往复。
总结
面向XML的领域建模设计
依据依赖导致原理设计的适配机制可以从一定程度上减少客户程序与业务逻辑的耦合程度,在部署、运行环境变化时,可通过调整配置选择合适的业务逻辑实现模式,并且不需要客户程序联动修改;DTO对象的加入可以减少分布式调用中的往复次数,对应用性能的提升有利。实际工程中,由于业务逻辑实体往往需要被多个客户程序调用,需要有效的并发机制配合,后续研究中将着重对并发能力进行调整。
…… 此处隐藏:662字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [说明书]浅谈视觉传达设计中的色彩艺术
- [说明书]数据库原理-实验8-查询优化
- [说明书]临时用电施工组织设计
- [说明书]反假币考试试题第二套(人民币)
- [说明书]《建设工程监理规范》-2014.3.1实施
- [说明书]筋出槽,骨错缝病机诠释
- [说明书]百度预计来路对网站权重有多大影响
- [说明书]房屋面积测绘细则
- [说明书]计算机控制技术填空题汇总
- [说明书]乡镇卫生院(社区中心)死亡医学证明管
- [说明书]2013尾矿工实操试题
- [说明书]2015事业单位面试备考:贵州省事业单位
- [说明书](目录)2017-2022年半导体材料市场发
- [说明书]浙江省制造业发展“十三五”规划
- [说明书]干部选拔任用工作情况的自查报告
- [说明书]《发电厂电气部分》课后部分问答题整理
- [说明书]中国建立政府成本会计制度的思考
- [说明书]中国文化输出的现状及挑战-100分
- [说明书]通信原理实验指导(13-9)
- [说明书]HSF培训试卷(有害物质培训考试试题)
- 高中地理必修一:2.3《大气环境之六_气
- 新人教版八年级数学上期末总复习精品优
- WEB应用托管平台系统架构
- 《应用文写作》期末试卷
- 2017年秋九年级数学上册24.3正多边形和
- _空心村_形态特征与生成机理分析_以河
- 北师大版生物七年级下册12章2节感受器
- 社区卫生服务中心主任职责
- 广东省2014届广州二模材料作文“求道”
- 完整户口本英文翻译模板
- 2015年液化天然气LNG市场调研及发展趋
- 农村学校教育发展新
- 2014年注册税务师税法(Ⅱ)考试试题及答
- 东方大学俄语新版第5册第-7课课文翻译
- 路基路面工程课程设计1
- 219亩项目2011营销策略
- 第1篇 贸易术语-EXW、FCA、FAS
- 年会或大型活动防疫应急预案
- 改善提案(合理化建议)
- 初三英语第四单元ppt




