日期:2014-05-16  浏览次数:20983 次

关于MVC和ajax的思考
要想对这个发表一些看法,那还是先度娘一下,看看官方对MVC的解释:

MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

补充解释:
Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。

ajax就不用解释了,大家都懂的,新瓶装旧酒,最大的特点就是不重刷页面的同时,改变我们界面上的数据和信息;

在AJAX或者说基于AJAX的界面框架诸如EXTJS,EDOJS等等出来之前,咱们开发WEB应用,是怎么回事呢?
用过STRUTS的人都知道,JSP就是VIEW,用来显示界面和用户交互,controller 就是对用户的请求事件处理,并决定改该用什么model 该怎么 view 。


当AJAX的框架出现之后,我想整个WEB应用开发(我这里强调的是企业应用而非网站),咱们的VIEW 和 controller 的位置发生了变化:

view 交给了 js 来处理, controller 也可以认为交给了 js 来处理,而我们的webserver 就是一个 model 的接口,或者说是一个数据和业务逻辑的接口;
那么 controller 被分成了用户事件 和业务逻辑,一个在JS中,一个在服务器端;


这样一来咱们可以从新来定义基于AJAX 的MVC模式:
1.用户界面:由EXTJS来绘制
2.用户事件:由JS来处理,并转化为服务器端事件;
3.业务数据服务:收到来自JS客户端的数据和事件,作出相应的回应;

有趣的事情发生了,看看这个,是不是和我们的CS模式架构类似呢?
这样一来咱们又回到了CS模式时代,区别就是以前的CS的C端是VB,.NET 通过数据库连接,通过socket 或者其他方式和数据库服务端联系;
现在咱们的C端采用的是JS来实现,并且通过AJAX来和服务器端通信,中间传输的是XML 或者JSON或者其他格式的数据;
万变不离其中啊,还是重复不知道某位达人说的话,大意如下:
只要心中有MVC,自然就MVC了,只要心中有设计模式,不需要你来想该用何种模式!


咱们做开发最忌思维僵化,身板硬套,为了用某种技术而用它;
技术是我们解决业务问题的基础,这是必须具备的,但是不要成为我们解决实际问题的障碍!

大家共勉!