Jam*_*mes 37 architecture model-view-controller asp.net-mvc
我是MVC的新手.据我所知:
业务逻辑在哪里?
获取大型企业应用程序:
MVC Web应用程序在此基础上(在代码和项目结构方面)的适当方式是什么?
我已经看到模型文件夹中的所有内容的示例似乎不适合非常大的应用程序.
谢谢你的建议!
Set*_*son 26
在我的应用程序中,我通常会创建一个与Web项目分开的"Core"项目.
核心项目包含:
Web项目包含:
这里的关键点是基于Web的模型文件夹/命名空间仅用于特定于表示的模型,这些模型记录了给定视图所需的特定变量.尽可能多的"业务逻辑"进入核心项目.
Pat*_*her 15
M odel V iew C ontroller听起来像它解决了你的3层,但事实并非如此.它确实组织了UI的组合方式.所述控制器是在中间,并且通常(A)不使用的东西乙 usiness对象和(B)从乙 usiness对象获取中号 Odel等对象传递到V IEW.系统的MVC部分(UI功能)不知道业务层的另一端发生了什么.D B?服务电话?磁盘IO?射击激光器?那么,MVC-B-?将是一个描述MVC的缩写,以及它如何连接起来.
想想中心的C ontroller,一条线向下到B usiness对象.控制器通常会得到一个中号从Odel等乙 usiness对象传递关闭的V IEW,但中号 Odel等仅仅是数据.这是关键.从某种意义上说,C ontroller现在是系统中最聪明的部分,但B usiness对象仍然是最强大的.
因此,M odel对象是C ontroller和B usiness对象之间通信的很大一部分.此外,每个视图具有VM(V IEW 中号 Odel等)物体,它需要,这可能是一个中号 Odel等,但也可以是由构建的东西Ç ontroller到的信息更复杂的集传递到V IEW.
因此,控制器(1)从客户端获取数据并使用业务对象(如果需要)进行处理,可能使用模型对象进行通信,然后(2)从B usiness对象获取M odel 对象(s) ,构造一个VM,并将其提供给一个视图(可能是几个)进行渲染.
起初它看起来像是层和层,特别是因为进入MVC是增加接口使用(参见最后3或4个Solid主体)和单元测试的好时机.您可能在项目中拥有的文件数量超过了其他文件.很快,虽然你看到这实际上是组织事物的好方法.
作为系统的这个"顶层"部分,即MVC部分,我们不关心M odel对象是如何构造的,也不关心B usiness对象对它们的作用.如果您的Customer模型对象看起来很像您的Customers数据库表,那么当然不要感到惊讶!这是正常和常见的.但是,您的客户M odel对象和您的客户B usiness对象将真正具有不同的生命.现在是考虑存储库模式的好时机.
打击懒惰的诱惑,并在C ontroller中加入大量逻辑.随时努力将关注点放在他们下面的地方.该Ç ontroller只是布线的事情了.如果为了构建一个足够的VM供视图使用,需要大量的代码,这是可以的,因为这是控制器的工作.您经常在控制器中看到业务逻辑或渲染逻辑.把它放在它所属的地方!
我试图平衡全面性和简洁性,但你提出了一个很大的问题!
| 归档时间: |
|
| 查看次数: |
12473 次 |
| 最近记录: |