一种领域驱动开发插件系统技术方案

技术编号:8466424 阅读:205 留言:0更新日期:2013-03-23 18:32
本发明专利技术适用于分布式网络系统开发领域,提供了一种领域驱动开发插件系统,所述系统包括:命令查询分离体系设计单元,用于分离领域模型中的业务过程与数据查询;领域缓存单元,用于领域对象的分布式内存缓存,实现领域的In-memory模型;消息代理单元,用于使领域与外界通信,并支持本地消息,以及分布式消息;消息模型设计单元,用于通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。本发明专利技术根据DDD理论及Spring框架,实现了一种基于领域消息驱动和内存建模的DDD插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效的解耦系统模块,提高系统并发性能,在项目实施中更加合理高效。

【技术实现步骤摘要】
一种领域驱动开发插件系统
本专利技术属于分布式网络系统开发领域,尤其涉及一种领域驱动开发插件系统。
技术介绍
作为系统数据存储和分析的核心,数据库在信息系统中起着重要作用,目前的企业级应用平台开发和设计必须依赖于关系数据库,数据库在发挥巨大作用的同时,其模式结构也与主流的面向对象系统分析理论产生了较大的缝隙,随着系统规模不断增大,基于过程和事务脚本的系统分析方法已经不能满足业务需求。基于00技术构建的领域建模理论,为大规模业务系统分析提供了有力的理论指导,随着这方面理论不断地成熟,已经逐渐应用到各个领域的系统分析和构架中。领域建模(Domain Modeling-DM)的初期是基于对象关系映射的ORM(Object Relationship Mapping)技术,ORM通过数据库与对象的数据映射,解决了关系与对象的不匹配问题,让系统设计分析人员能够用纯粹的对象技术来解决领域问题。但是随着业务分析的深入,ORM 产生的贫血对象模型由于行为能力的缺失,让系统又从对象模型退化为事务处理过程,与 DM理论逐渐背离。随后为了避免贫血模型的弊端而出现的充血模型,将业务与数据全部合并到领域模型中,有很多框架都是在充血模型的理论基础上进行了大量实践(如R0R, Grails, Spring Roo等),这些快速开发框架在小型项目上应用非常成功,因为其模板式的开发方式,强大的动态方法生成,以及快速脚手架(Scaffolding)等特性,让充血领域模型有了强大的功能。但是随着业务增长,领域对象急速膨胀,维护难度也在增加,使系统处于一个不可控的状态,并且业务和数据的领域整合使系统的结构变得模糊不清,所以这类框架始终没有成功的应用到大型项目开发中。一种基于四色原型的领域开发模型Evans DDD,强调领域设计必须以业务为指导, Evans DDD不但弥补了 ORM的对象行为缺失和生命周期问题,也通过领域聚合和分解有效地解决了充血模型随着领域的扩大而臃肿的缺陷,为大型系统设计和开发提供了一个合理的解决途径。由于Evans DDD的设计理念比较灵活,系统开发和设计人员对该理论进行了很多的实践并取得了较多成果,但是始终没有一个统一的底层技术构架来支持该模型。这不但给该理论的推广造成了极大的障碍,没有统一的构架支持,系统开发人员也很难将系统分析转换为编码,大大降低了系统的实施效率。同时现有的框架体系基本是以数据库为核心的分层结构,也为DDD的实践造成了很大的障碍,一些全新的框架由于不能很好的兼容以前的遗留系统,也很难得到推广。DDD是完全基于内存的业务对象建模(In-Memory)方法,但是在项目实施过程中, 目前的开发框架均依赖于关系数据库系统,ORM虽然在数据库与业务系统之间进行了桥接, 但只支持贫血模型且对象生命周期无法DDD匹配,造成系统实施过程与设计不相符。现有的DDD框架不能完全覆盖系统业务,也不成熟稳定,无法应用于实际项目的开发。
技术实现思路
本专利技术实施例提供一种领域驱动开发插件系统,旨在解决现有技术中JavaEE的分层构架出现领域失配、性能低下及DDD理论与实践不兼容的问题。本专利技术实施例是这样实现的,一种领域驱动开发插件系统,所述系统包括命令查询分离体系设计单元,用于分离领域模型中的业务过程与数据查询;领域缓存单元,用于领域对象的分布式内存缓存,实现领域的In-memory模型;消息代理单元,用于使领域与外界通信,并支持本地消息,以及分布式消息;以及消息模型设计单元,用于通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。本专利技术实施例根据DDD理论及Spring框架,实现了一个基于领域消息驱动和内存建模的DDD插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效的解耦系统模块,提高系统并发性能,在项目实施中更加合理高效。附图说明图I是本专利技术实施例提供的领域驱动开发插件系统的结构图2是本专利技术实施例提供的Takia DDD整体构架模型的结构图3是本专利技术实施例提供的可伸缩构架的变迁趋势图4是本专利技术实施例提供的卫星结构模型的结构图5是本专利技术实施例提供的Takia DDD编程模型的流程图6是本专利技术实施例提供的命令查询分离体系设计单元的结构图图7是本专利技术实施例提供的模型创建流程设计模块的实现流程图图8是本专利技术实施例提供的模型更新流程设计模块的实现流程图图9是本专利技术实施例提供的模型删除流程设计模块的实现流程图图10是本专利技术实施例提供的模型查询流程设计模块的实现流程图11是本专利技术实施例提供的消息代理单元的结构图12是本专利技术实施例提供的JDK-Future消息模型设计模块的业务流程图图13是本专利技术实施例提供的Disruptor消息模型设计模块的业务流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实施例基于Spring框架,实现了一种基于领域消息驱动及内存建模的DDD 插件Takia,使项目实施完全兼容DDD设计,同时基于消息的通信机制能有效解耦系统模块。图I示出了本专利技术实施例提供的领域驱动开发插件系统的结构,详述如下命令查询分离体系设计单元12分离领域模型中的业务过程与数据查询。在本专利技术的实施例中,基于Takia的业务过程由命令总线和查询总线构成,该查询分为模型查询及组合查询,均支持分页查询。在本专利技术的实施例中,命令查询分离体系设计单元12包括模型创建流程设计模块121,模型更新流程设计模块122,模型删除流程设计模块123以及模型查询流程设计模 块 124。模型创建流程设计模块121根据用户数据创建模型对象和相关值对象。模型更新流程设计模块122根据用户数据修改已经存在的模型对象和相关值对象。象。模型删除流程设计模块123根据用户数据删除已经存在的模型对象和相关值对模型查询流程设计模块124根据查询条件查询模型数据列表。领域缓存单元13根据领域对象的分布式内存缓存,实现领域的In-memory模型。 消息代理单元14使领域与外界通信,并支持本地消息,以及分布式消息。消息模型设计单元15通过领域消息实现领域组件的信息交互,采用并发的事件 驱动模式及AOP编程模型。在本专利技术的实施例中,领域消息模型根据标准的生产者一消费者设计模式构架。在本专利技术的实施例中,消息模型设计单元15包括JDK-Future消息模型设计模块 151以及Disruptor消息模型设计模块152。 JDK-Future消息模型设计模块151根据Future消息模型运行消息监听器。在本专利技术的实施例中,Future消息模型基于JDK的Concurrent包实现,由线程池 和同步组件组成,若使用异步模式,则线程池运行消息监听器,若使用同步模式,则同步组 件将消息监听器放入当前线程中执行。Disruptor消息模型设计模块152根据Disruptor消息模型同时运行多个消息处理器,独立设置处理结果。在本专利技术的实施例中,Disruptor消息模型基于并发编程框架Disruptor实现,采 用全异步模式且支持1: N消息模式,核心结构由输入区域和输出集合组成。作为本专利技术的一个优选实本文档来自技高网
...

【技术保护点】
一种领域驱动开发插件系统,其特征在于,所述系统包括:命令查询分离体系设计单元,用于分离领域模型中的业务过程与数据查询;领域缓存单元,用于领域对象的分布式内存缓存,实现领域的In?memory模型;消息代理单元,用于使领域与外界通信,并支持本地消息,以及分布式消息;以及消息模型设计单元,用于通过领域消息实现领域组件的信息交互,采用并发的事件驱动模式及AOP编程模型。

【技术特征摘要】

【专利技术属性】
技术研发人员:黄强穆炯李军蔡英
申请(专利权)人:四川农业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1