layered architecture/DDD controller 适合在哪一层

In what layer do controllers fit in layered architecture/DDD

所以,我在这里看到了一些关于它的问题,但其中 none 个问题都没有回答我的疑问。

在分层 architecture/DDD 应用程序中,控制器(普通 MVC 应用程序中的 "C" )适合放在哪一层?我在不同的地方读到它可能在 UI 层或应用程序层,但我仍然无法理解正确的层是什么。

我正在阅读埃里克·埃文斯 (Eric Evans) 的 DDD,直到我读到这本书时,我还无法理解。我注意到他说如果 UI 层不复杂,你可以将它与应用层合并。这对控制器也一样吗?

MVC 通常是 UI 架构,因此控制器将成为 UI 的一部分,调用应用程序服务,然后将响应转换回适合 UI 的格式.

如果您的应用程序复杂到足以证明 DDD 的合理性,那么它很可能复杂到足以证明分离 UI 和应用程序层是合理的。

不过,思考和避免过度设计是一个很好的反应。如果您判断现在没有必要进行隔离,那么没有什么能阻止您将控制器用作应用程序服务,并在以后需要时进行重构。

随着 MV* 架构位于客户端的单页 Web 应用程序的新时代,隔离自然而然地出现了,因为应用程序层位于不同的层。