首页 新闻 会员 周边

MVC 里面 的 Model View Controller 的一些疑惑

0
[待解决问题]
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
 
对Model view Controller 其它地方定义也大同小异 
view 和 Controller倒是好理解
 
但是Model 一直不理解  都是是处理业务模型,是应用程序核心
但为什么我用到的项目中   Model 里面一直只是定义的一个个实体类 里面什么都不做 只是被其它地方调用
处理逻辑,存取数据的地方却不是Model?
为什么
 
 
~雨落忧伤~的主页 ~雨落忧伤~ | 菜鸟二级 | 园豆:336
提问于:2017-12-27 13:53
< >
分享
所有回答(2)
0

model 包含的不只实体类,还包含 你显示业务逻辑的类,实现数据访问的类。

 

因为N层架构的原因,它们被分布到MVC之外的其他项目中去了。

西漠以西 | 园豆:1675 (小虾三级) | 2017-12-27 14:07

就算没有 N层架构 Model 也只是有实体类呀!处理逻辑的时候要么在控制器中,要么也是在外部定义

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2017-12-27 14:35

@~雨落忧伤~: 

MVC中的MODEL是指业务模型,包含业务实体,业务逻辑业务流程业务规则,以及支撑业务的数据访问等基础设施,不仅仅是指N层架构中的实体。

因为MVC本质上只是表现层的一种设计模式,所以通常在M中我们只定义 VM,即ViewModel视图模型,用于在C和V之间传递数据。

但是从架构的角度考虑,M,模型指的是业务模型。

支持(0) 反对(0) 西漠以西 | 园豆:1675 (小虾三级) | 2017-12-27 15:07
0

MVC只是整个业务体系上最终负责呈现的这一层的结构,和业务逻辑没任何关系,真正的业务还在这个的下面。

M在里面只是负责表现层的数据承载和传输作用,当C接受请求后是将请求包装转到真正的业务层,而业务层的设计和MVC没任何关系,最后在业务层处理后再组装为M作为数据信息提供给V进行呈现,如果出现M中对象和业务甚至仓储中数据对象一致的情况要么就是对这块理解有问题,要么就是业务过于简单,直接一个对象到底了。对于有复杂业务的程序,这块会有业务层自有的BO(bussiness object)和仓储所包含的DO或DTO,只有这样才能充分隔离不同层级不同的分工及充分避免变动带来的对整体结构的侵蚀

Daniel Cai | 园豆:10424 (专家六级) | 2017-12-27 14:26

但是到处都说Model 是处理逻辑的 最终处理逻辑,处理业务逻辑的     我是一点也不明白

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2017-12-27 14:36

@~雨落忧伤~: 如果你看到哪里说这个M是处理业务逻辑的,那就可以忽略了吧,这种文章只能误导试听。

再怎么写写C处理逻辑还情有可原。

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-12-27 14:45

@Daniel Cai: 

我们项目中的确有两个 Model 一个是和数据库一一对应的,一个是从数据库中取出来,进行一些操作 转化为在页面上显示的ViewModel

BO是呈现给用户的吧~ DO是保存在数据库中的~ DTO是哪里的呢?

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-01-02 09:24

@~雨落忧伤~: 一样的。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2018-01-02 09:29

@Daniel Cai: 什么是一样的

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-01-02 09:47

@~雨落忧伤~: 在仓储层而言,data object和data transfer object是一样的

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2018-01-02 10:32

@Daniel Cai: 嗯嗯 谢谢了

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-01-02 10:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册