面向领域驱动的应用开发框架Apworks 2.0发布
Apworks是一套基于.NET的面向领域驱动的企业级应用系统开发框架,开发人员可以使用Apworks方便地在项目中应用经典的分层架构(Classic Layered Architecture)模式或命令查询职责分离(CQRS)架构模式。经过我9个月的努力,Apworks已经从去年年底发布的具有有限功能的预览版(Alpha版)发展到现在能够支持实际项目开发的2.0稳定版,如今该稳定版已经发布到codeplex上,以下是相关地址链接:
- Apworks主页:http://apworks.codeplex.com
- Apworks文档:http://apworks.codeplex.com/documentation
- 基于Apworks开发的CQRS架构应用程序演示案例:Tiny Library CQRS:http://tlibcqrs.codeplex.com
- 演示案例Tiny Library CQRS的安装与部署:http://www.cnblogs.com/daxnet/archive/2011/09/01/2161910.html
请单击此处下载Apworks 2.0版。在下载启动前需要同意Apache 2.0许可协议。
功能更新
与预览版相比,Apworks 2.0具有如下方面的功能更新:
- 灵活的配置方式:Apworks 2.0提供基于web/app.config以及直接代码编写两种配置方式。web/app.config的配置方式适用于生产环境的应用程序,允许系统开发人员和管理员在不重复编译应用程序源代码的前提下修改框架配置;直接代码编写的配置方式则更适用于单体测试的应用场景,它允许同一个AppDomain中存在多个配置方案,在这种配置方式下,强类型编程与智能感知(IntelliSense)为开发人员提供了更多的便捷。不仅如此,Apworks 2.0允许开发人员对配置方式进行扩展
- 消息总线集成:对于CQRS架构风格的应用程序,Apworks 2.0支持灵活的消息总线集成方案。与预览版相比,Apworks 2.0提供了基于MSMQ的消息总线实现。开发人员可以在实际项目中使用MSMQ进行分布式的系统集成(比如与Biztalk Server集成等)。不仅如此,开发人员还可以将现有的框架集成到Apworks 2.0中,以实现更为强大的消息发布与派发机制
- 支持各种类型的数据库系统:开发人员可以根据自己项目的实际需要来选择不同类型的数据库系统。对于经典的分层架构,Apworks支持基于NHibernate 3.2.0的仓储系统,从而获得了对绝大多数关系型数据库系统的支持;对于CQRS架构,Apworks不仅为Microsoft SQL Server和MySQL数据库提供了默认的领域仓储实现,而且还对外公布了各种接口和类库,开发人员不仅可以扩展框架以实现对其它关系型数据库的支持,甚至可以很方便地将NoSQL非关系型数据库集成到应用程序
- 支持各种领域仓储解决方案:对CQRS架构风格的应用程序,Apworks 2.0支持多种领域仓储解决方案,这些领域仓储包括:
- Event Sourced Domain Repository - 在需要使用事件溯源的时候,可以选用这个领域仓储,它同时会将领域事件派发到事件总线
- Regular Domain Repository - 这种领域仓储会直接将领域对象及其关系通过经典分层架构下的仓储保存到数据库中;它不会将发生在领域对象上的领域事件派发到事件总线
- Regular Event Publisher Domain Repository - 这种仓储与Regular Domain Repository相似,不同的是,它仍然会将发生在领域对象上的领域事件派发到事件总线
- Snapshot Domain Repository - 这种仓储会通过对领域对象进行快照的方式,将对象的快照保存在数据库中
- 支持各种快照策略:对CQRS架构风格的应用程序,Apworks 2.0提供了多种快照策略,不仅如此,开发人员还能根据实际需求对策略进行扩展。这些策略包括:
- Event Number Snapshot Provider - 该快照策略通过监视发生在领域对象上的事件个数来决定是否需要进行快照操作
- Suppressed Snapshot Provider - 该快照策略将在领域仓储上屏蔽所有的快照操作
- 存储机制(IStorage接口)支持更丰富的查询条件:在预览版中,Storage仅使用简单的PropertyBag作为查询条件,它仅支持一个或多个字段(field)的匹配操作。新版本的Apworks将规约的实现引入Storage,使其能够基于Lambda表达式进行查询。对于关系型数据库,这一Lambda表达式将会由Where Clause Builder负责翻译成SQL查询语句
- 面向方面编程(AOP)的支持:通过引入Castle Dynamic Proxy,Apworks 2.0支持AOP,以及基于AOP的异常处理拦截器
- 灵活的异常处理机制:开发人员可以通过配置信息为Apworks提供异常处理策略,使得应用程序能够获得灵活的异常处理机制
安装与使用
Apworks 2.0的安装程序是由Windows Installer XML Toolset 3.5产生的,因此具有标准的安装界面。安装过程非常简单,只需默认单击Next按钮即可。也可以在安装过程中修改安装路径。需要注意的是,Apworks 2.0依赖.NET Framework 4.0完整版,因此在安装之前需要确保计算机中已经安装了.NET Framework 4.0.
安装路径下的目录结构如下图所示:
Apworks目录下包含了Bin与Schemas两个子目录。Apworks目录中还包含了发布信息、许可证协议以及类库手册等文件;Bin目录下包含了所有Apworks的程序集组件;Schemas目录下包含了在开发过程中可能用到的XSD Schema;此外,Bin目录下还有个ExternalRefs的子目录,它包含了当前版本的Apworks所引用的所有第三方组件。
在使用Visual Studio 2010进行开发的过程中,可以直接使用“添加引用”的对话框来引用所有的Apworks程序集,如下: