写点什么

在 Ruby on Rails 中实现 Seaside?

2007 年 4 月 12 日

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 年 4 月 12 日 20:30272
用户头像

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

关注

评论

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

计算机专业必看!难道Android真的凉了?大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

2021年区块链十大发展趋势:那些偶然中的必然

CECBC区块链专委会

货币

请用思维导图画出架构师训练营所有技术知识点

Jacky.Chen

架构师训练营11W作业

Geek_f06ede

Java并发编程:AQS的公平性

码农架构

Java Java 分布式 java 并发

细节拉满!美团首推“百万级”Redis进阶笔记究竟有什么魅力

程序员小毕

数据库 nosql redis 分布式 性能

小品阅读所带来乐趣

叶小鍵

区块链数据存储与IPFS技术的融合应用

CECBC区块链专委会

区块链 数据存储

PlayStation@4功能介绍及测试应用

行者AI

测试

Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)

Geek_Willie

Vue SpreadJS vite

全网最全原理讲解!如何试出一个Android开发者真正的水平?已开源

欢喜学安卓

android 程序员 面试 移动开发

LeetCode题解:347. 前 K 个高频元素,快速排序,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

Appium的安装及简单的使用介绍

行者AI

人工智能

如何理解Linux network namespace ?

滴普科技2048实验室

Linux

区块链脱虚向实 市场教育基本完成

CECBC区块链专委会

区块链

2020年度国产数据库:openGauss

墨天轮

数据库

APICloud AVM 多端开发 | 外卖app开发案例教程(下)

APICloud

前端工程 Web Worker 前端进阶 前端教程 APICloud

Windows Server 做网络转发

wong

Windows Server netsh

功能测试用例设计方法分享

行者AI

测试

理解linux虚拟网络设备veth

滴普科技2048实验室

Linux

亿级流量峰值没在怕,“缓存”技术来减压!

博文视点Broadview

入职阿里!全靠刷明白了这份Java面试合集(分布式+Dubbo+线程+Redis+数据库+JVM+并发)

Java架构之路

Java 程序员 架构 面试 编程语言

同事临走时,给了我这份多线程and高并发(面试题+思维导图),借此我含泪拿下了阿里offer

Java架构之路

Java 程序员 架构 面试 编程语言

AI面临产业大考:落地虽难,但产业化路径已日渐清晰

脑极体

这些常用ETL任务调度框架组件,你都知道几个?

会飞的鱼

大数据处理 kettle 海豚调度 调度引擎 调度式分布

万字长文聊缓存(下)- 应用级缓存

Silently9527

缓存 缓存击穿 Caffeine 缓存架构

城市智慧社区智能化建设,平安小区管理系统

135深圳3055源中瑞8032

区块链食品溯源系统搭建---赋能智慧农业

135深圳3055源中瑞8032

Apache Pulsar 12月月报:Pulsar 2.7.0 发布!

Apache Pulsar

大数据 开源 pulsar Apache Pulsar 消息系统

花了19998买的学习教程!2021年Android技术下半场在哪?震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

三年JAVA开发经验,字节四面成功拿下2-2Offer,入职就是30K16薪

Java架构之路

Java 程序员 架构 面试 编程语言

在Ruby on Rails中实现Seaside?-InfoQ