写点什么

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

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

关注

评论

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

多方系统集成的启示

QualityFocus

集成测试 系统集成

我们在讲的 Database Plus,到底能解决什么样的问题?

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

关于K8s中Service Account的一些笔记:Pod内部如何访问K8s集群

山河已无恙

k8s 4月月更

RTC 科普视频丨聊聊空间音频的原理与其背后的声学原理

声网

RTE技术详解 空间音频

R 编程语言 - 简介

海拥(haiyong.site)

R语言 4月月更

清华校友走进百度 用科技赋能产业智能化转型

百度大脑

高精度轻量级图像分割SOTA模型PP-LiteSeg重磅开源!

百度大脑

细数云上综合治理始末,华为云联创营解码企业运维之道

Geek_2d6073

浮点数-Float-Double转二进制

入门小站

工具

参加 KubeVela 开源之夏,给你的云计算编程能力加个 Buff

阿里巴巴云原生

阿里云 云原生 开源之夏

linux之软连接和硬连接的区别

入门小站

Linux

CorelDRAW Graphics Suite2022中文版

茶色酒

cdr2022

Java 如何从一个 List 中随机获得元素

HoneyMoose

在线Excel转SQL工具

入门小站

工具

从概念、部署到优化,Kubernetes Ingress 网关的落地实践

阿里巴巴云原生

阿里云 Kubernetes 云原生 网关

重学架构之电商秒杀系统

陈华英

架构实战营

参赛必看,2022语言与智能技术竞赛赛题任务解读直播!

百度大脑

Apache ShardingSphere 代码格式化实战 —— Spotless

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

百度天工AIoT打造农业种植方案,用数字经济助力建设农业新模式

百度大脑

ECA 认证备考指南

Se7en

Selenium自动化应该避免的测试场景

FunTester

制造蝴蝶飓风,微众区块链的蝶变和ESG新使命

脑极体

[Day29]-[数组]将一维数组转变成二维数组

方勇(gopher)

LeetCode 数据结构算法

DaaS服务之分布式日志/缓存/对象存储

穿过生命散发芬芳

4月月更

linux之软连接和硬连接的区别

入门小站

Linux

资源画像,让容器资源规格的填写不再纠结

阿里巴巴云原生

阿里云 容器 云原生

[Day28]-[二叉树]左叶子之和

方勇(gopher)

LeetCode 数据结构与算法

2022语言与智能技术竞赛再升级,推出NLP四大前沿任务

百度大脑

赛事解析|乒乓球时序动作定位大赛亚军方案分享

百度大脑

一站式内容创作助手 智能创作平台生成正式商用

百度大脑

你竟不劝我坚持

QualityFocus

职业规划 职业生涯规划

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