gpt4 book ai didi

asp.net-mvc - 洋葱架构我们应该将领域模型注入(inject)表示层吗?

转载 作者:行者123 更新时间:2023-12-01 22:03:32 25 4
gpt4 key购买 nike

我正在尝试为 ASP.Net MVC 5 项目实现洋葱架构。我看到过一些观点认为服务应该被注入(inject)而不是实例化,尽管如果我错了请纠正我,Jeffery Palermo ( http://jeffreypalermo.com/blog/the-onion-architecture-part-3/ ) 表达的想法是任何外层都应该能够直接调用任何内层。所以我的问题是

  1. 洋葱架构可以在没有 IOC 的情况下工作吗?如果可以,它是否理想?
  2. 假设我们使用 IOC,如果 UI 不应该知道的实际实现领域服务,我们是否应该将相同的原则应用于领域模型他们自己例如将模型注入(inject) UI 而不是引用直接他们?

我理解为什么有些解决方案在域服务上应用 IOC,但直接在 Controller 中访问域模型。

最佳答案

OA可以被认为是n层架构+依赖注入(inject)——所以如果没有IOC,你将很难实现OA。

关于外层使用任何内层,我个人在这一点上不同意巴勒莫的观点。我认为外层应该被限制为与下一层一起工作(重申:不应该允许外层绕过一个层)。我曾经在 Twitter 上问过他这个问题,他说数据访问实现代码与表示层一起工作可能不是一个好主意(记住实现代码位于他的架构的外缘)。

我认为巴勒莫为绕过层留出了空间,因为他希望能够在 Controller 中操纵域模型域服务。据我了解领域驱动设计,只有当逻辑不完全适合领域模型时才会创建领域服务。如果是这样的话,那么领域服务和领域模型并不是真正的两个独立的层。相反,最好将它们视为单个业务层。如果它们都是同一层,那么是否可以在 Controller 中使用它们的问题就迎刃而解了。然后你可以毫不矛盾地说,外层应该被限制为与洋葱中的下一层对话。

关于asp.net-mvc - 洋葱架构我们应该将领域模型注入(inject)表示层吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21060853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com