【问题标题】:Where to put complex operations in an MVC framework?在 MVC 框架中将复杂的操作放在哪里?
【发布时间】:2014-10-07 18:19:09
【问题描述】:

假设我有一个 RegisterUser() 方法,它包含的代码不仅仅是将记录插入数据库。例如,可能有角色、位置数据等。或者我有一个方法 SendInboxMessage(),例如,它向 CMS 站点的用户发送收件箱消息......请记住,SendInboxMessage 不仅仅是与“收件箱”表。它需要与用户对象、消息对象、收件箱文件夹对象等进行交互。同样,这里仅举一个包含大量对象的复杂事物的示例。

对于传统的 MVC,这样的事情会发生在哪里?

(注意:这不是特定于语言的。在这里寻找更广泛的答案)

谢谢!

【问题讨论】:

    标签: .net design-patterns model-view-controller architecture


    【解决方案1】:

    对于传统的 MVC 来说,这样的事情在哪里?

    MVC 是一种构建应用程序表示层的方法。 但我猜你是在谈论经典的业务逻辑。 这应该是业务层的一部分,而不是表示层的一部分。 您描述的业务逻辑通常会进入域服务。 域服务基本上只是一个无状态对象,其方法通过接口(合同)暴露给表示层。 域服务的方法通常依赖于数据存储库或其他域服务,并描述了复杂的事务操作。

    【讨论】:

    • 谢谢弗兰克。你有什么例子或文献可以让我阅读更多关于这方面的信息吗?例如。 “通过合同公开方法”是什么意思
    • 没问题。 Martin Fowler 在他的主页上有一些关于不同 GUI 架构模式的好文章:martinfowler.com/eaaDev/uiArchs.html
    • “通过契约暴露方法”的意思是 1:领域服务方法需要表现层可达。 2:来自表示层的方法调用必须针对(技术)接口,并且可能必须满足特定的前置条件和后置条件。
    • 服务层概念的详细说明可以在这里找到:martinfowler.com/eaaCatalog/serviceLayer.html
    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2011-06-10
    相关资源
    最近更新 更多