写点什么

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

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

关注

评论

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

11. 有大数据就有人工智能的机会

数据与智能

人工智能

架构实战训练营模块 2 作业

Sonichen

模块二作业

bin

【VueRouter 源码学习】第四篇 - 创建路由映射表

Brave

源码 vue-router 9月日更

合规安全大考核:移动应用安全策略全盘点

蚂蚁集团移动开发平台 mPaaS

RPC 移动开发 mPaaS 隐私安全 加固

Vue进阶(九十六):VuePress 详解

No Silver Bullet

Vue 9月日更

Node.js 应用全链路追踪技术——[全链路信息获取]

vivo互联网技术

node.js 大前端 编程语言 全链路追踪 语言 & 开发

ReScript 与 TypeScript,谁是前端圈的“当红辣子鸡”

华为云开发者联盟

Java JavaScript typescript 大前端 ReScript

微信朋友圈高性能复杂度分析

Geek_85eb5f

自己动手写个微型博客吧,还能实现网页版 Blink,No.1

梦想橡皮擦

9月日更

50亿海量数据如何高效存储和分析? GaussDB (for Cassandra) 3个秘诀搞定

华为云开发者联盟

存储 华为云 海量数据 分析 GaussDB (for Cassandra)

PostgreSQL插件之TimescaleDB

华为云数据库小助手

postgresql 插件 GaussDB 华为云数据库

微信朋友圈的高性能复杂度分析与设计

眼镜盒子

架构实战营

Go的测试框架

Rayjun

Go 语言

架构实战营 - 模块七作业

思梦乐

揭秘盒马鲜生 Android 短视频秒播优化方案

阿里云视频云

android 音视频 短视频 Video播放器 移动端

转型 Golang 开发的心路历程

baiyutang

php 云原生 求职 Go 语言 9月日更

解读顶会CIKM'21 Historical Inertia论文

华为云开发者联盟

华为云 论文 长序列时间 时间序列预测 CIKM’21

微信PaxosStore:深入浅出Paxos算法协议

OpenIM

模块二

树建

架构实战营

【Flutter 专题】55 日常问题小结 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

书单 | 做数字化转型,离不开这10本书!

博文视点Broadview

杀疯了,编程语言还能卷成这样❓❗【话题讨论】

InfoQ写作社区官方

话题讨论 话题

华云大咖说 | 业务转型中的IT云化服务——安超云基座方案介绍

华云数据

NDK的C++ 库支持

Changing Lin

9月日更

朋友圈高性能复杂度分析

陈家豪

架构实战营

架构训练营 模块二

初一

模块七

SAKIN

当视频恋爱 App 用上了 Serverless

Serverless Devs

Serverless 云原生

学校疫苗中心管理应用搭建心得

明道云

Go- 文件读写-1

HelloBug

文件读写 Go 语言

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