草庐IT

domain-driven-design

全部标签

c# - 如果存储库用于聚合根,那么其他实体的数据访问逻辑应该放在哪里?

我有几个代表网络应用程序的对象。目前我有一个集群对象来表示应用程序的特定部署。在集群对象中,我有以下对象:服务器、客户、用户。这些对象都不能不属于集群而存在,因此我创建了一个ClusterRepository来从数据库中检索集群。现在,我需要从集群中获取客户列表,大概是通过使用集群对象中的方法,如GetCustomers()。现在,我最初的想法是将此操作的工作卸载到CustomerRepository,但由于存储库仅用于聚合根,数据访问逻辑应该放在哪里?这属于服务类别吗? 最佳答案 从本质上讲,聚合根是您可能需要作为对象图的根获取的

c# - 编辑 Resources.resx 文件时,Resources.Designer.cs 无法更新,因为 TFS 未将其 checkout

我正在使用TFS源代码管理。当我向我的资源文件-Resources.resx添加一个新的资源key并点击保存时,TFScheckoutResources.resx但不checkoutResources.Designer.cs。这会导致对Resources.Designer.cs的更新失败并出现错误:Thecommandyouareattemptingcannotbecompletedbecausethefile'Resources.Designer.cs'thatmustbemodifiedcannotbechanged.Ifthefileisundersourcecontrol,yo

c# - 保存域实体更改

这里有一个真实的例子,可以引出我的问题:我有一个AddCommentToArticleCommand,它有一个ArticleId、评论文本和电子邮件地址。这个命令:使用文章库获取文章(领域实体)如果文章存在,它会调用article.AddComment(commentText,emailAddress),将评论添加到文章中,如果不能添加则抛出异常(由于电子邮件格式无效、文章已关闭、评论未填写等)长等等...)但现在我不知道保存添加的评论的最佳方法是什么?我应该做类似articleRepository.Save(article)的事情吗?但是,如果只是添加评论,我为什么要保存文章?或者我

c# - DTO 和 Entity 是否都应该有输入验证

我有一个WCF层,我的领域模型在这个WCF层后面。我正在使用Nhibernate作为ORM工具,我所有的业务逻辑/数据访问等都将在这个WCF层之后。我正在向我的客户公开DTO。我有以下问题1)我应该创建DTO吗?将实体直接暴露给wcf客户端有什么坏处,因为我的实体也会有业务逻辑方法,这样做我将不得不用我认为不好的WCF属性破坏我的实体对象?2)如果我公开DTO,我是否应该验证DTO以及实体。如果我只验证DTO,那么我不会为我的Enitity对象提供任何输入验证。这样可以吗?3)我是否应该考虑使用模式验证在应用程序服务层(WCF层)中验证DTO?或者我应该使用文章[博客]中给出的IVal

c# - 使用服务的 DDD 实体

我有一个应用程序,我正在尝试使用至少一个名义上的DDD类型的域模型来构建,并且正在努力处理某个部分。我的实体有一些业务逻辑,这些业务逻辑使用我目前在某些域服务中进行的一些财务计算和费率计算,以及我放入值对象中的一些常量值。我正在努力解决如何让实体使用领域服务内部的逻辑,或者这些服务内部的逻辑是否属于那里。这是我目前所拥有的:publicclassTicket{publicTicket(intid,ConstantRatesconstantRates,FinancialCalculationServicef,RateCalculationServicer){Id=id;ConstantR

c# - 我们可以在领域驱动设计中使用 ASP.NET Identity 吗?

我们的团队决定为我们的项目使用领域驱动设计架构。现在讨论的焦点是“我们可以在DDD中使用ASP.NETIdentity吗?”。在DDD设计中使用ASP.NET标识有什么缺点吗?我对做出决定感到困惑。我已经搜索过了,但我没有任何想法。任何帮助都将不胜感激。 最佳答案 这些问题揭示了几个误解:您似乎将领域模型视为某种整体模型,您将每个应用程序都放入其中。相反,应专注于战略模式以区分限界上下文。将域视为几个松散互连的组件的组合。然后确定您的核心领域是什么,并在那里应用DDD战术模式。并非每个组件都需要DDD。其中一些甚至不应该使用DDD。

java - CQRS 和事件溯源的区别

CQRS(命令查询责任分离)和事件溯源有什么区别?我认为事件溯源是一种CQRS。事件溯源与其他类型的CQRS有什么区别?谢谢, 最佳答案 CQRSCQRS由GregYoung引入;hisexplanationin2010CQRSissimplythecreationoftwoobjectswheretherewaspreviouslyonlyone.Theseparationoccursbaseduponwhetherthemethodsareacommandoraquery(thesamedefinitionthatisusedb

c# - WPF Designer DataTemplate.DataType 不能是类型对象

我有一个TreeView,我绑定(bind)了一些自定义View模型。View模型位于ObservableCollection中并继承ViewModelBase,后者继承INotifyPropertyChanged。它编译并运行良好,但在设计器中出现错误:"DataTemplate.DataTypecannotbetypeobjectParametername:value"我的XAML是:属性窗口也显示它是一个对象,但我不知道为什么:有什么想法吗? 最佳答案 我认为它希望您使用接口(interface)类型而不是类类型。因此,如果您

c# - 质疑使用具有 Restful 服务的 DTO 并从更新中提取行为

在DDD领域,我喜欢避免使用getter和setter来完全封装组件的想法,因此唯一允许的交互是通过行为构建的交互。将此与事件溯源相结合,我可以获得有关组件已执行的操作以及何时执行的详细历史记录。我一直在考虑的一件事是,当我想要创建(例如)底层服务的Restful网关时。出于示例的目的,假设我有一个具有以下方法的Task对象,ChangeDueDate(DateTime日期)ChangeDescription(字符串描述)AddTags(paramsstring[]tags)完成()现在很明显我将在这个对象中有实例变量来控制状态和事件,当相关方法被调用时它们将被触发。回到REST服务,

c# - 创建 'Custom Designer' Visual Studio 2010 加载项

我们工作的主要部分是创建和操作某些XML文件,这些文件有一个自定义编辑器。编辑器开始出现问题,我们正在寻找替代品。由于VS2010最近推出,表面上具有改进的加载项架构(MEF?),我对将编辑器构建为VisualStudio中的自定义编辑器的可能性很感兴趣.它必须以与代码编辑器或设计器相同的方式出现-一个选项卡项,其中可以同时打开多个,包含我们用来编辑文件的GUI.它将与VS的编辑菜单集成。它可以使用输出窗口显示消息。它看起来与VisualStudio中的任何其他编辑器一样。现在,我正在寻找以类似方式工作的加载项示例-最好是源代码-看看这个模型是否符合我们的要求。我也在寻找与创建VS20