【转】面向服务用户界面的出现昭示服务器支持的MVC死亡来临?

作者 Jean-Jacques Dubray译者 孙向晖  发布于 2007年11月12日 下午7时48分

社区
    Architecture,
    Ruby,
    SOA
主题
    RIA,
    JavaScript,
    REST,
    Ruby on Rails

自打Xerox PARC发明了“图形用户界面”以来, "模型-视图-控制器"模式已经成为了一个主要的应用架构。该模式是由Trygve Reenskaug发明的,并在90年代中期被改造以支持Web应用(这次改造行为被Java世界称为MVC2 )。

这个被改造过的模式缺乏从控制器中更新视图的能力,通常是由用户刷新页面来查看内容的更新。造成这个问题的原因是服务器到客户端的连接问题。随着Ajaxian框架的来临,这个连接现在可以被仿制出来了。2006年最火爆的Ajax框架Prototype,是在不考虑MVC的情况[译者注:没有采用MVC思想]下进行开发的,简单地提供一个远程框架和一个简易的Dom操控。在这种情况下,开发人员可以选择任何一种他们实现MVC模式(也包括MVC2模式)的方式。其他的框架如JSF/Ajax4JSF 和Ruby on Rails在MVC如何被实现方面也给出了很多演示。

Nolan wright认为服务端支持的MVC实现已属于昨日黄花 :

    虽然很多基于MVC的框架已经添加了对Ajax的支持(例如JBoss Seam对JSF/Ajax4JSF的支持和Ruby on Rails框架),这些框架并不能借助Ajax和DHTML的强大功能来简化设计。它们在用户界面和服务器之间强加了一个几乎是完全密封的耦合,而Ajax让用户界面和服务器之间几乎是100%的解耦了。

    因此,我们必须回到原点,从一个崭新的视角来查看Web开发中的问题。

Jeff Haynie表示赞同:

    重构允许我们努力将某些事情拧在一起以让它们更好,通常你会得到持续的的好的优化改进。但是有些时候,当你回顾时,你会发现设计上有大片的“毛团”。这是我们这些年来Web架构的现状,这也是我为什么相信如Ruby on Rails这样的轻量框架会取得广泛胜利的原因。

    如今,如果要用Java完成一个简单的Web应用,先得指定你的框架吧?XML配置文件、Web流、JSP、控制器、模型和DAO、WAR文件、JAR,等等……还想重构你的布局吗?彻底忘了吧。

    够了。我们需要重新思考服务器端的MVC作为构建富 Internet应用的方式了。

Nolan和Jeff认为SOA是其中的一部分解决方案:

    让我们趁此机会真正地实现面向服务的架构(service-oriented architecture ,SOA)。SOA并不仅仅意味着Web服务,它也不是一个马后炮或者中间件Stack的什么其他的废物。它的中心意图是设计,那才是它活跃的舞台。

Nolan提议建立一个新的基于Service、Ajax和DHTML的SOUIs(面向服务的用户接口)基础框架:

    Ajax 和DHTML是非常互补的技术,将它们组合在一起所产生的Web应用的创造力会远远超过今天的桌面应用的能力。作为结果,我们需要一个能够无缝集成Ajax和DHTML的下一代的Web SDK。

Nolan解释说在浏览器端部署控制器是非常棒的:

    得到一个消息后,你可以隐藏3个HTML元素,显示其他的元素,并可发出一个服务请求——这酷毙了。

Nolan总结出了很多的优点:

        * 因为SOUI使用轻量的消息跟服务进行通讯,服务可以用任何一种编程语言进行编写。换句话说,SOUI是编程语言无关的。你可以改变你的服务器端编程语言而不用更改任何SOUI代码。
        * 你可以在SOUI和它的服务之间建立一个简单的基于消息的契约。这样做的结果是客户端和服务器端近乎完全解耦,它们之间仅以一个轻量的消息契约所关联。
        * 你可以建立仅在客户端的原型,使用本地的mock消息处理器,它就会拥有完整的功能。SOUI并不知晓使用mock消息处理器和使用服务之间会有什么不同[当你准备好了你只需使用真的服务切换掉消息处理器].

Jeff 总结道:

    让我们回归简单吧,让我们回到真正需要做的事情——创建应用上吧。 复杂的服务器架构已经够多了。

查看

你可能感兴趣的:(Ajax,应用服务器,mvc,浏览器,Rails)