在哪个层中控制器适合分层架构/ DDD

Tal*_*son 4 domain-driven-design controller presentation-layer n-tier-architecture application-layer

所以,我在这里看到了一些关于它的问题,但没有一个是关于它的具体问题,也没有回答我的疑问.

在分层架构/ DDD应用程序中,控制器(常见MVC应用程序中的"C")在哪个层中适合?我在不同的地方读过它可能在UI层或应用程序层中,但我仍然无法绕过正确的层.

我正在阅读埃里克埃文斯的DDD,直到我达到这本书的那一点我还想不通.我注意到他说如果UI层不复杂,你可以将它与应用层合并.这会对控制器产生相同的影响吗?

pla*_*alx 8

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

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

尽管如此,思考并避免过度工程是一种很好的反应.如果您现在判断不需要隔离,那么没有什么可以阻止您将控制器用作应用程序服务,并在以后需要时重构.

随着MV*架构存在于客户端的单页Web应用程序的新时代,隔离自然而然,因为应用程序层位于不同的层上.