面向领域驱动的企业级应用开发框架Apworks新版本发布

经过大半年的断断续续的努力,今天,我发布了Apworks的一个新版本:2.5.4878.35266。Apworks是我从2009年开始一直开发并维护的一个面向领域驱动的基于.NET的企业级应用程序开发框架,通过使用这个框架,开发者可以快速地开发出面向领域驱动的、专业的企业级应用程序。Apworks同时支持经典分层架构以及CQRS架构(基于CQRS架构的案例程序请参考:Tiny Library CQRS:http://tlibcqrs.codeplex.com)。为了更透明地向读者介绍面向领域驱动的经典分层架构,我也在社区中开发过一个案例程序:Byteart Retail(https://github.com/daxnet/ByteartRetail)。事实上,Byteart Retail中的很多部分都可以使用Apworks框架实现(比如仓储、事件、服务等等),在将这些实现部分用Apworks替换以后,你将发现,开发一个应用程序竟是如此简单。

Apworks框架所提供的功能

Apworks从框架级别提供了:

  • 实体、值对象、服务的基本框架元素
  • 完善的仓储架构以及多样化的仓储实现(目前支持NHibernate、EntityFramework和MongoDB)
  • 简单易用的事件总线(目前支持Direct Bus、Event Aggregator Bus和MSMQ)
  • 灵活的领域事件产生和派发机制
  • AOP拦截和异常处理机制
  • 多种数据序列化机制
  • 规约架构
  • 事务协调器架构(目前支持DistributedTransactionCoordinator和SuppressedTransactionCoordinator)
  • 事件溯源(Event Sourcing)
  • 对象快照(Snapshot)
  • 灵活多样的快照产生机制,通过框架可以自定义快照产生策略(目前支持EventNumberSnapshotProvider和SuppressedSnapshotProvider)
  • 灵活多样的领域仓储的框架及实现(目前支持EventSourcedDomainRepository、RegularDomainRepository、RegularEventPublisherDomainRepository以及SnapshotDomainRepository)
  • 灵活多样的事件存储(Event Store):目前支持基于SQL Server的Event Store以及MySQL的Event Store。所支持的后台数据库类型能被动态扩展
  • 灵活多样的IoC容器整合方案:目前仅整合了Microsoft Unity,但框架本身支持扩展其它的IoC解决方案
  • 多样化的框架配置方式:目前支持基于app/web.config的配置方式、直接写代码进行配置,以及基于流畅接口(Fluent Interface)的配置方式

新版本更新内容

历代版本的功能特性与更新请参见:http://apworks.org/?page_id=424

这个新版本主要有以下几个方面的更新:

  1. 基于MongoDB的仓储实现(Apworks.Repositories.MongoDB.dll)
  2. 实现了经典分层架构下的领域事件产生和派发框架(Apworks.dll)
  3. 基于事件聚合器(Event Aggregator)的消息总线(Apworks.Bus.EventAggregator.dll)
  4. 优化了NHibernate的仓储实现(Apworks.Repositories.NHibernate.dll)
  5. 提供了框架配置的流畅接口(Fluent Interface)的支持(Apworks.dll)
  6. 实现了事务协调器(Apworks.dll)
  7. 引入了PagedResult<T>泛型类型,用以接收由仓储返回的分页信息。基于Entity Framework和NHibernate的仓储实现目前能够在一次数据库交互中返回分页数据,提高了分页处理的性能;MongoDB的仓储虽然也支持分页,但实现上效率要略低
  8. 为Microsoft Patterns & Practices Unity提供了更为稳健的基于WCF的Lifetime Manager,感谢Andrew Oakley在Unity扩展上所做的贡献,请参见:http://blogs.msdn.com/b/atoakley/archive/2010/12/29/unity-lifetime-managers-and-wcf.aspx
  9. IBus接口现已改为非泛型接口;消息的泛型类型被约束在IBus接口的成员方法上,而不是在IBus接口上,这样更符合实际需求
  10. 所有的外部组件依赖引用已经更新到最新版本

安装包下载地址

请单击http://apworks.org/wp-content/uploads/fx/setup_v2_5_4878_35266.zip直接下载安装包。完成下载并解压后,运行Apworks.Setup.exe执行安装。本安装程序由WiX产生。

使用NuGet安装

可以根据需要,在Visual Studio中使用NuGet Package Manager进行安装。在需要引用Apworks的项目上单击右键,选择Manage NuGet Packages选项,将出现Manage NuGet Packages对话框:

image

SNAGHTML1004445

在Search Online文本框中,输入Apworks作为查找关键字,将看到列表中会列出所有Apworks可用的组件:

SNAGHTML101cb8d

此时可以根据需要,单击Install按钮进行安装。

直接编译源代码程序

可以到Apworks的代码库主页https://github.com/daxnet/Apworks查看最新的签入信息,如果需要直接编译源代码,请以以下步骤进行:

首先,使用命令 git clone https://github.com/daxnet/Apworks 将源代码克隆到本地,然后,根据自己的开发平台进行编译:

在Windows中编译Apworks

在Windows下,启动Visual Studio Command Prompt(命令提示符),然后进入Apworks目录,使用 build Debug 命令编译Apworks的Debug版本,使用 build Release 命令编译Apworks的Release版本。

在Linux、Unix、Mac OS X中编译Apworks

在非Windows平台下,首先确保Mono 2.10.8(或以上版本)正确安装,然后进入Apworks目录,使用 sh build.sh Debug 命令编译Apworks的Debug版本,使用 sh build.sh Release 命令编译Apworks的Release版本。注意:在编译前,bash程序会首先自动下载依赖组件,因此请确保机器有网络连接。

下一版本功能计划

计划在下一版本的Apworks中引入以下功能:

  • 轻量级Enterprise Service Bus,用以替代目前的IBus实现
  • Visual Studio项目模板
  • 领域模型设计器(DSL)
  • 引入Castle Windsor的IoC容器支持
  • 重构/优化对CQRS架构的支持(暂定)
  • LMAX架构的支持(暂定,关于LMAX架构,请参考:http://martinfowler.com/articles/lmax.html

如何使用?

我将在近期写一些文章来介绍如何在实际项目中使用Apworks开发基于经典架构的企业级应用程序,敬请期待!

posted @ 2013-05-10 21:36 dax.net 阅读(...) 评论(...) 编辑 收藏