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

时间:2017-03-18 11:31:37

标签: controller domain-driven-design n-tier-architecture presentation-layer application-layer

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

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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