窈窕ABP DDD好逑 上下文

上下文说明

  领域驱动设计中有个一非常重要的概念,叫界定上下文。目的是对当前活动的范围作出限制性说明,所有分析、验证、结论,只有在指定的界定上下文中,探讨它们的合理性才有意义,一旦超出了这个上下文,讨论他的合理性和正确性,就直接跑题了。

  应用DDD领域驱动设计,就是为了更好的分析业务本质上的知识、关系、流程。最终的输出与客户的需求不一定完全一致。因为客户虽然能够熟练的完成工作,但很少有人能总结出自身业务知识,及对业务流程的合理性作出深入的分析和评价。企业的人员岗位配置,人员素质,所使用的信息化工具,决定了大多数企业业务流程,具有一定不合理性,但还能正常运转。随着企业的发展,很多业务流程中的不合理性开始发挥作用,会让企业陷入泥潭,步履维艰。所有开发企业应用的出发点,应当首先是找出业务本来应该是怎么样,然后通过开发信息化工具作为支撑来实现,让业务流程回归到它合理的状态。这是我对开发企业应用的理解和选择领域驱动设计开发企业应用的目的,也就是DDD的上下文。

  解决了业务分析设计的问题,接下来就是技术落地的问题,再好的设计最终不能实现,就变成了纸上谈兵。领域驱动设计的方法之所以没有被广泛采用,就是因为其对于开发者的素质要求高,很多知识不可以复制,只能凭经验。软件的开发过程由流水线生产,变为艺术品的创造,对大团队的管理和配合提出了更高的要求。上坡路就是这么艰难,但必须去挑战。最开始,我采用传统的需求分析方法,三层架构技术开发生产企业的物料追踪管理软件,依照客户的需求做,等到上线后才明白,这不是客户所需要的东西。需求分析方法和思路有问题。接着采用Apworks框架,基于DDD领域驱动设计的思路,重新分析和设计软件,解决了需求分析和功能设计的问题,但是遇到了技术落地的问题,现在终止了。后来发现了ABP框架,经过分析和研究,发现它对所有之前遇到导致技术难以落地的问题,都有非常完美的解决方案。

  DDD是可以对症的好药方子,ABP是货真价实的好药材,能解决问题吗?不行。还有很重要的一步,服药的方法,只有把这一步也解决好了,才能修成正果。接下来的系列博客,将以采购管理模块的开发为依托,介绍领域驱动设计的业务分析方法,并应用ABP框架支撑起业务分析的输出,最终实现一个梦幻般的采购管理模块。

时间: 2024-10-16 12:05:54

窈窕ABP DDD好逑 上下文的相关文章

ENode框架Conference案例分析系列之 - 上下文划分和领域建模

前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的用户有两类:1)客户,可以创建和管理会议:2)会议座位预定者,可以预订会议座位.具体的关键业务描述如下: 客户创建一个会议,并录入会议的基本信息,比如名称.时间段.地点,等:会议创建后,系统会为客户自动生成一个AccessCode,客户可以通过AccessCode访问自己创建的会议: 客户定义某个会

领域驱动设计(DDD)实现之路

2004年,当Eric Evans的那本<领域驱动设计——软件核心复杂性应对之道>(后文简称<领域驱动设计>)出版时,我还在念高中,接触到领域驱动设计(DDD)已经是8年后的事情了.那时,我正打算在软件开发之路上更进一步,经同事介绍,我开始接触DDD. 我想,多数有经验的程序开发者都应该听说过DDD,并且尝试过将其应用在自己的项目中.不知你是否遇到过这样的场景:你创建了一个资源库(Repository),但一段时间之后发现这个资源库和传统的DAO越来越像了,你开始反思自己的实现方式

领域驱动设计(DDD)

领域驱动设计的概念 大家都知道软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前通常需要进行大量的业务知识梳理,然后才能到软件设计的层面,最后才是开发.而在业务知识梳理的过程中,必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计(DDD,Domain-Driven Design)的基本概念 . 为什么需要 DDD 在业务初期,功能大都非常简单,普通的 CRUD 就基本能满足要求,此时系统是清晰的.但随着产品的不断迭代和演化,业务

[从0到1搭建ABP微服务] - 搭建Business微服务

简介 互联网产品主要分为两大类,分别是B端产品和C端产品.B端产品主要管业务(Business)代表系统有ERP.WMS.CRM等,C端产品主要管消费者(Consumer)代表主要就是各种电商网站如淘宝.京东等.本篇文章将基于ABP框架搭建一个Business微服务,后续我会逐渐添加一些实用的业务功能到Business服务中. 新建项目 在MicroServices目录中创建一个新的 asp.net core 项目Business.Host 空项目结果如下: DDD分层 在空项目中使用DDD设计

CloudNotes之领域建模篇:领域模型简介

CloudNotes领域模型还是相对简单的,并不一定需要采用面向领域驱动的设计方法来解决CloudNotes的领域问题.但出于以下几个方面的原因,我还是采用了面向领域驱动的方式来开发CloudNotes: 领域驱动是企业级应用开发的一种指导性模型,以领域模型作为软件开发的中心,符合解决问题的基本思路 现有的企业级应用开发框架对面向领域的开发模式支持得越来越好,如果选用这种方式,可以在CloudNotes中更好地利用这些框架的最新功能,为系统开发寻求新的机遇 自己对领域驱动设计相对比较熟悉,而且也

软件开发中会用到的图

阅读目录 背景 图为了解决什么问题 不同流程中适合运用的图 实际的运用 结语 一.背景 大家应该在从事软件开发领域工作时间有一段时间之后,就开始有画图的意识,不管是懵懂的学别人还是想更好的让其它人理解自己的一个观点.所谓“一图胜千言”,我们身处于软件开发这个水很深且要求精确的复杂领域里,要想把事情做好,最基本的是要把事情想明白,其次还要让相关的人能够明白你要说的东西,进行协作. 特别对于一位架构师来说,能否画得一手好图尤其重要,因为相关的干系人数较多,要让不同领域的人能够达成一个统一的认识,是一

华为云提供针对Nuget包管理器的缓存加速服务

在Visual Studio 2013.2015.2017中,使用的是Nuget包管理器对第三方组件进行管理升级的.而且 Nuget 是我们使用.NET Core的一项基础设施,.NET的软件包管理器NuGet.org是一项面向全球用户搭建的服务,不论用户身在何处,NuGet.org都应该有能力提供高性能的服务.2017 年微软针对中国访问Nuget服务的访问慢的问题进行了优化,把Blob存储备份到中国本地,并使用本地CDN服务商来处理软件包下载请求,具体参考 https://blog.nuge

架构模式: 领域事件

架构模式: 领域事件 来自领域驱动设计(DDD). 上下文 服务通常需要在更新其数据时发布事件.例如,可能需要这些事件来更新CQRS视图.或者,该服务可能参与基于 choreography-based saga编排,并使用事件进行协调. 问题 服务在更新数据时如何发布事件? 解决方案 将服务的业务逻辑组织为DDD聚合的集合,这些聚合在创建或更新时发出域事件.该服务发布这些域事件,以便其他服务可以使用它们. 关联模式 Saga和CQRS模式创造了对这种模式的需求 Aggregate模式用于构建业务

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发