论坛首页 Java企业应用论坛

关于MVC和ajax的思考

浏览 14166 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2012-02-14  
要想对这个发表一些看法,那还是先度娘一下,看看官方对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了,只要心中有设计模式,不需要你来想该用何种模式!


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

大家共勉!
   发表时间:2012-02-15  
OperaMasks框架
0 请登录后投票
   发表时间:2012-02-15   最后修改:2012-02-15
感觉对MVC的理解有点跟我不一样,但你的最终结论其实应该是MVC的一种,只是系统也分负责与简单。看场景。

照你的解释,来来去去还不是request/response....

MVC一个好的就是松耦合,你这样搞。如果我不用ajax,不用JS,那不是要重写?
0 请登录后投票
   发表时间:2012-02-15  
可以搜一下前端MVC
页面可能都不渲染数据
而是在下面某个隐藏域PUT一堆JSON,然后由JS完成渲染
0 请登录后投票
   发表时间:2012-02-15  
BS和CS本质上并没有不同啊,严格来说,BS也是以http协议通讯的特殊CS而已。
我没觉得加上ajax的mvc怎么就和cs相似了或者说有什么超出了mvc的地方了。

我觉得如果说ajax的应用有一些特殊的地方,是比较容易出现C 会分布在js和action/cotroller(struts2/SpringMVC)两端。不像传统页面跳转时control 显得那么的清晰。

0 请登录后投票
   发表时间:2012-02-15  
现在mvc的概念早就扩大化了
前端也有mvc(比如extjs4)
后端mvc也没什么好说的了,都很成熟了。
0 请登录后投票
   发表时间:2012-02-16  
如果前端一套MVC,後端一套MVC,雖然解耦了,但代碼量成倍上去了。
現在用JS又確實做了一些C的工作。糾結
0 请登录后投票
   发表时间:2012-02-16  
WEB开发,一个字累,任重道远。IT技术还不够先进。
0 请登录后投票
   发表时间:2012-02-16  
HEHE,AJAX本来就是违背了MVC思想的。
0 请登录后投票
   发表时间:2012-02-16  
pindai 写道
感觉对MVC的理解有点跟我不一样,但你的最终结论其实应该是MVC的一种,只是系统也分负责与简单。看场景。

照你的解释,来来去去还不是request/response....

MVC一个好的就是松耦合,你这样搞。如果我不用ajax,不用JS,那不是要重写?


别说重写,如果你服务端只实现了数据接口,没有任何界面,抛弃了AJAX,就等于把界面去掉了,当然需要重写咯。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics