[ruby off rails] Web是RMR不是MVC

花花公子 2010-07-20
今天看了一大堆为什么不应该使用MVC来建造web应用的文章,有空翻译两个。首先讲一下什么是RMR,RMR=Resource,Method and Representation,就是web最核心的部分,也是现在讲的Restful Web Service里面的重要概念。

为什么不该用MVC来构造Web应用,最大的问题在于交互。传统上MVC用来解决GUI程序编程。Controller单独列出是因为GUI程序有比较复杂的交互性需要,比如键盘敲击,鼠标事件,还有其他的输入设备(这些在js中当然也存在)。而Web应用与外部交互只依靠URI和Method,所以把用于交互的部分提炼出来就显得十分没有必要。而且MVC并没有真正解决复杂的HTTP路由问题,这里不得不称赞Sinatra的路由做的不错。

目前Sinatra的路由功能和“get '/'”这样的DSL已经解决了前两个问题。而Representation则需要"get '/', :provides"这样的方式来指定(尚未实验过)。
花花公子 2010-07-20
试验成功
require 'sinatra'
require 'haml'

get '/index', :provides => :xml do
  '<?xml version="1.0"?><xml>content</xml>'
end

get '/index' do
  'index'
end


使用 curl -H "Accept: application/xml" http://localhost:9393/index 可以看到输出
Global site tag (gtag.js) - Google Analytics