ESB产品Mule+Spring实现最简领域驱动框架
| 更多内容在: |
架构专栏 |
先发一个消息,开源ESB产品Mule又发布了新的LDAP组件,很是让人佩服,首先赞一个先。
架构风格的基本组成体:计算组件、连接组件、信息、数据、配置。下图中,又抽象了一个领域组件,这也是为了让这个风格表示法能够同样适用于业务层面。

MULE+Spring完全支撑上图所示的架构风格,我们可以很容易的用它们实现最简领域驱动框架,以支持领域驱动设计。MULE大量提供连接组件(通信,协调,仲裁等)和信息链路拦截机制(可使用格式转换,加密,压缩之类的),也提供一些通用的计算组件,但更多的通用计算组件还是依赖自己开发;Spring提供了配置能力,把组件之间的关系记录下来;唯独留下新引入的领域组件(领域组件的计算能力可以很容易通过连接组件实现与其它组件的交互),需要我们自己来开发。
在《领域驱动设计在SOA架构中的实践》一文中提到技术架构师解决如下问题:“解决缓存、事务管理(包括分布式事务)、分布式接口规范、通信机制、共性系统服务的注入和应用契约、领域驱动设计风格与编程模式的确定、测试方案的确定、工具的提供、搭建可运行的环境、跨环境(分布式环境)的服务依赖策略、模型转换策略和工具的提供、集成策略”。下面用Mule+Spring的组合来对应一下:
- 缓存:是一个计算组件,需要单独开发。
- 事务管理:是一个计算组件,利用Spring事务,分布式事务需要单独定制一个计算组件。
- 分布式接口规范:需要单独定义。
- 通信机制:MULE提供。
- 共性系统服务的注入和应用契约:Spring提供。
- 领域驱动设计风格与编程模式的确定:见实践一文。
- 测试方案的确定:Spring提供单元测试,Mule提供分布式测试,可以定制一些测试辅助组件,例如:数据生成组件,该组件配合MULE的定时组件,很容易实现简单的自动测试。
- 工具的提供:MULE,Spring都提供了工具,DAO生成组件依据存储框架的不同寻找合适的。
- 搭建可运行的环境:再搞一个JBOSS,整个环境OK。
- 跨环境(分布式环境)的服务依赖策略:见实践一文,Spring + Mule提供技术支持。
- 模型转换策略和工具的提供:用Dozer 解决Bean-Bean,JAXB解决Bean-XML,或者Hessian解决Bean-Hessian;开发这些计算工具,配置在Mule的链路中,即可使用。
- 集成策略:Mule提供了各种连接组件,轻易集成外部系统或服务。
- 额外的:Mule提供了分布式计算环境,可以作为SOA技术平台来使用。
- 额外的:Mule提供了服务模型,可以作为服务平台来用。
- 额外的:Mule提供了Galaxy,解决服务治理。
通过上面的匹配,就会发现,以MULE+Spring为基础,实现一个更强大的领域驱动框架将会非常容易。