域专题提供域的最新资讯内容,帮你更好的了解域。
在我的应用程序中有几层. 本主题将重点介绍域和基础结构层. 我在域层中有存储库接口ClientRepositoryInterface. 我在Infrastructure层中实现了此接口ClientRepositoryImpl. 但是为了在其存在的循环中间重构对象,我需要工厂(ReconstitutionClientFactory). 调用工厂将在存储库中. 埃里克埃文斯的书被描述为正常的做法. 但
好的,我读了很多关于存储库模式的东西,包括福勒的书. 我知道它是什么以及它做了什么,但是我不太确定它是如何被工厂和/或域对象调用的. 我所理解的是,存储库应该像域对象的内存中集合一样,而工厂是负责实例创建的类:new myDomainObject() 考虑到这一点,很明显存储库需要引用工厂来从数据源查询中创建新对象. (存储库 – >工厂) 域对象还需要对工厂的引用才能创建新对象. 我的困境是当域
我第一次使用DDD(.Net)使我的脚变湿了,因为我重新构建了一个遗留企业应用程序的一些核心组件. 我想清除的是,我们如何在适当的DDD架构中实现持久性? 我意识到领域本身是持之以恒的,应该使用“普遍存在的语言”进行设计,当然不会被迫进入本月的DAC的限制甚至物理数据库. 我正确的是,Repository Interfaces存在于Domain程序集中,但是Persistentory Implem
DDD声明您应该只能通过其聚合根访问实体.所以说,例如,你有一个聚合的根X,可能有很多孩子Y实体.现在,对于某些情况,您一次只关心这些Y个实体的一个子集(也许您正在一个分页列表中显示它们). 实现存储库是否可行,因此在这种情况下,它返回不完整的聚合? IE浏览器.一个X对象谁的Ys集合只包含我们感兴趣的Y实例,而不是全部?这可以例如引起X上的方法,其执行涉及Y的一些计算不如预期的那样表现. 这可能
请让我知道,如果我完全对DDD的概念感到温和,但这是我的困境. 假设我有以下域名模型: Teacher IList<Class> Class Teacher IList<Student> Student Class 现在,从DDD的角度看,老师是我的根源,事实上,在一个简单的应用程序中,我可以随着我的老师和她的班级和学生携带,并根据需要对他们采取行动.但是在SOA的情况下,我们
埃里克在他的书中涉及到模块的主题很少.他也没有谈论模块的结构与有界语境的关系与例子.有边界上下文包含包含边界上下文的模块还是模块?当一个应用程序有DDD,它可以容易地扩展吗? 当我们设计可扩展应用程序时,应用程序的结构非常重要. Microsoft MEF框架可以从dll自动发现模块/组件. 让我们举个例子.在电子商务应用中,我们可以为付款处理提供有限的上下文.付款处理可以是抽象的,所以我可以稍后
我仍然围着DDD缠绕,我遇到的一个绊脚石是如何处理单独的聚合之间的关联.说我有一个封装的客户和另一个封装的货运. 出于商业原因,出货是其自己的总计,但它们需要明确地与客户绑定.我的客户域实体是否有出货单?如果是这样,如何在存储库级别填充此列表 – 给定我将有一个CustomerRepository和一个ShipmentRepository(每个聚合一个repo)? 我在说“协会”而不是“关系”,因
我的团队非常努力地坚持使用域驱动设计作为架构策略.但是,大多数时候,我们的域名实体是非常有启发性的.我们希望将更多的业务/域名行为放在我们的域实体上. 例如,活动记录将数据访问放在实体上.我们不希望这样,因为我们很高兴地使用存储库模式进行数据访问. 此外,我们将软件设计为SOLID(Bob叔叔组合的五个软件设计原则).那么对我们来说重要的是在设计实体时注意单一责任,开放式,liskov,接口隔离和
我正在寻找关于在哪里添加域实体的验证规则的建议,以及实施的最佳实践.我没有搜索,没有找到我正在寻找,或者我错过了. 我想知道建议的方法是验证属性不是null,在一定范围或长度等…我已经看到几种方法使用IsValid()和其他关于在构造函数中执行的讨论,所以实体永远不会处于无效状态,或者使用预处理和后处理,而其他使用FluentValidation api,不变量如何影响DRY和SRP. 当使用Ap
我刚刚开始使用DDD,而且我想知道如何适应我的数据的关系性质.我有相信会被认为是我的总体根,但是它的总和也是自己的.不想违反德米特法案,我想知道我是否在考虑这个错误,希望有些DDD专家能够提供一些洞察力. 我的聚合根是我的Account对象,它具有多个AccountElement实体的聚合,这些实体本身是单个ProductComponent实体的逻辑分组. 帐户的上下文之外的AccountElem
只是希望得到小组关于如何处理实体的配置细节的想法. 我正在考虑的是高级设置,可能是管理员更改的.最终可能存储在应用程序或web.config中的事情,但是从DDD的角度来看,应该明确地将对象设置在对象的某处. 为了争论,我们以网络为基础的CMS或博客应用程序为例. 给定的博客条目实体具有任何数量的实例设置,如作者,内容等. 但是,您也可能想要设置(例如)默认描述或关键字,如果作者没有更改该网站的所
当您从控制器中的UI接收到字符串格式的参数时,是否直接将字符串传递给应用程序服务(或命令)? 或者,您是否从控制器中的字符串创建值对象? new Command(new SomeId("id"), Weight.create("80 kg"), new Date()) 要么 new Command("id", "80 kg", new Date()) new Command("id", "80",
我有一个聚合的根产品,其中包含一个实体选择列表,它们又包含称为“特征”的实体列表. >聚合根产品具有刚刚名称的身份 >实体选择具有名称的身份(及其对应的产品身份) >实体特征具有名称的身份(也是相应的选择标识) 实体的身份如下构建: var productId = new ProductId("dedisvr"); var selectionId = new SelectionId("os",pr
我正在努力与聚合和聚合根.我有一个天然的聚合根,用于大约60%的用户请求.即这些请求自然地适用于聚合根. 在我的集合中,我有另一个实体,只能作为总根的成员存在.然而,用户将被告知有关该其他实体对象.有时在概念上有意义的是,用户可以直接在这个非聚合根对象上操作. 所以,我想我有几个选择: >根据用户请求的操作,它们都可以是聚合根. >所有操作必须通过顶层聚合根. 请注意,顶层聚合根将保存此另一实体的
我第一次尝试使用DDD,我遇到了聚合设计的问题. 我的申请包含3个实体;图,节点,链接.这些实体中的每一个都有一个name属性,可以由用户修改(我认为’name’不适合作为Entity id).图表包含节点集合,节点具有传出链接集合(出于此问题的目的,忽略传入链接是安全的).每个节点一次只能与一个图形关联(但可以在图形之间移动),同样,每个链接只能在任何给定时间与一个节点关联(但可以移动). 我试
优点: >存储库隐藏复杂查询. >存储库方法可以用作事务边界. > ORM很容易被嘲笑 缺点: > ORM框架已经提供了一些集合,如持久化对象的接口,存储库的意图是什么.因此,存储库为系统增加了额外的复杂性. >组合爆炸时使用findBy方法.可以使用Criteria对象,查询或示例对象来避免这些方法.但是要做到这一点,不需要存储库,因为ORM已经支持这些方法来查找对象. >由于存储库是聚集根(在
我对BDD的理解是描述用户故事中的系统,然后开发人员将这些用户故事转化为应用程序,旨在为每个“sprint”(软件开发期)增加真正的商业价值.结果(据我所知),在整个开发过程中,域模型来自用户故事.也就是说,在第一个“冲刺”之后,大部分领域模型将不会被设计. 我对DDD的理解是,软件开发继续参考完整的域模型,尽管是一个不断发展的模式.在DDD中,模型预计会发生变化,但始终是“完整”的. 这似乎是两
我正在研究我的第一个“真正的”DDD应用程序. 目前,我的客户端无法访问我的域层,并通过发出命令请求更改域. 然后我有一个单独的(扁平的)读模型用于显示信息(如简单的CQRS). 我现在正在进行配置,或者特别是用户配置的设置.以博客应用程序为例,设置可能是博客标题或徽标. 我开发了一个通用配置构建器,它基于一个简单的键值对集合构建一个强类型配置对象(例如BlogSettings).我坚持认为这些配
请原谅任何无知,我对DDD相当新,所以要温柔. 我正在研究一个大型配置驱动的数据管理系统.通过在外部语法中指定配置(如业务规则,进程和验证)来构建系统.我们只想说语法是基于Groovy的DSL和Drools的集合体. 我喜欢DDD提供的简单性概念,特别是将基础架构问题与域的核心概念分离开来. 但是,由于系统的可配置性,我正在努力应用DDD的一些概念.行为(流程),验证和业务规则都是在系统外部定义的
我已经阅读了一些关于Getters和Setter使用的文章/帖子,以及它们如何帮助破解域模型对象中封装的目的.我理解不使用setter的逻辑 – 你允许客户端代码在对象业务规则和不变量的上下文之外操纵该对象的属性. 现在这位校长仍然困惑我.例如,如果我需要更改对象的成员变量的值,会发生什么?例如,如果某个人的姓名发生变化,我该如何在模型中反映出来?起初我想,为什么没有一个名为’ChangeName