Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 如何决定在域或应用程序项目中使用什么;DDD“;解决方案_C#_.net_Domain Driven Design - Fatal编程技术网

C# 如何决定在域或应用程序项目中使用什么;DDD“;解决方案

C# 如何决定在域或应用程序项目中使用什么;DDD“;解决方案,c#,.net,domain-driven-design,C#,.net,Domain Driven Design,我正在学习应用于.NET解决方案的DDD和以域为中心的体系结构设计 然而,我正在为如何实现它而挣扎 我最近想到了一些例子: 将excel文件过滤/转换为另一种json/xml文件,并按照一些业务规则进行格式化,无论是控制台应用程序还是WebAPI 计算某些火车站的能量部署或距离 如何确定进入应用程序“层”和域“层”的内容 我读到: 域层包含执行业务规则的所有代码 它应该是技术无关的(比如特定的数据库-sql,无sql-或协议-HTTP,REST)和框架无关的。这意味

我正在学习应用于.NET解决方案的DDD和以域为中心的体系结构设计

然而,我正在为如何实现它而挣扎

我最近想到了一些例子:

  • 将excel文件过滤/转换为另一种json/xml文件,并按照一些业务规则进行格式化,无论是控制台应用程序还是WebAPI
  • 计算某些火车站的能量部署或距离
如何确定进入应用程序“层”和域“层”的内容

我读到:


域层包含执行业务规则的所有代码

它应该是技术无关的(比如特定的数据库-sql,无sql-或协议-HTTP,REST)和框架无关的。这意味着无论聚合是持久化在SQL数据库中还是在NoSQL数据库中,它看起来都是一样的,从HTTP控制器或控制台应用程序调用它

应该是,没有副作用。这意味着它不应该执行任何
I/O
(从任何文件读取或写入)。它接收作为方法参数所需的所有数据。对我来说,将基础结构或应用程序层作为参数传递给聚合方法调用也是不好的,即使它隐藏在域
接口
后面,因为它可以执行
I/O

它不应该依赖于任何其他层。这意味着没有
从其他层导入
使用
(或在编程语言中使用的任何编程语言结构)


应用程序层是从存储库加载聚合的薄层,它调用聚合上的相应方法,然后将聚合持久化到存储库。它基本上将域与基础结构粘合在一起。

谢谢您的回答。我开始明白了。假设我正在读取一个csv文件并检查两个给定列的总和,如果超过某个阈值,则连接另外两个列。然后,读取csv文件将完全在基础架构/应用程序层中(不是那么薄?)?规范模式(检查两个值是否高于给定阈值)和连接将位于域层?@Nolwenn读取文件将位于基础结构中。检查和连接将在域层中进行。这在很大程度上取决于您的详细信息,我不确定,但最有可能的是,您的聚合不会在意数据来自csv文件,它会将其视为矢量列表,而不是域/业务层之上的应用程序层?然后我假设它将表示层与业务层连接起来,而不是将业务层与基础架构连接起来!你能澄清一下吗?@binte你所描述的是严格的分层架构,我一般不推荐它。在一个宽松的体系结构中,应用层可以(也应该)调用域和基础结构,以便将它们粘合在一起。