我读过这个问题:IEnumerable vs IReadonlyCollection vs ReadonlyCollection for exposing a list member和这个问题:ReadOnlyCollection or IEnumerable for exposing member collections?.我很有意思这些答案是几年前写的. Jon Skeet的回答表明我应该使用IReadOnlyCollection而不是
我对DDD有点新意,甚至在阅读了蓝色和红色书后,我仍然有一些关于如何将一些原则转换为代码的问题,特别是使用Kotlin和Java. 例如,我标识了一个客户端聚合根,它接收一些参数需要它来创建,如名称和地址: class Client: AggregateRoot { var clientId: ClienteId var name: Na
我只是想知道如何最好地处理跨多个服务层的事务.服务层使用ORM来存储和从数据库中检索.是否应该在各个服务层内知道和处理交易?或者它们应该由另一层处理? 例如:我有两个服务层供用户和客户使用.我想要: 1)创建并保存新客户端 2)创建并保存新用户3)将该用户分配给客户端 所有这些都在一
我有以下基本实体: public class Basket { public List<Product> Products {get;set;} } public class Product { public string Name {get;set;} public decimal Price {get;set;} } 我想得到一个低于固定价格的篮子里的所有产品清单.这个逻辑是否应该进入篮子,如下
在锻炼你的DDD技能时,假设你有这样的对象: class Person { Set<Address> addresses = new HashSet<Address>(); } 是否允许正常/完全访问集合更合适: Set<Address> getAddresses() { return addresses; } 这将允许调用者在他们认为合适时添加/删除地址,或者,在这种情况下
在“领域驱动设计:解决软件核心中的复杂性”中,Evans定义 An Aggregate is a cluster of associated objects that we treat as a unit for the purpose of data changes. 显然,这意味着必须在单个事务中更新聚合. 但是,事务必须只更新单个聚合吗?如果是这样,为什么? 我的研究 我问
当谈到具有现代ORM的分层应用程序时,我常常不确定如何创建特定类以遵守所谓的“最佳实践”,同时还要关注性能要求. 考虑到应用程序中可能包含以下任意类型的对象: >域实体 – 这些是包含业务逻辑的丰富类(对吗?),并且根据ORM功能,可能与持久性设计直接相关. > DTO – 这些是更简单的
我们目前正在为ASP.NET MVC/C++#中正在开发的新软件应用程序完成架构计划. 我们计划按照领域驱动的设计模式和技术构建应用程序,我想知道是否有人对所提议系统的某个方面有任何建议/意见. 其中一个业务要求是允许用户选择他们感兴趣的任意数量的业务事件,然后选择在事件发生时如何
我正在学习DDD(域驱动设计)和存储库模式(在C#中).我希望能够使用存储库模式来持久化实体,而不关心实际使用哪个数据库(Oracle,MySQL,MongoDB,RavenDB等).但是,我不知道如何处理数据库特定的id:s大多数(所有?)数据库使用.例如,RavenDB要求它应存储的每个实体都具有string类型的id属性.
我正在尝试实现DDD并感觉我掌握了它,但我也遇到了一些问题. 在我的90%的域对象中,我想知道对其进行更改的最后一个用户.我不需要完整的审计跟踪 – 这对我的需求来说太过分了. 我的所有类都实现了一个抽象基类,包含: public abstract class Base { public User LastC
在我的域中,每个域实体可能有许多值对象.我创建了价值对象来代表金钱,重量,数量,长度,数量,百分比等. 这些值对象中的每一个都包含数值和度量单位.例如. money包含货币值和货币($,euro,…),weight包含数值和重量单位(kilo,pound,…) 在用户界面中,这些也是并排显示的:字段名称,其值
最近我参加了CQRS研讨会,让我想知道在使用事件采购时如何存储事件. 我认为在每个单个事件之后整个应用程序应该处于有效状态(否则重放功能是无用的).这意味着事件应该按照它们发生的顺序存储.我还认为所有聚合的事件顺序很重要.例如,用户可以制作产品和订单(产品和订单都是单独的聚
我试图通过使用抽象模型和装饰器来实现用于层间通信的新架构方法. 传统上,当我们设计单片应用程序的层时,我们将拥有应用程序(控制器)层,域(业务)层和基础架构(持久性)层.这些层通过具体的模型定义相互通信,当从数据库中读取时,导航通过存储库,然后导航到服务,最后导航到将其分派给
我通常会尝试将所有相关实体保存在同一个存储库中.以下是两者之间具有关系的实体(标有缩进): >用户 > UserPreference 因此,进入用户存储库是有意义的.但是,用户通常会链接到许多不同的实体,您将在以下示例中执行哪些操作? >用户 > UserPrefence>订单 >订单 >产品 订单与产品和用户都
应用程序层(应用程序服务)是否在DDD中添加了@ Stateful,@ Stateless,@ WebService等?从下面的链接看来这是正确的. 第二个问题:我已经创建了一个存储库类,如果所有涉及存储库的方法调用都是在应用程序服务中进行包装吗或者我可以直接使用存储库类,比如在JSF中支持bean吗?何时以及我将
我正在开发一个具有在域模型上运行的服务层的应用程序.在当前设计中,我将域对象传递到服务层(例如,在调用EmploymentService.getEmployee()时返回Employee域对象,但要求对对象执行的操作通过服务进行(例如EmploymentService.transferEmployee(int employeeId) ,int newLocationId).
以下简单的实体… public class MyEntity { [MaxLength(100)] [Required] public string Name { get; private set; } } …是否可以读取正在装饰“Name”属性的数据注释并验证ChangeName方法中指定的值,以便ValidationResults可以连接到其他验证结果.我假设使用Metho
我在一些域对象模型中看到,为所有域Entity对象创建了一个抽象基类(实现了Equals和GetHashCode)以从中获取其身份. 我不清楚为什么需要这个基类以及何时以及为什么应该使用它.您能否就此提供一些见解或向我推荐一个有关此问题的链接 谢谢 现在我理解了覆盖Equality的优势(这个链接有
我有一个不可变的用户实体: public class User { final LocalDate lastPasswordChangeDate; // final id, name, email, etc. } 如果必须在i.d中更改用户的密码,我需要添加一个返回信息的方法.它的更改次数不超过passwordValidIntervalInDays系统设置. 目前的做法: public cla
我正在编写一个控制台应用程序,它可以从存储过程记录集中进行大量数据检索.对于我正在使用的每个记录集类型,我有一个使用EF和自定义复杂类型的Repository来检索数据: public interface IBalanceSheetRepository { IEnumerable<BalanceSheetRecordDTO> GetBalanceSheetRecords(