【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

架构妄想

  • 2011-10-02
  • 本文字数:990 字

    阅读完需:约 3 分钟

William Vambenepe 的最新文章, AJAX + REST 是最新的架构妄想,让我们回想起了一个具有 15 年历史的架构,它曾被寄期望对 Web 产生革命性的影响。

在该架构里,Web 服务器将返回包含全部数据的 XML 文件,与 XML 一道,还会返回一个 XSLT 文件(用于描述如何将 XML 转换成 HTML)。浏览器将依此处理 XML 数据,显示最终的 HTML。搞定!该方式将带来很多好处,优于老式的“服务器生成 HTML”模型。XML 可以被其他应用方便地使用(不仅仅是人类),不同的 XSLT 可被用来将内容适配到各种客户端平台。

光阴飞逝,但这种理念其实从未真正实现。现在,我们又快速地转向 Ajax:

XML 文档还在,尽管它通常被称为 JSON。XSLT 现在则是一大堆 JavaScript。比起 XSLT 模型,这种模型有许多优势……它更灵活,可以实现小规模更新,以及部分页面刷新等等。但是,它是否也能够让架构保持清晰,使数据 API 与表现逻辑相分离呢?

Vambenepe 解释了原因,尽管它看上去优雅并包含了所有的架构优点,但该模型在大多数情况下并不实际:

相同服务的客户端支持多种交互模型,若不无限制的蔓延开来,单个 API 很难满足所有这些模型的需要(这里,所谓“单一 API”,其实就是一块遮羞布)。但若是想让 API 保持外观简洁,你最终可能就会得到交互频繁的应用。

但是在 Vambenepe 看来,这仅仅是该方法诸多问题中的一个。他指出的另一个大问题是该方法的事实:

……摒弃集成了浏览器代码和服务器代码的架构……不是所有 Web 开发者都认为他们的客户端框架和服务器框架是两套工具。将它们整体作为一个预先装配好的工具使用或许不会得到最优的代码,但可能还是可以最优利用你的开发资源。

尽管 Vambenepe 有强有力的论据,他的帖子还是遭到了质疑。什么才是正确之路?为现有 UI(如 GWT 风格)创建 / 生成单独的 REST API?一方面,这种方法简化了 UI 实现;另一方面,每个 UI 都要有一个新 API。这种方法的伸缩性更好吗?哪个代价更高?实现 UI 集成,还是后端 API?由这个帖子还产生了另一个更严肃的问题:什么是正确的设计方法?先实现后端 API,然后设计多个使用它的 UI;还是开始从 UI 开始设计,然后再定义支撑它的 API?传统来看,API 实现的代价似乎更高,但 API 本身要比 UI 更稳定。

因此,没错,满足各种需求的单一 API 看起来是架构妄想。但是,一组设计良好、轻巧可重用的 API 可被用来作为许多 UI(Ajax)实现的基础。

查看英文原文: Architectural Mirages

2011-10-02 03:412791

评论

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

重磅首发!全球首款一体化智能化MOM平台!

用友BIP

智能制造

Kafka为什么这么快?

java易二三

Java kafka 程序员 计算机

Lightroom Classic 2023 for Mac(Lrc2023图像处理软件) v12.4激活版

mac

图像处理软件 苹果mac Windows软件 lrc2023 Lightroom Classic

虚拟币交易平台搭建,数字货币交易所系统源码开发

V\TG【ch3nguang】

数字货币交易所开发 虚拟货币

为企业连接一切,用友BIP商业网络正式发布!

用友BIP

商业网络

Appium WebView 技术原理

霍格沃兹测试开发学社

老铁们,还记得PowerShell吗?

为自己带盐

PowerShell

基于 Java +Vue开发的企业级数字化采购系统 (SRM)

金陵老街

APP自动化如何使用参数化用例

霍格沃兹测试开发学社

docker安装redis

java易二三

Java redis 编程 程序员 计算机

租赁LED屏幕费用预算指南

Dylan

解决方案 LED LED显示屏

2023,到底是哪些ToB公司在正向增长?

ToB行业头条

BSC链/BNB链代币发行质押挖矿项目搭建开发

V\TG【ch3nguang】

代币 质押挖矿 BSC链

做SAST工具的我们,出路在哪里?

maijun

SAST工具 SAST工作方向 SAST技术方向

APP自动化之Toast识别

霍格沃兹测试开发学社

如何用大模型解决产业场景实战问题?案例精讲教程来了!

飞桨PaddlePaddle

人工智能 百度飞桨 文心大模型

相约清华!AI药物研发大赛总决赛明日开幕

飞桨PaddlePaddle

人工智能 paddle 百度飞桨 飞桨国赛

KubeEdge Sedna v0.6 & Ianvs v0.2 重磅发布:边云协同终身学习全面升级

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

基于HTML+CSS实现七夕浪漫情人节表白代码(附源代码)

小魏写代码

情人节 表白 HTML5, CSS3 爱心代码

Royal TSX for Mac:强大的远程连接管理工具,轻松高效

晴雯哥

区块链发币系统搭建,数字货币挖矿系统软件开发

V\TG【ch3nguang】

数字货币交易所开发 区块链技术应用开发

混合App的开发占比越来越大,大厂们纷纷转向此类开发

没有用户名丶

Jmeter 参数化功能实现注册登录数据驱动

霍格沃兹测试开发学社

【iOS逆向与安全】编写一个使应用保持前台运行的系统插件

小陈

安全 逆向 iOS逆向 ios安全 ios 开发

软件测试案例 | 某教务管理平台系统的系统测试总结报告

TiAmo

测试 性能测试 功能测试

NFT/DAPP链游系统智能合约搭建开发

V\TG【ch3nguang】

DAPP系统开发 NFT链游

总有陪伴在身边,皮皮App全新slogan亮相,一起放肆嗨

联营汇聚

NFTScan | 08.21~08.27 NFT 市场热点汇总

NFT Research

NFT\

架构妄想_REST_Boris Lublinsky_InfoQ精选文章