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

论Ajax的作用

首先,我承认,我的这个话题有点大了,但还是把内容写出来吧。

? 众所周知,ddd(领域驱动模型)设计是大势所趋,但是jsp,html仍然是实现了一个form对应了一个servlet的用法,至少大多数的情况是这样的,但是ajax的出现,改变了这种状况。

?ddd 讲究的是,一个事件的发生,处理 对应了一次人机交互的过程,如果只是在前台的话,用javascript可以轻松的解决,但是如果交互包括前台后台之间的数据传递呢。ddd对应的是每一个事件源如果发生了事件,需要与后台进行交互。整个html的上下文中,不同事件源是相互独立的,就是说,一个事件源的发生的结果,除非有特殊的必要,否则响应的结果是不会影响 到别的事件源的。ddd保证了事件源与事件源在非人为的情况下的相互独立性,这个也是局部刷新的充分条件。下面,我用一张图来表示,ajax怎么实现 ddd的特性的。

这个就是我对ajax的理解,在学jsp/servlet的时候,我们对MVC的理解是,一个jsp作为view层,一个servlet作为控制器,一个bean作为model层。可能我们还会增加许多的中间层Utils包,在这个时候,我们可以看到的是,servlet虽然说是作为控制器,但是它却做了两种工作,一个事件的处理,一个是view层的控制。这个是我自己的一点浅见。

那么ajax给我们带来了什么,我认为,ajax的引入,完全可以对MVC更加的细粒度划分,将servlet的重view层的控制中解脱出来,下面是我对MVC的重新的定义。

view层:-----------------html,jsp等等

后台处理层:-------------servlet

model层----------------bean

控制层--------------------ajax的callback方法

这个实现的是将后台与前台的关系进一步的细分化,按照道理说,实际上view的控制本来就应该掌握在前端。就好比当初我们的html没有跟后端交互的时候,我们的页面跳转都是通过前端的<a/>进行控制的,ajax就是让这一切都回到重前,

后台只是干后台的事情,后台只是一个逻辑处理层。

?

现在,框架structs中大多都是标签的管理,看上去是view的表现但是,仍然是使用了后台的逻辑。

最后,我对未来的展望:按照我的构思,如果servlet只是作为一个逻辑层的话,一个事件对应一个servlet,这是不符合道理的,我的理解是,应该是一个事件对应了一个Method才对,也就是说,一个前台的html对应后台的一个servlet,而一个事件源对应一个servlet中的method,这样既保证了事件源之间的独立性,也保证了method之间的独立性。