一种领域驱动开发插件系统的制作方法

文档序号:8319145阅读:190来源:国知局
一种领域驱动开发插件系统的制作方法
【技术领域】
[0001]本发明属于网络通信领域,尤其涉及一种领域驱动开发插件系统。
【背景技术】
[0002]作为系统数据存储和分析的核心,数据库在信息系统中起着重要作用,目前的企业级应用平台开发和设计必须依赖于关系数据库,数据库在发挥巨大作用的同时,其模式结构也与主流的面向对象系统分析理论产生了较大的缝隙,随着系统规模不断增大,基于过程和事务脚本的系统分析方法已经不能满足业务需求。
[0003]基于00技术构建的领域建模理论,为大规模业务系统分析提供了有力的理论指导,随着这方面理论不断地成熟,已经逐渐应用到各个领域的系统分析和构架中。领域建模(Domain Modeling-DM)的初期是基于对象关系映射的ORM (Object Relat1nshipMapping)技术,ORM通过数据库与对象的数据映射,解决了关系与对象的不匹配问题,让系统设计分析人员能够用纯粹的对象技术来解决领域问题。但是随着业务分析的深入,ORM产生的贫血对象模型由于行为能力的缺失,让系统又从对象模型退化为事务处理过程,与DM理论逐渐背离。随后为了避免贫血模型的弊端而出现的充血模型,将业务与数据全部合并到领域模型中,有很多框架都是在充血模型的理论基础上进行了大量实践(如ROR, Grails, Spring Roo等),这些快速开发框架在小型项目上应用非常成功,因为其模板式的开发方式,强大的动态方法生成,以及快速脚手架(Scaffolding)等特性,让充血领域模型有了强大的功能。但是随着业务增长,领域对象急速膨胀,维护难度也在增加,使系统处于一个不可控的状态,并且业务和数据的领域整合使系统的结构变得模糊不清,所以这类框架始终没有成功的应用到大型项目开发中。
[0004]一种基于四色原型的领域开发模型Evans DDD,强调领域设计必须以业务为指导,Evans DDD不但弥补了 ORM的对象行为缺失和生命周期问题,也通过领域聚合和分解有效地解决了充血模型随着领域的扩大而臃肿的缺陷,为大型系统设计和开发提供了一个合理的解决途径。由于Evans DDD的设计理念比较灵活,系统开发和设计人员对该理论进行了很多的实践并取得了较多成果,但是始终没有一个统一的底层技术构架来支持该模型。这不但给该理论的推广造成了极大的障碍,没有统一的构架支持,系统开发人员也很难将系统分析转换为编码,大大降低了系统的实施效率。同时现有的框架体系基本是以数据库为核心的分层结构,也为DDD的实践造成了很大的障碍,一些全新的框架由于不能很好的兼容以前的遗留系统,也很难得到推广。
[0005]DDD是完全基于内存的业务对象建模(In-Memory)方法,但是在项目实施过程中,目前的开发框架均依赖于关系数据库系统,ORM虽然在数据库与业务系统之间进行了桥接,但只支持贫血模型且对象生命周期无法DDD匹配,造成系统实施过程与设计不相符;现有的DDD框架不能完全覆盖系统业务,也不成熟稳定,无法应用于实际项目的开发。

【发明内容】

[0006]本发明实施例提供一种领域驱动开发插件系统,旨在解决现有技术中JavaEE的分层构架出现领域失配、性能低下及DDD理论与实践不兼容的问题。
[0007]本发明实施例是这样实现的,一种领域驱动开发插件系统,所述系统包括:
[0008]命令查询分离体系设计单元,用于分离领域模型中的业务过程与数据查询;
[0009]消息代理单元,用于使领域与外界通信,并支持本地消息,以及分布式消息;以及
[0010]消息模型设计单元,用于通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。
[0011]本发明实施例根据DDD理论及Spring框架,实现了一个基于领域消息驱动和内存建模的DDD插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效的解耦系统模块,提高系统并发性能,在项目实施中更加合理高效。
【附图说明】
[0012]图1是本发明实施例提供的领域驱动开发插件系统的结构图;
【具体实施方式】
[0013]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0014]本发明实施例基于Spring框架,实现了一种基于领域消息驱动及内存建模的DDD插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效解耦系统模块。
[0015]图1示出了本发明实施例提供的领域驱动开发插件系统的结构,详述如下:
[0016]命令查询分离体系设计单元12分离领域模型中的业务过程与数据查询。
[0017]在本发明的实施例中,基于Takia的业务过程由命令总线和查询总线构成,该查询分为模型查询及组合查询,均支持分页查询。
[0018]在本发明的实施例中,命令查询分离体系设计单元12包括:模型创建流程设计模块121,模型更新流程设计模块122,模型删除流程设计模块123以及模型查询流程设计模块 124。
[0019]模型创建流程设计模块121根据用户数据创建模型对象和相关值对象。
[0020]模型更新流程设计模块122根据用户数据修改已经存在的模型对象和相关值对象。
[0021]模型删除流程设计模块123根据用户数据删除已经存在的模型对象和相关值对象。
[0022]模型查询流程设计模块124根据查询条件查询模型数据列表。
[0023]消息代理单元13使领域与外界通信,并支持本地消息,以及分布式消息。
[0024]消息模型设计单元14通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。
[0025]在本发明的实施例中,领域消息模型根据标准的生产者一消费者设计模式构架。
[0026]在本发明的实施例中,消息模型设计单元14包括JDK-Future消息模型设计模块141以及Disruptor消息模型设计模块142。
[0027]JDK-Future消息模型设计模块141根据Future消息模型运行消息监听器。
[0028]在本发明的实施例中,Future消息模型基于JDK的Concurrent包实现,核心组件为ChannelExecutor,由线程池和同步组件组成,若使用异步模式,则线程池运行消息监听器,若使用同步模式,则同步组件将消息监听器放入当前线程中执行。
[0029]Disruptor消息模型设计模块142根据Disruptor消息模型同时运行多个消息处理器,独立设置处理结果。
[0030]在本发明的实施例中,Disruptor消息模型基于并发编程框架Disruptor实现,采用全异步模式且支持1:N消息模式,核心结构由输入区域和输出集合组成。
[0031]作为本发明的一个优选实施例,该领域驱动开发插件系统还包括卫星结构模型设计单元11。
[0032]卫星结构模型设计单元11通过与核心领域的消息交换实现业务逻辑,且以实体领域为核心。
[0033]在本发明的实施例中,领域驱动开发插件系统以实体对象、值对象、聚集以及领域事件为基础,采用分布式缓存实现领域的In-Memory模型。
[0034]在本发明的实施例中,该系统采用以领域容器为核心的辐射结构,对领域缓存及领域消息均采用SpringAOP及Auto-Proxy的透明机制实现。
[0035]本发明实施例根据DDD理论及Spring框架,实现了一个基于领域消息驱动和内存建模的DDD插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效的解耦系统模块,提高系统并发性能,在项目实施中更加合理高效。
[0036]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种领域驱动开发插件系统,其特征在于,所述系统包括: 命令查询分离体系设计单元,用于分离领域模型中的业务过程与数据查询; 消息代理单元,用于使领域与外界通信,并支持本地消息,以及分布式消息; 消息模型设计单元,用于通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。
2.如权利要求1所述的系统,其特征在于,所述分离领域模型中的业务过程由命令总线和查询总线构成,所述分离领域模型中的数据查询分为模型查询及组合查询,均支持分页查询。
3.如权利要求1所述的系统,其特征在于,所述命令查询分离体系设计单元具体包括: 模型创建流程设计模块,用于根据用户数据创建模型对象和相关值对象; 模型更新流程设计模块,用于根据用户数据修改已经存在的模型对象和相关值对象; 模型删除流程设计模块,用于根据用户数据删除已经存在的模型对象和相关值对象; 模型查询流程设计模块,用于根据查询条件查询模型数据列表。
4.如权利要求1所述的系统,其特征在于,所述领域消息模型根据标准的生产者一消费者设计模式构架。
5.如权利要求1所述的系统,其特征在于,所述消息模型设计单元具体包括: JDK-Future消息模型设计模块,用于根据Future消息模型运行消息监听器;以及 Disruptor消息模型设计模块,用于根据Disruptor消息模型同时运行多个消息处理器,独立设置处理结果。
【专利摘要】本发明适用于网络通信领域,提供了一种领域驱动开发插件系统,所述系统包括:命令查询分离体系设计单元,用于分离领域模型中的业务过程与数据查询;消息代理单元,用于使领域与外界通信,并支持本地消息,以及分布式消息;消息模型设计单元,用于通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。本发明根据DDD理论及Spring框架,实现了一种基于领域消息驱动和内存建模的DDD插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效的解耦系统模块,提高系统并发性能,在项目实施中更加合理高效。
【IPC分类】G06F17-30, G06F17-40, G06F9-44
【公开号】CN104636333
【申请号】CN201310544634
【发明人】张飞
【申请人】宁夏新航信息科技有限公司
【公开日】2015年5月20日
【申请日】2013年11月6日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1