我正在使用MVC框架创建一个web应用程序。我想在控制器和领域模型之间添加一个层,我认为它在DDD中被称为应用层,以避免在领域模型中放置特定于某个用例的逻辑。控制器将只与此层交互,此层将使用域模型编排操作。这一层将尽可能地保持较薄,推送所有不是特定于域模型的用例的逻辑。我将调用属于这个层的类DomainCtrl。
示例登录场景:模型: LoginForm DomainCtrl: AuthCtrl UI: ui控制器
1.ui控制器接收请求2.创建AuthCtrl 3的实例,authCtrl创建LoginForm实例并将传递给authCtrl 4的请求数据填充到authCtrl 4中。LoginForm执行登录5。
这是组织应用程序的好方法吗?
发布于 2015-02-14 21:24:18
你的问题
这是构建应用程序的好方法吗?
是个很有负担的问题。简单的答案是是,但更正确的答案是它依赖于。
让我们从简单的答案开始。让您的主要应用程序不知道UI通常是一个好主意。这意味着您可以轻松地从不同的地方使用您的应用程序。在DDD中,这个外层通常称为应用层。它主要负责协调您可能依赖的域、持久性和其他资源之间的交互。这也允许您让您的域名在中心,不知道其他的一切。这使得您的域易于测试和维护,如果实现得好的话。
现在,答案的“这取决于”部分。DDD并不是构建应用程序的唯一成功方法,在某些情况下,它可能比其他任何东西都更多地是一个障碍。你必须问问自己我的应用程序在做什么。有许多特定领域的规则吗?我是否只获取和存储基本数据等?在选择架构和技术之前,这些都是您需要回答的问题。
我仍然会说,选择DDD方法可能不会出错,因为这通常是一种很好的方法。
*注意:我不太清楚您的示例,但是您应该小心地将UI概念泄漏到您的领域/应用程序中。登录表单完全是一个UI概念,在某种程度上也是这样。您也许可以让您的应用程序返回用户的详细信息,但是UI层应该决定是否允许用户继续操作。
发布于 2015-02-16 03:24:16
在高级别视图中,是
但它最终取决于“如何”您的逻辑分离您的层。在您的场景中,我没有看到任何应用层。
https://stackoverflow.com/questions/28518954
复制相似问题