首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在阅读有关DDD之后,您现在正在使用哪些做法?

在阅读有关领域驱动设计(DDD)之后,我正在使用以下做法:

  1. 领域建模:根据业务需求,将系统划分为不同的领域,并定义领域对象、聚合根、实体、值对象等概念,以及它们之间的关系和行为。
  2. 领域事件:识别和定义领域中的重要事件,并使用事件驱动的方式进行系统设计和开发,以保证领域对象的一致性和可扩展性。
  3. 聚合根:将相关的实体和值对象聚合到一个聚合根中,通过聚合根来保证数据的完整性和一致性,并定义聚合根的边界和操作。
  4. 领域服务:识别和定义领域中的复杂业务逻辑,并将其封装为领域服务,以提供更高层次的抽象和复用。
  5. 领域驱动设计模式:应用常见的领域驱动设计模式,如实体、值对象、仓储、工厂、规约等,以提高系统的可维护性和可测试性。
  6. 领域事件溯源:使用事件溯源的方式记录和回放领域事件,以实现系统的事件驱动和历史追溯功能。
  7. 领域驱动设计工具:使用一些领域驱动设计工具,如领域建模工具、领域事件管理工具等,来辅助领域驱动设计的实施和管理。

以上是我目前在阅读有关DDD后正在使用的做法。这些做法可以帮助我更好地理解和应用领域驱动设计的思想,提高系统的设计质量和开发效率。对于具体的实施和工具选择,可以根据具体的业务需求和技术栈来进行调整和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何将单体分解成微服务

我们可以随时直接查询数据库,应用程序的其他部分调用我们想要的任何功能,而不必考虑整体架构组织,因为我们正在向现有架构插入新代码。...例如,结算应用程序中,某些领域可能是地址验证,运输,税收和支付处理。软件中,这种分解或构建的代码是根据业务逻辑而进行组织的行为称为领域驱动设计(DDD)。...或者,如果决定保留单体架构,现在可以易于迭代的状态下轻松理解应用程序中发生的情况。 至此,我们可以采取下面一些步骤来组织我们的代码。...它使用目的地地址,运输来源和商店的税务关系来获得订单的税率。即使一个单体代码库中,这种单个接口背后隐藏所有细节的做法也是一个很好的习惯。...如果发现自己的代码库变得太大,无法快速迭代,请立即开始尝试将其分解或破解。使用本文中描述的DDD概念将的单体组织架构分解到明确的子域中。

62210

如何运用领域驱动设计 - 存储库

目录 概述 直接看东西 被广泛使用的仓储 仓储是反模式吗 什么是存储库 如何运用存储库 存储库是为聚合提供操作 存储库对外提供哪些方法 存储库是一个明确的约定 审计追踪 汇总 不要使用过多特性干扰的领域对象...Github代码中,您可能会看到一个叫做MiCake(米蛋糕)的东西,它是我们一步一步实现的DDD组件,它会让的 aspnet core 应用更轻松的融合DDD的思想,并且它包含了我们该系列博文中所提到的所有战略组件...而现在,您可能正在这样做,开放且灵活的约定,再加上延迟的IQueryable对象,让仓储层完全丧失了原有的作用,它反而成了负担,为什么不直接使用DbContext对象呢?...不要使用过多特性干扰的领域对象 持久化的过程中,现在的主流方式我们都会依赖于类似于EF Core这样的ORM框架来完成。...这些特性对领域对象其实是没有必要的,它可能还会干扰阅读。因为我们构建领域对象的时候不应该考虑数据持久层面的问题,而构建出来的领域对象也应该保持干净。

95830

DDD 落地难?这三个迭代让你从入门到进阶 | 极客时间

第二遍阅读课程(正在进行中),我的关注点主要放在了 DDD 代码实现层面,主要会对比迭代中的代码,与我当前的项目结构以及代码组织方式有什么异同。...对比之后不难发现,按打横与打竖的分包方式,后面的包结构各层下面会更加细粒度。虽然包结构变多了,但是 Domain 层的各聚合内,代码显得更加紧凑、高内聚。...还有一些需要注意的点,需要根据上下文结合判断(这也是 DDD 原书中提到的),比如在邮政软件或地图软件中重新划分了行政区域,那么所有使用邮政软件或地图软件的地址都将改变,这个上下文里面,地址就是**实体...我尝试了课程学习过程中去阅读一些相关图书,感觉对巩固知识很有帮助。迭代一第 12 节课中,老师的案例用到了不少重构手法,我们可以《重构》原书中找到对应的章节。...另外,再补充一个我实际开发时发现的问题,也和封装性有关。项目开发中很多小伙伴喜欢用的 lombok 插件,虽然能够为我们节约一些时间,但不假思索地使用 @Data 注解会破坏封装性,需要收敛着用。

18310

DDD】持久化领域对象的方法实践

开篇 本篇文章属于《如何运用领域驱动设计》系列的一个补充,如果阅读过该系列的其它文章,您就会发现关于“持久化”的这个问题已经不止一篇博文中提及到了。 那么,到底是什么原因让我们面临这个问题呢?...如果喜欢捕猎有关DDD的知识,您可能不止一次会看到这样一条建议规则: In the world of DDD, there’s a well-known guideline that you should...来说一下持久化为字段的情况 该手段其实在近期来说比较流行,特别是EFCore2.0之后,为什么呢?...但是如果按照上面那个多使用值对象的准则的话,这种情况的项目中非常的常见。...这种做法虽然更贴近于现实建模,但是某些时刻我们真的需要建立一个集合值对象,比如开篇提到的City,如果我某个场景会用到多个城市信息呢?

1.6K30

「领域驱动设计DDD」事件风暴简介:实现域驱动设计的简便方法

虽然DDD社区的事件风暴正在增长,但在该专业之外几乎不为人知。这是一种耻辱,因为只有主持人必须是DDD从业者才能指导小组走向完整的模型。包括非技术产品所有者在内的每个人都可以参与对域的理解和建模。...使用域事件来推动建模,因为技术人员和领域专家都很容易理解。域事件几乎没有关于设计的说明,也没有关于实现的内容,这正是你想要的一个好的域模型。...一种不同的建模方法 更传统的DDD建模工作通常由小组或个人开发人员完成,有时与产品所有者就数据,对象或行为进行几次对话之后。不幸的是,这开始建模的程度太接近实现域,而不是局限于业务领域。...他们必须学习它,定义它,改进它,并在有关模型的对话中专门使用它。...使用协作组学习,您将实现快速的域驱动建模,而无需每个人都必须成为DDD专家,的团队和术语将与业务领域专家的一致。

2.1K31

为什么说架构师也需要了解资本投资动向 | ArchSummit

编辑 | 薛梁 策划新一届 ArchSummit 架构师峰会之际,我们首要考虑的是最近大家关注什么技术?业界有哪些新的落地技术方案?...比如说,字节使用 Kubernetes 的过程中,随着集群规模增大,etcd 成为制约集群可扩展性的瓶颈,经常出现读写延迟增高、OOM 等问题。...这也是这次 ArchSummit 会议上,云原生专题将重点关注的几个话题,紧贴业界的使用场景,解决大部分云原生环境下的技术问题。 目前确认了哪些大咖嘉宾?...1、架构设计上,有哪些经验可以传递给听众?...看到这里,如果你还想到大会上来演讲,分享最新的技术实践,可以申请平台填写的话题 https://jinshuju.net/f/7wUiwn 了解更多的专题内容,欢迎点击【阅读原文】查看专题设置。

32810

不懂DDD,你永远写不好React!

发布于我的博客,你可以通过下方链接阅读原始内容(如有纰漏会及时更新)。另外,你还可以阅读知乎专栏《前端数据治理》阅读有关我在前端如何思考和解决数据的相关系列文章。...2C应用要满足大量用户使用时的舒适性,因此要提高项目中有关性能、用户体验、效果等方面的要求,以吸引用户付费。...前后端有别 自从前后端分离流行之后DDD从某些技术层面上已经过时了。...而现代系统开发前后端分离之后,一套系统需要依赖前后端两个团队完成,这导致原本可以排除其他业务模块之后可以独立运行的业务模块,现在不可能存在,因为现在的架构模式,导致前端代码一次性囊括所有模块,而后端代码模块间也具有较高的耦合...我们使用时,主要是去使用Transfer实例化出来的对象,这个对象应该具备3个字段,且每个字段应该具备哪些规则(约束)都是提前规定好的。 上面是我们对转账这个业务中的对象进行建模。

1.9K30

软件说明书可以从桌面游戏中学到什么

三步走,大喊一声,嘿,现在不要看了,但是你已经玩游戏了,拉弓没有回头箭了! 公平地说,这三个步骤没有涵盖很多细微差别。幸运的是,正在玩!”...我们不觉得我们正在阅读说明,因为我们正在积极地玩游戏。这样,我们不是阅读说明。我们使用规则作为参考,边玩边学。这实际上是游戏的一部分....但是,当为的是更好的说明时,会感到惊讶。例如: 简易三步走: 1.给读者一个清晰的切入点。正在阅读用户指南的人们想知道如何使用的应用程序,而不是了解促使编写应用程序的原理。...列举了“入门”列表之后,请确保将的用户能走得更远。这就是的销售重点:看起来上手起来有多容易! 只花了三步! 现在,您是否不想阅读接下来的三段内容,以了解您可以从此处完成哪些有趣的事情?...三个段落 向用户保证他们可以继续使用并成功使用该应用程序之后,请与他们讨论下一步该怎么做。他们是否正在使用此应用程序来构建或分析小部件?这可以同时进行。它们是服务器上设置此应用程序还是本地使用

70300

MaskCam:Jetson Nano AIoT口罩检测相机

它将检测统计信息上载到云中,在其中可以使用Web GUI监视摄像头正在观看的区域中的口罩合规性。...该项目MIT许可下也完全开源。有关使用和修改MaskCam的更多详细信息,可参见GitHub存储库(https://github.com/bdtinc/maskcam)。...观看实时视频流 如果滚动浏览日志而没有看到任何错误,则应该找到类似以下的消息: Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam aaa.bbb.ccc.ddd...编辑数据库环境文件之后,您可以构建所有容器并使用单个命令运行它们: sudo docker-compose up -d 发出命令后请等待几分钟,以确保所有容器均已构建并正在运行。...现在的本地Web服务器已经设置好,并准备从Jetson Nano接收MQTT消息。

1.3K20

MaskCam:Jetson Nano AIoT口罩检测相机

它将检测统计信息上载到云中,在其中可以使用Web GUI监视摄像头正在观看的区域中的口罩合规性。...该项目MIT许可下也完全开源。有关使用和修改MaskCam的更多详细信息,可参见GitHub存储库(https://github.com/bdtinc/maskcam)。...观看实时视频流 如果滚动浏览日志而没有看到任何错误,则应该找到类似以下的消息: Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam aaa.bbb.ccc.ddd...编辑数据库环境文件之后,您可以构建所有容器并使用单个命令运行它们: sudo docker-compose up -d 发出命令后请等待几分钟,以确保所有容器均已构建并正在运行。...现在的本地Web服务器已经设置好,并准备从Jetson Nano接收MQTT消息。

1.2K20

【领域驱动设计】Redux 和领域驱动设计

目前,DDD 有更多的书籍、更多的示例,并且已被证明可以有效地扩展和保持大型系统中的高级性能。如果听说过 Event-Sourcing 或 CQRS,那么已经与 DDD 擦肩而过。...主要目标是许多位置实现跨多个微服务的系统扩展。使用的抽象是查询、命令、域事件和聚合。应用程序将查询和命令指向聚合,聚合执行所有计算,域事件整个系统中保持最终一致性。...如果您想了解有关 DDD 的更多信息,我强烈建议阅读 Vernon Vaughn «Domain-Driven Design Distilled» (2016) 的书。...减少一个动作之后,它就变成了一个事实,一个不会改变的东西。 聚合:聚合是计算所有更改的人;这是减速机(reducer)。 不幸的是,Redux 词汇表并不容易区分命令和领域事件。...现在产品已经消失了。该产品不再依赖于该单元。我们减少了应用程序的耦合,我们可以不更改任何代码的情况下从系统中插入和拔出单元。 Redux 做同样的解耦。每个组合的减速器就像一个聚合体。

1.4K30

实现业务逻辑三种方式:事务脚本、贫血模型、DDD

事务脚本的思路就跟面向过程编程一样,要达到目标,需要哪些步骤,然后一步一步操作。...而且当时架构风格都是单体架构,这样就有一个相对现在隐藏的背景条件:同一个节点中,在内存中能得到所有的上下文信息。 如上图,可以看出整个smalltalk的整体体系,除了虚拟机之外,还有虚拟镜像。...比如N+1性能问题,还需要对象追踪技术[1],如dirty tracking DDD Rich Model DDD是什么[1]也有提到,当前软件复杂性越来越高,程序员其实不是在编写代码,而是摸索业务领域知识...面向对象的程序中,用户界面、数据库和其他支持代码,经常被直接写到业务对象中。UI和数据库脚本的行为中嵌入额外的业务逻辑。这正是上面两种模式的做法。...实现一致的模型驱动对象变得不切实际,而且自动化测试也难以使用。如果在程序的每个行为中包括了所有的技术和逻辑,那么它必须很简单,否则难以理解。 DDD分层[3]就是一种解决方式。

97710

如何撰写精彩的技术博客文章

例如,目前关于如何申请技术会议的帖子不多,因此有关这方面的内容可填补社区空白。 以下是可以使用的一些特定类型的帖子。...示例来自 Apollo 博客上与 GraphQL 相关的帖子: 1.实现特定目标的分步指南:“使用 FlatList React Native 中构建一个出色的可滚动列表”或“使用 Apollo 和...一旦有了这些,通过删除任何没有用的东西来保证你的文章主旨,避免添加额外的细节,因为他们需要有关联。 我发现相对简洁的帖子,阅读时间 5-10 分钟时是成功概率最大的。...然后,告诉读者他们阅读此文会知道什么。提前揭秘可能很诱人,但要注意:如果你没有好的提示,读者就不会围绕这个点去阅读。 中间 现在已经告诉读者会阅读什么,请满足他们的期待!...练习没有替代品 写作时,我们只是介绍了五个最重要的事情,从提出想法到发布。 现在你已经阅读过了,你尝试应用这个建议,看看哪些对你有用。 我会留下最后一点建议。

1.1K70

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

不过初步学习、实践之后我又带着疑问与自己的思考重新读了一遍相关的著述理论。逐渐领悟到DDD作为一种思想,其实离我们很近。...我曾经互联网部门分享过如何进行领域建模,也欢迎大家与我交流沟通,有兴趣的读者也可以重点阅读一下《UML和模式应用》相关章节。...4、DDD是一种思想 我愚昧的认为,DDD即业务+解耦。大道至简、多么熟悉的场景,因为这就是我们在做的事情,只不过我们可能过于关注使用了什么技术框架、用了哪些中间件、写了哪些通用的class。...但是在实践中,这种做法并不总是可能的,想像一下,谁没有维护过“毛线团”系统,现在我们就要借助界限上下文来安全的、合理的、快速的理顺这堆交织不清的关系。...因为要解决问题空间,必须使用对应的子域,你可以把它拆解出去,但是它始终存在于依赖网中。 我们通用的做法相交的地方,定义接口。由支撑的界限上下文去实现,可以做到支撑上下文的插拔式切换。

1.3K42

React语境下前端DDD的长年探索经验

作者将多年的积累探索经验总结分享出来,从对业务的思考、react项目的特征出发,阐述项目中进行的前端DDD探索。欢迎阅读和交流。...阅读上书过程中我们反复意识到,这本书是写给技术人员的看上去都是技术字眼但实际上是传播工作方法的一本方法论书籍。如果有这样的想法,那么阅读此书,特别是后面的章节时,就不会越来越混乱。...因为对于业务而言,这一功能可能会在5年甚至10年后还要继续使用,而如果功能不够健壮,或者设计之初没有充分考虑业务发展后所需要的扩展能力,很有可能在之后的迭代中给自己挖下巨大的坑。...这是两个再普通不过的class进行建模,现在的问题是:如果我们在前端使用这两个模型,我们无法与我们已有的UI框架配合使用,比如在react中或vue中使用。...截止到这一步,你会发现,我们的业务模块中,还没有任何有关UI的具体实现,但是,我们几乎已经把需求文档中有关业务的实体对象、某些与业务流转相关的交互,都用代码表达出来了。

63540

如何阅读机器学习论文

在这里我不会试图说服你为什么需要阅读技术和研究论文。我们日常生活中使用的几乎所有算法都来自技术文献或者以教程或更简单的代码形式出现。...要了解有关感兴趣的特定主题的更多信息,最近的发现是什么,到目前为止已经完成了哪些研究,还有哪些问题需要回答。 有很多我们不知道并且可以完全理解,这个可以让我们知道学无止境。...如何阅读现在手头上有一份论文,并且有明确的目标,您将能够轻松浏览它并以更好的方式理解论文。你不需要在一开始就阅读高度复杂数学公式的论文来养成这个习惯。...如果你的目标只是让自己熟悉一种新方法,那么也许第二遍就足够了,但是如果手头有一个特定的任务,正在尝试找到其解决方案,那么请继续进行第三次阅读第三遍,请彻底阅读数学部分。...使用笔和纸将方程式分解为基本层次,阅读的同时也需要查阅外部资源以了解不熟悉的术语和概念。 从本质上讲,你正在重写论文并了解论文的各种元素的本质。

39640

版本控制简介

“ 托管网站”指南中,了解了如何通过安装和配置Web服务器,数据库和PHP来托管的网站。现在是时候用版本控制来保护的数据并顺利处理代码更新。...例如,如果正在自己的个人计算机上编辑文件并决定删除一段代码,则可以使用版本控制将来恢复该部分代码 - 即使是从现在开始的几周或几个月以后。...有关更多信息,请参阅Git文档网站。您还可以阅读我们的Git源代码管理指南。...已成功创建了一个Git存储库,指定了应跟踪哪些文件,并进行了初始提交。接下来让我们看一下版本控制工作流程,以了解如何在现实场景中使用Git。...例如,如果习惯于修改生产环境中的文件 - 这是一种绝对不推荐的危险做法 - 学习使用版本控制系统将修改后的文件从开发环境部署到的登台和生产环境。坚持下去!回报是值得的。

1.8K30

领域驱动设计简介(上篇)

的软件生涯中,您可能已经遇到过许多这些想法,特别是如果您是OO语言的经验丰富的开发人员。但将它们一起应用将允许构建真正满足业务需求的系统。...使用DDD,我们希望创建问题域的模型,持久性,用户界面和消息传递的东西可以以后再创建,这是需要理解的业务领域,因为正在构建的系统中,可以区分公司的业务、核心竞争力以及竞争对手情况。...DDD并没有强制要求使用面向对象来构建领域 - 例如,我们可以使用规则引擎构建模型 - 但是考虑到主要的企业编程语言是基于OO的,大多数模型本质上都是OO。毕竟,OO基于建模范例。...现在,“整个团队”敏捷实践正在成为主流,这也很有意义。 模型和上下文.........下游也是如此:哪些系统将使用我的服务,如何将我的功能作为服务公开,他们是否会对我有利?误解了这一点,的应用程序可能很容易失败。 层和六边形 现在让我们转向内部并考虑我们自己的BC(系统)的架构。

38820

「技巧」如何在图片搜索中排名更高

但是,即使非常熟悉为搜索优化页面内容,也可能不知道从哪里开始优化图片。需要考虑哪些因素?关键字的使用是否仍然适用? 在下面,我将给各位同学介绍有关图片搜索优化的所有知识。...然而,因为你也希望你的图片看起来很好,引人注目,特别是如果他们是你的网站的第一部分,人们图片搜索看到,你也不想牺牲质量。因此,找到平衡是必要的。 哪些文件类型搜索优化中最有帮助?...3、Alt属性 Alt属性,是图片的替代文本,如果的图片加载失败,或者用户正在使用辅助设备(如屏幕阅读器)访问的网站,则会显示替代文字。...因此,替代文本和标题文本标签字段是放置任何关键字与的图像相关的最佳地点,但:不要乱堆砌关键字!这是一个图片搜索引擎优化的不良做法,这种做法很容易被搜索引擎识别,并且会收到处罚。...这也可以通过图像旁边使用共享按钮来实现。一旦的图片在多个网站上分享,其流行度将有助于搜索的成功。 图片的流行可以来自点击到的网站,嵌入和分享在其他网页。

847110

微服务 - 从想法到迈出第一步

对于登台和制作,经常会面临这样的愿望:失败的情况下,通过简单的回滚执行输出。拥有关于如何打包和部署服务的公共基础设施、策略和过程将使开发和操作更加容易。...安全 的服务需要知道他们正在谈论的对象(身份验证)以及允许哪些数据和操作(授权)到所述身份。...现在我会试驾它,并将其保留在“观看”列表中。 Istio(服务网格) Istio是2017年5月发布的服务网格。在内部,他们正在使用Envoy(下面介绍)。...我希望通过列出最近读到的知识,我正在阅读的知识和我计划根据其他书籍中的建议以及多位软件体系结构专家阅读的书籍,列出我最近阅读的书籍。...第3部分当他开始涉及非常具体的信息时,使这本书成为我的一个完整的赢 阅读和将要阅读列表 以下书籍目前正在阅读,基于前几本书中的建议以及软件架构专家。

58021
领券