最近总是容易犯错误,比如最近的小组讨论我在讲分页,说在没有分页之前是分一页就去查一页,分了页之后是全部查出来存到页面中再一页一页的显示,完全的说反竟然还振振有词。也许是最近浆糊吃多了吧。再来说说一直以来我的一个错误吧,关于MVC和三层架构,你是否也混淆了呢?
在做项目中用到了新的知识MVC,在还没有很明白的情况下就开始在项目中用了,现在项目2.0都竣工了,该说说我对它的一些感受了。一开始还没有看完两集视频,就草草的上手了,视频中只了解了一下基本的结构。
回顾三层架构:
表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
接触MVC:
MVC有三种角色:
Model:用来储存数据的组件,指要处理的业务代码和数据操作代码。
View:从Model中获取数据进行内容展示的组件。同样的Model在不同的View下可展示不同的效果。是一种视图。
Controller:接受并处理用户指令(操作Model(业务)),选择一个View进行操作。是Model和View的桥梁。
MVC和三层架构的区别:
很长一段时间,我对MVC的理解仅限于,认为它和三层架构一样,只不过三层架构更多关注于将业务和数据分开,而MVC更关注于将容易变动的界面和业务逻辑分开,同样是解耦的作用。这也是上一篇博客的体会。但是随着我们的经验和学习的深入,光知道MVC是分的哪三层就确实不应该了。那么我了来对比一下MVC和三层。
其实,我们知道分三层的目的是为了“高内聚,低耦合”的思想。
(1)结构不同。
三层架构是典型的上下级关系,上层依赖于下层。而MVC作为一种表现模式,是一种协作的关系,是平级的。它们用在不同的领域,可以说MVC可以作为一个三层架构中的UI层来展现界面。截取以前的博客中的两张图作为对比。
(2)二者的Model不同
在三层中也有Model,但是那是三层中的实体层,是三个层次之间的联系纽带。而MVC中的Model是指数据或程序逻辑,是一种页面级的数据,它接收的数据是从业务逻辑层处理好的数据。
(3)二者的分离不同
三层是B层的逻辑层分离了界面显示U层和直接与数据库打交道的D层。这是解除了显示和业务逻辑的耦合。
MVC中,Model是不知道View和Controller的存在的,这就隔离了表现和数据层,View和Controller是单向引用,View引用Controller的数据。这样分离了界面和数据。
(4)应用场景不同
三层是基于业务逻辑来分的,我们会在软件工程中的架构设计中想到采用三层架构,这样实现解耦的目的,通过业务逻辑来划分层次。而mvc是基于页面来分的,当我们想要达到界面视图和数据的分离才用到MVC。
如果还在认为MVC就是三层架构那就是错误的,如果非要把它们用在一起的话,MVC可以单出来作为一层。其实项目中就是把MVC只作为一个表现层,是在客户端体现的。而MVC中的Controller是负责与B层逻辑层甚至是服务接口联系。学习MVC,让我知道,学习不能总是长时间的处于懵懂的状态,总要有一天你会突然醒悟,然后回顾自己所走过的路,带到那时没有悔恨才是最美。
以上的一些说法是在项目中误打误撞,然后看一些牛人的总结,最后有自己的一些看法,如果说的不准确,还请多多指教。