InfoQ

新闻

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

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

社区
Architecture,
Ruby,
SOA
主题
JavaScript,
REST,
RIA,
Ruby on Rails
标签
AJAX,
JBoss Seam,
Ruby on Rails,
JSF

自打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 总结道:

让我们回归简单吧,让我们回到真正需要做的事情——创建应用上吧。 复杂的服务器架构已经够多了。
查看因为原文:Does the rise of Service Oriented UI (SOUI) means the death of server-assisted MVC?
痴人说梦! 发表人 yong hong 发表于 2007年11月12日 下午8时28分
出现杀手级工具才使硬道理。 发表人 gem fox 发表于 2007年11月12日 下午11时31分
昨日黄花 发表人 逸飞 舒 发表于 2007年11月13日 上午4时38分
不了 发表人 Nikos Chen 发表于 2007年11月13日 上午8时15分
Re: 不了 发表人 Necromancer B 发表于 2007年11月13日 上午9时35分
翻译的问题 发表人 iplaymodel qoo 发表于 2007年11月18日 上午9时47分
想的太远了 发表人 Allan Zhang 发表于 2007年11月19日 下午7时56分
ajax只是过渡技术而已 发表人 kobe zeng 发表于 2009年1月4日 上午4时32分
  1. 返回顶部

    痴人说梦!

    2007年11月12日 下午8时28分 发表人 yong hong

    业务复杂性决定了服务器模式的复杂性。 AJAX与SOA可以带来客户端与服务器端的变革,但不是银弹。

  2. 返回顶部

    出现杀手级工具才使硬道理。

    2007年11月12日 下午11时31分 发表人 gem fox

    看惯了各类技术标榜自己都多么的优越,但是要想得到大众的认同,必须降低学习门槛,出现杀手级的工具。否则,曲高和寡,优越感再强也是白搭。 技术归技术,它最终仍需为具体问题服务。如果不能减轻开发者的劳动强度,就属屠龙之技了。

  3. 返回顶部

    昨日黄花

    2007年11月13日 上午4时38分 发表人 逸飞 舒

    昨日黄花 => 明日黄花

  4. 返回顶部

    不了

    2007年11月13日 上午8时15分 发表人 Nikos Chen

    刚对mvc 越发的产生兴趣,现在突然有更新的技术要取代它... 不过应该不是说说就可以取代的吧

  5. 返回顶部

    Re: 不了

    2007年11月13日 上午9时35分 发表人 Necromancer B

    要我看,SOUI那还是MVC,依然需要模型,依然需要把URL分发. MVC不仅仅是说Model,View和Controller,那是在讲模型和视图的松耦合。要是研个牛角,MVC2应该是MVP才更加贴切一点,因为,MVC中,Model变化会通知View的变化。但在Web中,只能通过C来“手动”刷新一下,使得页面(P)会显示Model的变化。印象中,java.sun.com里面有一个改良监听者模式的文章,说得很精彩。

  6. 返回顶部

    翻译的问题

    2007年11月18日 上午9时47分 发表人 iplaymodel qoo

    They force an almost airtight coupling between the user interface and the server, whereas Ajax enables a near-100% decoupling of the user interface and the server. 我想正确的意思应该是: 在Ajax能够让用户界面和服务器之间几乎100%解耦的情况下,它们却在用户界面层和服务器层之间强行制造了一个几乎是完全封闭的耦合.

  7. 返回顶部

    想的太远了

    2007年11月19日 下午7时56分 发表人 Allan Zhang

    问题的根本在于http协议本身的框架性限制,在这样一个笼子里,再扑腾能扑腾出什么来,能做到真正意义上的推模式么。

  8. 返回顶部

    ajax只是过渡技术而已

    2009年1月4日 上午4时32分 发表人 kobe zeng

    js的弱点(性能,安全,IDE支持,重构等)决定了它无法主宰web开发,js更无法取代java,java MVC这种成熟的方案将被延续并继续完善。服务器端的计算将有更大发展,因此java在服务器端的位置越来越重要,而与之相关的web框架会更加轻便和强大。

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。