Jdon Framework--开源的基于DDD领域驱动设计的java框架
2014-01-27 13:33 阅读(223)

        Jdon Framework是一个实施DDD+CQRS+EventSourcing架构的Java reactive开源框架,能够快速地将领域驱动设计(DDD)落地为异步、高并发、高吞吐量的Java应用系统 。

Jdon Framework(简称JF)是一套适合开发中小型Java/J2EE/JavaEE应用系统的轻量DDD框架(Lightweight Java DDD Framework)。国内第一个IOC/AOP开源框架,首个DDD领域驱动设计Java实施框架。

JdonFramework = Spring(Ioc/DI/AOP) + Ruby(DCI) + Scala(Actors model)

JdonFramework通过如下统一语言将DDD和DCI以及事件灵活结合在一起:


由领域模型聚合根实体(DDD)扮演的角色(Role of DCI)在用例场景(Context of DCI)下触发了一个交互事件(interaction event)。

JdonFramework这种以聚合根实体发送接收消息的模型(reactive actor)符合原始的面向对象编程模型:所谓OO是消息事件传递:

消息作为信封,信封内容是事件,这种异步机制是聚合根与外界交互的最好方式。


JF诞生于2004年底,作为中国第一个开源Java框架,创新地运用了当时刚刚出现的新的技术思想Ioc/DI(依赖注入Dependency Injection),JF比当时Spring 1.x率先支持了注入的自动匹配;同时遵循约定优于配置以达到快速开发。

2009年JF 6.1版本引入了事件驱动(Event Sourcing)和In-memory内存缓存概念,2011年7月Martin Fowler推荐的LMAX架构也采取类似架构,其性能达到每秒处理600万订单,每微秒延迟获得100T的吞吐量。传统编程是在一个线程内进行顺序同步编程,而JF的事件编程是一种无锁的并行异步编程模型,大大发挥了现代多核CPU潜力。

JF 6.5版本为推广适合多核CPU的无堵塞并发编程范式进行了探索,使用了Domain Events和DCI等不同抽象层次对并发编程进行了封装,从而降低开发者使用并发编程的难度,见 无堵塞的并发编程 和DDD DCI和领域事件

JF与其他开发工具相比:JF是一个领域驱动设计DDD框架。JF是快速性 灵活性和可伸缩性综合平衡的产物,它带来了多快好省的简单的解决之道(simplify the best):对于小项目,使用JF可以开发出高质量可扩展的好的系统;对于大项目,使用JF可以更快地开发出系统。

JF关键技术特点:

  1. DDD(Domain-Driven Development),开发基于领域驱动设计(Domain-Driven Design)应用, 提供基于内存的领域模型(in memory model), 运行时刻领域对象作为“总司令部”通过Domain Events驱动命令技术构架为之服务,探索了一条真正以业务对象为核心的崭新的DDD落地编程模型。

  2. Reactive Actors模型,类似ERLang或Scala中的信箱, 事件驱动架构Event-driven Architecture(EDA) ,异步领域事件,并发策略, 懒加载赋值(Lazy initialization or evaluation),结合RabbitMQ/ZeroMQ/JMS可实现大型分布式可伸缩的架构,。 

  3. 依赖注入DI 和 AOP框架, 类自动配对注射autowiring/Autowired,无需指定,提高重构效率,所有类最大限度松耦合,包括框架本身的类或构件都是可替换的,提供强大可定制能力;灵活简单的AOP,没有复杂AOP脚本代码,可以将任何POJO引入introduce作为拦截器。

  4. 命令查询分类架构Command Query Responsibility Segregation(CQRS/CQS), 提供模型的增删改查命令流程整合,不必编写MVC模式中Controller控制器,防止新手将业务写入控制器。服务命令模式:可根据url参数直接激活对应的Service方法;提供大量数据批量查询自动分页和缓存性能优化功能。

  5. JF可以保证应用系统的良好性能和可扩展性,容易接入各种持久层框架如Hibernate或Key-value存储或NoSQL数据库。可使用分布式缓存如Ehcache + terracotta/memcached扩展到大型分布式云系统。

  6. 成熟稳定,可与Spring整合。基于JF开发的开源JiveJdon在Jdon.com稳定运行多年,同时也在多个知名公司得到了各种应用。遵循APACHE 2.0开源协议,免费应用各种商业系统中。 可plugin所有的开发工具如Spring和所有的J2EE/JEE服务器,可在所有开发工具如Eclipse JBuilder、JDeveloper、IntelliJ IDEA 、NetBeans WASD workshop Jcreator 下开发,也可部署到Tomcat JBoss Websphere weblogic iPlanet JRun等各种J2EE/JEE容器服务器中运行。

 

下载   演示