写点什么

架构妄想

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

评论

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

GitHub和 Gitee联合编写最新版20w字Java全栈面试手册,简直无敌!

Java你猿哥

Java java面试 SSM框架 Java面经

GitHub上线重量级分布式架构原理设计笔记,开源的东西看着就是爽

Java你猿哥

架构 分布式 分布式架构

最佳云转码,腾讯云MPS夺得MSU编码器大赛21项第一

科技热闻

Java中线程的6种状态详解(NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED)

共饮一杯无

Java 线程 线程状态 三周年连更

行云管家堡垒机有免费的吗?谁能告诉一下!

行云管家

高新企业 堡垒机 行云管家

集简云开放平台是什么?

集简云开放平台

简单的视频格式转换器:MacX Video Converter Pro中文版

真大的脸盆

Mac Mac 软件 视频格式转换 格式转换器

Solr和Elasticsearch,搜索框架怎么选?

会踢球的程序源

Java

企业全面数智化转型,国产替代成为安全保障

用友BIP

技术大会 用友iuap 数智化转型 用友BIP 用友技术大会

【堡垒机小知识】堡垒机能记录操作时间、操作数据等等吗?

行云管家

网络安全 堡垒机

阿里大神整理的Java核心知识点和面试官常问到的知识点,压压惊

会踢球的程序源

Java 面试 求职 java面试 Java构架

浪潮海岳低代码平台inBuilder开源社区版正式发布

科技热闻

站群SEO是什么意思?站群SEO怎么做效果才好?

海拥(haiyong.site)

三周年连更

阅读完synchronized和ReentrantLock的源码后,竟发现其完全相似

Java你猿哥

并发编程 并发 synchronized SSM框架 ReentrantLock

前端沙箱利用这些特性实现代码的隔离与限制

没有用户名丶

DLRover:云上自动扩缩容 DeepRec 分布式训练作业案例分享

AI Infra

程序员 AI 互联网 DLRover

Zabbix5.0配置企业微信告警

A-刘晨阳

Linux zabbix 三周年连更

硬核!万字神文精解高并发高可用系统实战,分布式系统一致性文档

做梦都在改BUG

Java 高可用 高并发 分布式一致性

Python本地SQL文件对比工具

YUKI0506

Python 文件对比 对比工具 difflib

什么是企业数智化的创新加速器?

用友BIP

技术大会 用友iuap 用友BIP 用友技术大会

挑战 30 天学完 Python:Day9 条件语句

MegaQi

Python 挑战30天学完Python 三周年连更

Linux:管道命令与文本处理三剑客(grep、sed、awk)

会踢球的程序源

Java Linux

BT!GitHub开源阿里Java性能调优百宝书仅3小时,标星竟超过30k

Java你猿哥

Java JVM 性能调优 SSM框架 Java工程师

chrome调试技巧(一)

知心宝贝

前端 后端 调试 三周年连更

「云原生」Elasticsearch + Kibana on k8s 讲解与实战操作

会踢球的程序源

Java elasticsearch Kibana

知你懂你,聪明得简直不像一台车,问界M5智驾版重磅升级鸿蒙3

Geek_2d6073

听说谛听闹退休?感知网络接班啦!

脑极体

感知网络

热榜!Alibaba最新发布「10亿级并发系统设计文档」Git狂揽9000星

Java你猿哥

数据库 架构 分布式 架构设计 并发系统

ChatGPT无需API开发连接第三方系统,让舆情自动监控

集简云开放平台

数据集成 数据集成平台 Chat

用友iuap平台一站式服务,助力央国企推进数智化转型

用友BIP

女朋友要我讲解@Controller注解的原理,真是难为我了

Java你猿哥

Java spring Spring 配置解析

架构妄想_REST_Boris Lublinsky_InfoQ精选文章