zoukankan      html  css  js  c++  java
  • 面向领域驱动的企业级应用开发框架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开发基于经典架构的企业级应用程序,敬请期待!

  • 相关阅读:
    oracle闪回某个时间段的数据
    查询某个表某个字段重复记录急重复数量
    调用腾讯QQ启动
    MongoDB笔记(二):MongoDB下Shell的基本操作
    MongoDB笔记(一):MongoDB介绍及Windows下安装
    freemarker相关
    oracle获取时间毫秒数
    如何简单地理解Python中的if __name__ == '__main__'
    python套接字基本使用
    Mysql表的约束设计和关联关系设计
  • 原文地址:https://www.cnblogs.com/daxnet/p/3072090.html
Copyright © 2011-2022 走看看