写点什么

在 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:30748
用户头像

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

关注

评论

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

支撑阿里“双十一”的消息中间件,带你云淡风轻面对高并发

图灵社区

RocketMQ 中间件 架构师 消息中间件

贤鱼的刷题日常--P1548 [NOIP1997 普及组] 棋盘问题

贤鱼很忙

c++ CSP 10月月更

io的实质

wzh

Linux 面试 后端 io java 编程

【入门】你连Babel都不会配?那插件不成乱装了

小鑫同学

前端 Node 10月月更

Spring Boot「04」Annotations 01

Samson

Java spring 学习笔记 spring-boot 10月月更

Babel 插件开发&访问节点

小鑫同学

前端 Node 10月月更

DevOps 与 DataOps 相关吗?

雨果

DataOps

Java 序列化与反序列化

Yeats_Liao

后端 Java core 10月月更

干货|什么是特性团队/功能团队(FeatureTeam)

laofo

Scrum 研发效能 PMO 敏捷精益 敏捷研发

2022-10-12:以下go语言代码输出什么?A:1;B:2;C:panic;D:不能编译。 package main import “fmt“ func main() { m := m

福大大架构师每日一题

golang 福大大 选择题

内网渗透-IPC$横向控制OA系统【网络安全】

网络安全学海

网络安全 信息安全 渗透测试 内网渗透 漏洞挖掘

微服务与 API有什么区别?

雨果

微服务 数据api

【实战】自定义 Github Action 库

小鑫同学

前端 Node 10月月更

Java Lambda 表达式

Yeats_Liao

后端 Java core 10月月更

数据质量监控,你一直都做错了

雨果

数据质量

开发 Babel 插件可以试试这个 CLI 工具

小鑫同学

前端 Node 10月月更

算法 _【实验5.2】1-深度优先搜索暴力求解旅行商问题

清风莫追

算法 深度优先搜索 10月月更

【入门教程】Rollup模块打包器整合

小鑫同学

前端 Node 10月月更

跟着卷卷龙一起学Camera--夜景拍照02

卷卷龙

ISP camera 10月月更

【愚公系列】2022年10月 Go教学课程 026-结构体

愚公搬代码

10月月更

read、select、poll、epoll区别

wzh

网络 Linux Kenel epoll IO多路复用 poll

cstdio的源码学习分析10-格式化输入输出函数fprintf整体分析

桑榆

源码刨析 10月月更 C++

走进“yarn create vite”的源码学习

小鑫同学

前端 Node 10月月更

【Serverless】前端上 Ali 云必备指南

小鑫同学

前端 Node 10月月更

贤鱼的刷题日常--P2671 [NOIP2015 普及组] 求和

贤鱼很忙

c++ 10月月更 题解

利用fs-extra实现"yarn create tlist"创建项目

小鑫同学

前端 Node 10月月更

跟着卷卷龙一起学Camera--夜景拍照03

卷卷龙

ISP camera 10月月更

Go 语言泛型编程之切片

宇宙之一粟

Go 泛型 泛型编程 10月月更

MySQL高级--性能优化查询截取分析

Java学术趴

10月月更

支撑阿里“双十一”的消息中间件,带你云淡风轻面对高并发

图灵教育

RocketMQ 中间件 架构师 消息中间件

这是我见过的,最好的工作流设计

跟YY哥学Jira

设计 Jira workflow

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