Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
项目管理系统C#ASP.NET 3.5的领域驱动设计方法_C#_Domain Driven Design_Asp.net 3.5 - Fatal编程技术网

项目管理系统C#ASP.NET 3.5的领域驱动设计方法

项目管理系统C#ASP.NET 3.5的领域驱动设计方法,c#,domain-driven-design,asp.net-3.5,C#,Domain Driven Design,Asp.net 3.5,我正在使用C#3.0和ASP.NET3.5以及SQLServer2008R2后端编写一个简单的项目管理系统 目前,它本质上是一个数据驱动的应用程序,具有基本的CRUD功能、少量的业务逻辑和一些验证 预计该系统将发展到包含更复杂的业务功能,我有兴趣尝试使用域驱动设计(DDD)的原则对其进行改造 我意识到这对于系统目前的状况来说是过分的,我预计现在会创造一个贫血的领域 该系统由客户、客户、项目、组件和活动组成 一个客户有0个、1个或多个客户机。 一个客户端有0个、1个或多个项目 一个项目有0,1个或

我正在使用C#3.0和ASP.NET3.5以及SQLServer2008R2后端编写一个简单的项目管理系统

目前,它本质上是一个数据驱动的应用程序,具有基本的CRUD功能、少量的业务逻辑和一些验证

预计该系统将发展到包含更复杂的业务功能,我有兴趣尝试使用域驱动设计(DDD)的原则对其进行改造

我意识到这对于系统目前的状况来说是过分的,我预计现在会创造一个贫血的领域

该系统由客户、客户、项目、组件和活动组成

一个客户有0个、1个或多个客户机。 一个客户端有0个、1个或多个项目 一个项目有0,1个或多个组件和 组件具有0、1或多个活动

我将如何使用DDD对此进行建模?我会将客户、客户、项目、组件和活动作为聚合根,还是会有一个聚合根(客户),并将客户、项目、组件和活动作为可通过客户访问的实体?是否有一种推荐的方法来模拟实体/聚合根之间的多对一关系

我意识到这并没有涉及到价值对象(显然,客户、客户端等包含多个属性)等,但我在这里是一个完全的初学者,我喜欢一些指针,就像一个近乎完整的答案一样

我为这个问题的开放性道歉,我已经有了一个工作系统,但我期待着未来

谢谢,
丰富。

领域驱动设计的核心不是软件分析,而是业务分析。应用DDD的思想和模式可能会使您最终得到一个集合和实体,而这些集合和实体根本不会被称为客户、客户、项目、组件和活动

预先假定一组给定的类/实体,并尝试在它们上强制使用DDD构建块,可能不会很快取得任何效果

对于初学者,我只能推荐(重新)阅读Eric Evans的《领域驱动设计》一书。不仅前几章,后面的部分(第三部分-重构以获得更深入的见解第四部分-战略设计)比第二部分更重要,后者处理的是低层次的构建块


更新:如果您只想在不进行耗时分析的情况下进行建模练习(这使得DDD非常昂贵且仅适用于复杂领域),我建议您阅读。

通常我将所有这些类型的元素作为聚合根,您无法看到模型的未来增长或变化,如果您需要作为独立实体访问活动,例如,制作活动报告、按活动类型分组并按月份细分,以及制作子报告以按客户或客户分解信息,从这一点出发,尝试从客户-客户-活动中生成报告是很困难的,并且您需要添加一些代码来处理响应并生成报告


您可以将客户a视为根,但不要避免在子实体上引用父实体,我认为这是避免头痛的最佳实践。

您能否详细说明一下为什么您认为聚合和实体不会被称为客户、客户等?在我看来,这些很可能是领域专家使用的语言的一部分。@DanielHilgarth这在特定领域和不同团队之间会有所不同。肯定没有对错之分。我想说的是,进行适当的业务分析可以发现比“接受名词并使其成为类,接受动词并使其成为方法”的旧方法更合适的概念。谢谢你的回答。我想我将开始阅读领域驱动设计。一个好的领域模型由一组相互连接的对象组成,这些对象相互交互以处理业务用例。如果你想使用DDD,你首先需要弄清楚什么是用例。您可以添加更多关于您的项目支持哪些用例的信息吗?谢谢您的回答。我想我会去读领域驱动设计。谢谢你的回答。我想我会去读领域驱动设计。