既然每个人都在谈论MVC,我注意到业务规则没有得到解决.在3层架构的旧时代,业务规则处于中间层.他们在哪里落入新的MVC?
你从未看到MVC地址"业务规则"的原因是MVC基本上是一种表示模式.它专注于如何构建您的应用程序.例如,模型可以被认为是表示模型.应用程序的模型,然后视图呈现.
但是,为了创建演示模型,您通常需要转到所有业务逻辑所在的域模型.那时,MVC没有规定代码在物理上存在的位置.它在另一层吗?MVC并不关心.
在第一次刷,我会说他们属于模型.维基百科上的MVC条目似乎同意:"在MVC中,模型代表应用程序的信息(数据)和用于操纵数据的业务规则".毕竟,"业务规则"是指编码应用程序所涉及的域的功能算法和逻辑,而不是输入/输出相关逻辑.这些核心业务相关逻辑不会 - 或者不应 - 根据向用户显示的内容(视图的域)或用户输入(主要由Controller接收)进行更改.
根据我的经验,在软件开发过程中提出这类问题已经非常明显:我们发现很多东西被某些人视为"业务规则",但结果却是其他东西.如果它不是真正的业务规则,则可能不属于该模型.
业务规则始终存在于模型中.该模型是您可以使用完全不同的UI重新使用的模型.该视图显然完全依赖于UI选择,并且控制器必须从模型中获取数据并告诉视图呈现它.
将业务逻辑放入视图中是不好的,因为它将结构与表示联系起来.
将业务逻辑放入控制器是不好的,因为它将业务域分为模型所持有的数据和控制器中的规则.
来自维基百科文章的引用:
MVC经常出现在Web应用程序中,其中视图是实际的HTML页面,控制器是收集动态数据并在HTML中生成内容的代码.最后,模型由实际内容表示,通常存储在数据库或XML节点中,以及基于用户操作转换该内容的业务规则.