Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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#.net4实现DDD_C#_Asp.net Mvc_Visual Studio 2010_.net 4.0_Domain Driven Design - Fatal编程技术网

如何用C#.net4实现DDD

如何用C#.net4实现DDD,c#,asp.net-mvc,visual-studio-2010,.net-4.0,domain-driven-design,C#,Asp.net Mvc,Visual Studio 2010,.net 4.0,Domain Driven Design,当我打字的时候,我意识到这很难解释。如果无法辨认,我深表歉意。我的最终目标是让更有经验的人了解我是如何构建解决方案的,并提供反馈,说明这是否是一个可接受的设置 我目前管理着几个彼此关系松散的小型支持项目。他们到处都是。我想创建一个统一的内部WEB应用程序来管理这些项目。我已设法将所有内容从概念上分为三个领域。配送、外部网络、内部网络。从业务角度来看,SHIPPING将小部件发送给客户,然后这些小部件连接到外部WEB。问题是SHIPPING对WIDGET和CUSTOMER的定义与EXTERNAL-

当我打字的时候,我意识到这很难解释。如果无法辨认,我深表歉意。我的最终目标是让更有经验的人了解我是如何构建解决方案的,并提供反馈,说明这是否是一个可接受的设置

我目前管理着几个彼此关系松散的小型支持项目。他们到处都是。我想创建一个统一的内部WEB应用程序来管理这些项目。我已设法将所有内容从概念上分为三个领域。配送、外部网络、内部网络。从业务角度来看,SHIPPING将小部件发送给客户,然后这些小部件连接到外部WEB。问题是SHIPPING对WIDGET和CUSTOMER的定义与EXTERNAL-WEB的定义不同,所以我需要将两者分开

经过一番思考,我得出结论,在VS2010中组织这项工作的最佳方法是创建一个解决方案,然后在解决方案中嵌套多个项目。我设想的布局如下

SOLUTION
---SOLUTION.SHIPPING.Domain             (Classes)
---SOLUTION.SHIPPING.Infrastructure     (Classes)
---SOLUTION.EXTERNAL-WEB.Domain         (Classes)
---SOLUTION.EXTERNAL-WEB.Infrastructure (Classes)
---SOLUTION.INTERNAL-WEB.Domain         (Classes)
---SOLUTION.INTERNAL-WEB.Infrastructure (Classes)
---SOLUTION.WebUI                       (MVC3 Project)
我必须为上下文映射和反腐败层添加额外的项目,以允许域之间的通信,但这是基本布局

这是聪明还是愚蠢

谢谢,
Greg

您如何配置解决方案与DDD无关,不会影响项目的成功组织得不好的好代码比组织得好的坏代码要好得多。

项目具有与之相关的生产力和复杂性成本。现在你正在为一些无关紧要的细节而苦恼

更多的项目也意味着编译速度变慢,从而增加了上下文转换。试着读一本书,每页暂停30秒

应为部署或代码共享目的创建新项目。很好的理由包括如果域在两个前端之间共享,或者如果您有一个可怕的部署策略(1000台机器),那么兆字节仍然很重要

一旦您简化了新项目的规则,随着代码库的成熟和新需求的弹出,就可以自然地做出决策。你基本上是在最后一刻做出实际决定。这很好。当你有功能和代码要写的时候,不要放弃它



不知道为什么这个问题被标记为MVC,但是MVC代码库非常精简,只有一个主项目。编译速度快,而且很容易导航。

值得注意的是,DDD与“无处不在的语言”的关系比与实际编码的关系更大。