产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

在 Ruby on Rails 中实现 Seaside?

  • 2007-04-12
  • 本文字数:715 字

    阅读完需:约 2 分钟

Ruby on Rails 为什么成为最炙手可热的 Web 框架?到底是因为它引入了许多全新的革命性理念?或者仅仅是因为它为早已众所周知的设计实践带来更为优秀的实现?这正是 Giles Bowkett 所问的第一个问题。他通过比较了 Rails 的视图 / 控制器模式和 Seaside 的组件及渲染方法,向大家阐述了自己的想法。将 Rails 的视图 / 控制器替换成与 Seaside 更为相似的方式,是否值得呢?

Giles 着重指出这种架构的优点(如集中管理)和缺点(如毫无意义的 URL):

难道你不能模拟 Seaside 的组件化模式么?你可以把 Rails 的控制器和视图替换成包含带内建渲染方法(built-in render methods)对象的 Builder 模板,而那些内建的渲染方法可以调用其它 Builder 模板。这当然行得通,事实上,你基本能实现除了 Continuations 之外的所有东西。但问题是,如果你没有 Seaside 的 Session 管理,这样做是否值得?而且在除了 Smalltalk 之外的语言中 Session 管理会不会变成一场噩梦?这里的观点是,Rails 的模板系统是一个又大又臃肿又臭气熏人的大洋葱。最后,事实上我们为 Seaside 风格的开发提出了一个可能比 Rails 更好的设计方案,而且保留所有 Ruby 强于 Squeak 的优点——更简便的 DB/Unix 集成,更多开发人员,等等。

文章收到不少评论,其中 Assaf Arkin 友善地指出如何使用 Rails 中的 capture() 方法来实现无模板的解决方案。而 Bram 法则(Bram’s Law)表示担心:如果一个软件越容易编写,那么实际上它会被实现得越糟糕。

……这正是我一直以来担心在 Rails 上发生的:在五年或者十年以后,你能找到的最差的工作将会是 Rails 的工作——你在维护一些非程序员写的代码,这些人发现 Rails 使得编程变得如此之简单,以至于他们根本不用知道他们在做些什么。

2007-04-12 20:30729
用户头像

发布了 117 篇内容, 共 15.7 次阅读, 收获喜欢 0 次。

关注

评论

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

《恰如其分的软件架构》随笔一:模型是解决复杂问题的重要途径

panda

模型

第七节:SpringBoot高级属性配置二

入门小站

springboot Java EE

Netflix是如何做决策的? | 2. 什么是A/B测试

俞凡

数据分析 netflix 大厂实践 2月月更

Netflix是如何做决策的? | 3. A/B测试结果之假阳性和统计显著性

俞凡

数据分析 netflix 大厂实践 2月月更

Netflix是如何做决策的? | 4. A/B测试结果之假阴性和统计功效

俞凡

数据分析 netflix 大厂实践 2月月更

以太坊剖析 - 交易执行(TransactionExecutor)

起航

区块链 以太坊

开源效能可视化平台介绍 -DevLake

夏兮。

效能平台 MARI

JVM进阶(六):鲜为人知的二次标记

No Silver Bullet

JVM 日志分析 2月月更 二次标记

团队开周会的目的:保证有效的协同效应和构建PDCA循环

panda

管理 PDCA 周会 协同效应

Netflix是如何做决策的? | 1. Netflix的决策制定

俞凡

数据分析 netflix 大厂实践 2月月更

JVM进阶(三):内存分配与回收策略

No Silver Bullet

Java JVM 内存分配 2月月更

图解MySQL(5)-Buffer Pool的flush链表

JavaEdge

2月月更

如何阻止软件退化?

蜜糖的代码注释

Java 后端开发 项目实践 2月月更

JVM进阶(五):JAVA GC 之标记

No Silver Bullet

JVM 2月月更 标记 MAT

Netflix是如何做决策的? | 5. 在做决定时建立信心

俞凡

数据分析 netflix 大厂实践 2月月更

以太坊剖析 - 区块头部(BlockHeader)

起航

区块链 以太坊

共赴冰雪之约,见证体育场馆的数字化之旅

脑极体

视频绿幕抠像一键搞定,这些好用工具你要知道。

彭宏豪95

效率 工具 视频剪辑

[架构实战营] 模块八作业

Geek_0ed632

「架构实战营」

对 HTTP 缓存的全面总结

编程三昧

缓存 前端开发 HTTP 2月月更

【以太坊剖析】以太坊虚拟机(EVM)之基本定义

起航

区块链 以太坊 EVM 以太坊虚拟机

2021考了个PMP

夏兮。

PMP Certification

WebRTC 传输通道的建立过程解析 | 社区征文

liuzhen007

音视频 新春征文 2月月更

在线SVG在线编辑器

入门小站

工具

以太坊剖析 - 交易收据(TransactionReceipt)

起航

区块链 以太坊

如何写好代码注释?

蜜糖的代码注释

Java 后端 开发 2月月更

JVM进阶(二):初识 JAVA 堆

No Silver Bullet

Java JVM 内存 2月月更

守护石谈学习Java之路

DaemonStone

Java 学习方法 经验分享 编程学习

架构训练营 week9 课程总结

红莲疾风

「架构实战营」

Jvm 参数默认值

努力努力再努力

架构训练营 week8 课程总结

红莲疾风

「架构实战营」

在Ruby on Rails中实现Seaside?_Ruby_Alexis Midon_InfoQ精选文章