Apworks

企业级开发框架
授权协议 Apache
开发语言 C# .NET
所属分类 程序开发、 服务框架/平台
软件类型 开源软件
地区 不详
投 递 者 公孙胡媚
操作系统 Windows
开源组织
适用人群 未知
 软件概览

简介

Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成。Apworks不仅能够很好地支持经典的分层架构,而且还能支持基于事件驱动的命令查询职责分离(Command-Query Responsibility Segregation, CQRS)架构。

随着软件系统日趋复杂,构建一套可用的、稳定的、可扩展的、安全的以及高效的系统变得越来越困难。为了解决这样的困难,人们在多年的软件开发过程中积累了不少经验,由其是在大型复杂软件系统方面,面向对象的分析和设计(OOAD)占据着主导地位。由此,Eric Evans将这些经验整理成文,于2004年出版了《领域驱动设计:软件核心复杂性应对之道》一书,世界顶级软件架构大师Martin Fowler也参与了该书的编撰工作。

在书中,Eric Evans提出了软件的设计与架构应当以领域为核心,而不是数据库或者其它的软件基础结构,因为领域描述了软件所需解决的实际问题。在设计和架构阶段,软件开发人员与领域专家必须建立一套用于交流的“通用语言”,并基于这套语言来共同建立领域模型。整个软件的设计与架构就需要以这个领域模型为中心,这样做不仅能够让开发团队更好地理解业务需求,减少因需求理解和沟通引起的偏差,而且还能使核心部件独立于具体的软件技术实现,为今后的新技术革新和扩展做好充分准备。

领域驱动设计并不是一种特定的模式,也不是一种具体的方法论,它所涵盖的范围相当广泛,比如,面向对象分析与设计的基本原则、测试驱动开发、行为驱动开发、持续集成、敏捷开发、防腐层、界定上下文、分层体系结构模式、读写分离体系结构模式、事件驱动体系结构模式等等,都属于领域驱动设计的讨论范畴。总而言之,所有以领域模型为核心的开发方法、过程与技术,均可认为是领域驱动的。

为了能让这些开发技术、开发方法、以及软件设计原则与模式能够很好地运用到实际项目中,一些面向领域驱动设计的开发框架应运而生,比如Java阵营有非常知名的AxonFramwork和JdonFramework。这些框架对领域驱动设计中所涉及的基本概念和模式都有着很好的支持,这不仅让开发人员能够很方便地开发出专业的、面向领域驱动的软件系统,使得软件系统能够更好地满足客户需求,解决实际的业务问题,而且在安全性、高效性、可扩展性和可维护性方面为软件系统提供保障,大大提高了软件产品的质量。

由于软件需求具有多样性和可变性的特点,往往没法在项目的前期将所有需求完全确定下来,因此,对于日趋复杂的软件系统而言,传统的瀑布开发模型遇到了一定的挑战,而基于迭代的敏捷开发模式相对而言更能有效地解决需求的多样性和可变性所带来的潜在风险。由于迭代的引入,客户能够直接参与到开发过程中,并在迭代中为开发团队提供必要的信息,以保证软件系统本身不会与客户需求相差太远。每一次迭代都会实现一部分客户需求,因此,经过多次迭代,程序代码也会迭代地加入到代码库中。为了确保质量,保证新加入的代码不会影响上一次迭代中所产生的代码,开发团队往往采用持续集成的方式,将代码整合到代码库的主分支上。

持续集成也涵盖了很多技术手段,比如行为驱动开发(BDD)、测试驱动开发(TDD)、自动化测试以及自动化部署等等。而面向对象分析与设计的原则,又对敏捷开发实践提供了很好的技术支撑,相信读过Robert C. Martin所著的《Agile Principals, Patterns and Practices in C#》一书的读者,对这部分会有很深的感触。

由此可见,面向领域驱动设计的开发框架,对敏捷项目的实践也有着很大的帮助,主要表现在以下几个方面:

  • 框架在技术上为软件系统提供了完整的模式实践,例如:通过使用AxonFramework或者JdonFramework,可以很方便地实现基于CQRS或者事件驱动的体系结构

  • 框架为团队提供了合理可行的软件开发过程模式,例如:利用框架可以很方便快捷地搭建软件系统的解决方案,同时也决定了团队的开发过程和合作方式

  • 框架的应用大大提高了团队的开发效率,团队只需要关注与领域相关的业务实现,而无需关注具体的技术实现

  • 框架的应用大大降低了出现缺陷(Bug)的几率,因为大多数支撑业务系统的代码都经过了严格的测试和实战的考验

  • 框架的应用还为软件系统的整合与集成带来了便捷

Apworks就是一套在.NET下支持面向领域驱动的软件系统开发框架,它具有以下这些特点:

  • 基于NuGet Package Manager提供方便快捷的类库包发布方式,开发人员无需关心程序集之间的版本依赖关系

  • 提供对领域驱动设计中基本元素的封装。比如:Apworks框架对实体、聚合根、领域事件、领域仓储、事件存储(Event Store)等概念进行了有效的封装和实现

  • 提供对现有流行框架的支持。比如:Apworks能够很好地支持AutoMapper、Nancy Framework、ASP.NET MVC以及ASP.NET Web API的使用和开发

  • 提供多样化的配置方式。开发人员可以在web/app.config中对Apworks框架进行配置,也可以直接在程序代码中构建配置对象,对框架进行配置。流畅接口(Fluent Interface)的引入,更是为Apworks框架的配置提供了便捷直观的编程体验

  • 提供基于Microsoft Patterns & Practices Unity的IoC容器和服务定位器(Service Locator)的实现。不仅如此,开发人员还能根据项目的实际需求对IoC容器和服务定位器进行扩展,使其能够支持更多的Dependency Injection(DI)框架。比如可以很方便地扩展Apworks,使其能够支持基于StructureMap、Ninject等流行的DI框架

  • 提供基于Entity Framework和NHibernate两种流行ORM的仓储实现。在应用程序中使用这两种仓储,也就基本涵盖了所有面向关系型数据库的对象持久化方案。Apworks还提供基于MongoDB的NoSQL对象持久化方案,以满足NoSQL解决方案的需求。不仅如此,开发人员还能根据项目的实际需求,对仓储实现进行扩展,以支持更多种类的对象持久化机制

  • 提供包括Event Aggregator、MSMQ以及Direct Local Bus的事件和消息派发机制。开发人员能够很方便地将领域事件派发到消息总线上,为应用系统的集成提供便捷。不仅如此,开发人员还能根据项目的实际需求,对消息派发机制进行扩展,甚至可以结合NServiceBus以及Microsoft Biztalk Server等企业级服务总线,实现复杂的消息路由和处理

  • 为CQRS架构提供了灵活的、基于SQL Server以及MySQL的事件存储(Event Store),不仅如此,开发人员还能根据项目的实际需求,对事件存储的实现进行扩展,以支持更多种类的存储机制

  • 为CQRS架构提供了多样化的领域仓储的实现。开发人员可以根据项目的实际需要来选择或者扩展领域仓储,比如可以选择仅将事件快照作为事件存储的仓储实现,来屏蔽事件回溯的功能,从而达到节省空间的目的

  • 为CQRS架构提供了可扩展的事件快照机制。开发人员可以通过简单的配置来决定是否使用事件快照,并定制事件快照的属性和行为

  • 提供了对AOP拦截的支持:通过引入Castle Dynamic Proxy,Apworks框架可以很方便地实现面向接口方法的AOP拦截;开发人员还可以根据项目的实际需求,选用由DI框架支持的AOP拦截方案,比如,可以选用Unity Policy Injection Extension作为AOP拦截的解决方案。

  • 简介 Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成。Apworks不仅能够很好地支持经典的分层架构,而且还能支持基于事件驱动的命令查询职责分离(Command-Query Responsibility Segregation, CQRS)架构。 随着软件系统日趋复杂,构建一套可用的、稳定的、可扩展的、安

  • 简介 Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成。Apworks不仅能够很好地支持经典的分层架构,而且还能支持基于事件驱动的命令查询职责分离(Command-Query Responsibility Segregation, CQRS)架构。 随着软件系统日趋复杂,构建一套可用的、稳定的、可扩展的、安

  • Apworks使用配置文件来启动整个系统。在上文中也能够看出,WCF服务在启动时,同时也启动了Apworks系统。所以,本节简要介绍这个WCF服务针对Apworks的相关配置节内容。 双击TinyLibrary.Services项目的web.config文件,根据下面的XML代码编辑该文件。 1: <?xml version="1.0"?> 2: <configuration>

  • 客户端程序通过命令告知系统“应该做什么”。事实上,这是一种单向的交互过程,客户端程序仅仅向领域模型发送命令请求,它们并不会通过领域模型来查询某些数据信息。在CQRS架构的应用程序中,“查询”是另一部分的内容,这将在接下来的章节中单独讨论。当应用服务器端接收到来自客户端的命令请求后,就会将这些命令推送到命令总线。命令处理器会侦听命令总线,并相应地处理命令请求。现在,让我们在TinyLibraryCQ

  • 在Apworks框架发布Alpha版本的时候,我已经针对其开发案例:Tiny Library CQRS写了Walkthrough文档,地址是:http://apworks.org/custom/documents/wlkthr_BuildAppsUsingApworks/。为了走国际化道路,这篇文章是全英文的,社区里有不少网友表示难以理解。趁着这几天不算很忙,我抽空将其又翻译回中文,并加入更多的批

  • Apworks框架实战(一):Apworks到底是什么? Apworks框架实战(二):开始使用 Apworks框架实战(三):单元测试与持续集成 Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始 Apworks框架实战(五):EasyMemo的领域模型设计 Apworks框架实战(六):使用基于Entity Framework

  • 根据wikipedia中关于“事件”的描述,“事件”可以被看成是“状态的一次变化”。例如:当一个客户购买了一台汽车,汽车的状态就从“待售”转变为“已售”。汽车销售系统则把这种状态的改变看成是一次事件的产生、发布、检测以及被更多其它应用程序所使用的过程。 对于CQRS架构的应用程序而言,事件产生于领域模型,并由领域模型发布事件同时由领域模型首次捕获并处理,因此,我们称之为领域事件(Domain Ev

  • 到目前为止,我们还未涉及任何数据库的配置工作。本章节将简单介绍基于Apworks的应用程序的数据库配置。在SQL Server中(目前的Apworks版本仅支持SQL Server)创建两个数据库:TinyLibraryEventDB和TinyLibraryQueryDB,然后分别执行如下SQL脚本: TinyLibraryEventDB 1: USE TinyLibraryEventDB;

  • 在本节,我们将介绍.NET WCF服务的创建过程。 在Solution Explorer中,右键单击TinyLibraryCQRS,然后选择Add | New Project…菜单,这将打开Add New Project对话框 在Installed Templates选项卡下,选择Visual C# | WCF,然后选择WCF Service Application,确保所选.NET版本为.NET

  •                 Apworks 是.net基于DDD开发的开源框架,对DDD不了解的,也可以通过这个框架“最佳实践”一下 官方地址 同时也可以在博客园找到大牛写的教程(我就是看到他写的才知道这个框架^_^) 博客园链接            再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.

 相关资料
  • 本文向大家介绍利用ASP.NET MVC+EasyUI+SqlServer搭建企业开发框架,包括了利用ASP.NET MVC+EasyUI+SqlServer搭建企业开发框架的使用技巧和注意事项,需要的朋友参考一下 我们要搭建的框架是企业级开发框架,适用用企业管理信息系统的开发,如:OA、HR等 1、框架名称:sampleFrame。 2、搭建原则:最少知识原则。 3、先定义一个简单的编码规范:除

  • 本文向大家介绍浅析Android企业级开发数据绑定技术,包括了浅析Android企业级开发数据绑定技术的使用技巧和注意事项,需要的朋友参考一下 这篇文章通过发文的方式让大家知道什么是数据绑定,以及为什么要用数据绑定等问题,有助于大家理解Android企业级开发数据绑定技术。 首先要了解什么是数据绑定?为什么要用数据绑定?怎么用数据绑定?   语法的使用 简单例子,数据绑定textview控件,一般

  • 本文向大家介绍java微信企业号开发之开发模式的开启,包括了java微信企业号开发之开发模式的开启的使用技巧和注意事项,需要的朋友参考一下 首先说微信企业号的开发模式分为:编辑模式(普通模式)和开发模式(回调模式) ,在编辑模式下,只能做简单的自定义菜单和自动回复消息,要想实现其他功能还得开启开发者模式。 一、编辑模式和开发模式对消息的处理流程  1.编辑模式下,所有的业务流程都配置在微信服务器上

  • 注意:本书中的 Service Mesh 章节已不再维护,请转到 istio-handbook 中浏览。 本节是根据由Nginx赞助,O’Reilly出版社出品的关于服务网格的书籍总结而来,本书标题是 The Enterprise Path to Service Mesh ,还有个副标题 Decoupling at Layer 5 ,第一版发行于2018年8月8日。这本书一共61页,本文是我对该书

  • 以下是为 linkerd 提供商业支持和其他企业产品的公司列表: Buoyant 是 linkerd 的原创者,并提供支持,培训和企业产品。 了解更多 »

  • 作用 用于查询企业账户额度、开票额度等信息。 依赖 暂无依赖 注意 所有接口调用时需要严格遵守请求方式(GET/POST) 使用接口前需要仔细阅读每个接口的注意事项 接口报错时先阅读通用错误解决方案和当前接口文档下的接口错误解决方案