QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

架构妄想

  • 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:413032

评论

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

GIMP 3.0.0 (Linux, macOS, Windows) 正式版发布 - 免费开源图像编辑器

sysin

GIMP

原生APP和混合APP开发的对比

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

一款体验故障定位的神器

乒乓狂魔

故障定位 AIOPS 可观测

原生APP的性能优化

北京木奇移动技术有限公司

软件外包公司 原生APP开发 APP开发公司

StarRocks 与主流 BI 工具兼容性盘点(Superset/帆软/QuickBI/Tableau)

镜舟科技

MySQL OLAP BI 分析型数据库 StarRocks

《Operating System Concepts》阅读笔记:p460-p4470

codists

操作系统

【实战解析】淘宝店铺商品全量爬取:item_search_shop API深度指南

Noah

【Redis深度专题】「踩坑技术提升」一文教会你如何在支持Redis在低版本Jedis情况下兼容Redis的ACL机制

码界西柚

redis 权限控制 acl 底层原理 访问控制列表

征程 6X CAMSYS 性能测试方案介绍

地平线开发者

自动驾驶 算法工具链 地平线征程6

Leangoo vs ONES:哪个更适合Scrum敏捷开发和SAFe大规模敏捷?

顿顿顿

项目管理 敏捷开发 任务管理 敏捷工具 scrum工具

昇腾支持150+企业上线DeepSeek模型及服务,昇腾人工智能伙伴峰会顺利召开

极客天地

PureBasic 6.20 (macOS, Linux, Windows) - 现代的 BASIC 编程语言及 IDE

sysin

PureBasic

Netty源码—Reactor线程模型二

不在线第一只蜗牛

Java 数据库 Linux

Fabric8 Kubernetes 教程——Replication、ConfigMap、Secret

FunTester

一键部署 GPU Kind 集群,体验 vLLM 极速推理

Se7en

鸿蒙NEXT开发案例:程序员计算器

zhongcx

VMware vSphere Replication 9.0.2.2 发布 - 虚拟机复制和数据保护

sysin

vSphere

混沌工程没有银弹

FunTester

原生APP开发的优势和特点

北京木奇移动技术有限公司

原生APP 软件外包公司 APP外包公司

从青铜到王者系列(1):手把手教你用WSL 2在Windows 11家庭版上安装Docker,开发必备教程!

程序员老王

物化视图详解:数据库性能优化的利器

镜舟科技

StarRocks 携程 物化视图 湖仓 Data Cache

从投机到可持续发展:ETHDenver 2025 的关键启示!

One Block Community

去中心化 polkadot web3

以太坊兼容智能合约即将登陆 Kusama!Polkadot 迎来智能合约新时代

One Block Community

智能合约 polkadot web3

混合APP上线时需要的问题

北京木奇移动技术有限公司

软件外包公司 APP开发公司

三分钟掌握音频提取 | 在 Rust 中优雅地处理视频音频

Yeauty

rust ffmpeg Video media audio

昇腾AI携手22家伙伴发布大模型应用一体机,让企业AI落地更简单

极客天地

51Talk发布2024年Q4财报:第四季度营业收入同比增长117.3%

财见

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS HPE (慧与) 定制版

sysin

esxi

工作中最常用的 8 种设计模式

不在线第一只蜗牛

设计模式

TCL电子(01070.HK)2024年经调整归母净利润同比翻倍

财见

测试技艺 | 在AI极速发展下重塑

技艺的尾巴

人工智能 AI 软件测试 推动软件业变革 测试技艺

架构妄想_REST_Boris Lublinsky_InfoQ精选文章