如何用AI技术降噪? QCon 广州“音视频架构实践”专场给你答案! 了解详情
写点什么

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

  • 2007 年 11 月 12 日
  • 本文字数:1485 字

    阅读完需:约 5 分钟

自打 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?

2007 年 11 月 12 日 19:48807

评论

发布
暂无评论
发现更多内容

SDN特有的网络安全问题

穿过生命散发芬芳

SDN网络 6月月更

10个常见触发IO瓶颈的高频业务场景

华为云开发者联盟

数据库 sql 索引 华为云 数据清理

每日一题——leecode59( 螺旋矩阵 II)

武师叔

6月月更

【愚公系列】2022年06月 面向对象设计原则(四)-依赖倒置原则

愚公搬代码

6月月更

数据库每日一题---第7天:订单最多的客户

知心宝贝

数据库 程序员 前端 后端 6月月更

【首发】根据壁纸修改App主题,它真的来了

yechaoa

android 6月月更 material design

GameFi新的启程,AQUANEE将于6.9日登陆Gate以及BitMart

BlockChain先知

致广大、尽精微,曙光问道算力服务“神经系统”

脑极体

一、Kafka安装

星期35

企业内部Wiki,你建立了么?

小炮

进击的巨人:深入浅出,玩转以太坊 PoS 合并

TinTinLand

区块链

【LeetCode】最长连续序列Java题解

Albert

LeetCode 6月月更

干货合集│最好用的 python 库都在这

程序员亮仔

Python 有趣的技术知识 6月月更

从源码解析flutter_redux 的精准局部刷新

岛上码农

flutter ios 安卓开发 跨平台应用 6月月更

【Spring 学习笔记(八)】Spring IoC/DI注解开发 之 原始注解开发

倔强的牛角

Java spring Java EE 6月月更

线程池

周杰伦本人

6月月更

手慢无!阿里P8架构师力荐Spring生态全家桶全彩笔记

Java全栈架构师

spring 编程 源码 程序员 面试

不止于观测|阿里云可观测技术峰会正式上线

阿里巴巴中间件

阿里云 云原生 可观测技术峰会

AQUANEE将在近期登陆Gate以及BitMart,低位布局的良机

石头财经

IPSec的特征与功能

阿泽🧸

6月月更 IPsec

什么是集群?为什么要使用集群架构?

Finovy Cloud

集群架构 云渲染 GPU服务器

【资源分享】综合性的导航网站

小炮

react框架学习之深入研究【王道react】

黎燃

6月月更

Java异常处理机制

未见花闻

6月月更

服务器运维环境安全体系(下篇)

融云 RongCloud

GameFi新的启程,AQUANEE将于6.9日登陆Gate以及BitMart

威廉META

马志强:语音识别技术研究进展和应用落地分享丨RTC Dev Meetup

声网

音视频 语音识别

linux之Ansible快速入门

入门小站

Linux

vue指令-5

小恺

6月月更

区块链创业必看——黑客松冠军项目是如何成功的?

TinTinLand

区块链

浅谈企业自媒体如何才能脱颖而出

石头IT视角

「云智公开课」百度沧海·存储

「云智公开课」百度沧海·存储

面向服务用户界面的出现昭示服务器支持的MVC死亡来临?_SOA_Jean-Jacques Dubray_InfoQ精选文章