Rails系列教程(2):Models, Views, and Controllers

上一篇 / 下一篇  2008-02-02 15:41:32 / 个人分类:RoR

一个应用(application)可以被拆分为3部分:

1.models

 用于维护 the state of the application,通常我们可以理解 states 就是数据,这个概念和OO编程中的states相似,一种维护state的途径就是通过一定规则存取(access)数据通过数据库(database)。注意我们这里说的是维护,不是存取,因为,通常的数据处理过程并没有我们想象的那么简单,并不是取钱以后就减去相应金额,因为我们要保持余额大于0,这就产生了一条Rule,所以models应该是:

models用于存取数据(从某种介质里存取,比如databases)
models用于约束数据(通过某种规则约束,比如商业规则)

 

2.views

  用于产生(generate)user interface,经常我们会把views和models结合起来,views的界面信息,部分基于models,注意,views是不处理数据的,只是呈现数据给用户,当然实际上,我们可能会用一些语言比如:javascrpit来约束数据,因此实际应用中,并不会这么死死的遵循MVC的规范。views和models并不是一一对应的关系,这对我们理解编写rails applications有重要的影响,比如一个views可能对应很多的models,就像一个网站的首页一样,会在很多tables里面调用信息,再如一个models可能对应很多的views,也就是说,一个models可能在一个页面显示,也可以在其他页面显示一样。这是灵活的

 

3.controllers

 作为views和models的连接体,可以认为controllers是分治哲学里面的"治",可以认为controllers是一个乐队的指挥一样,协调MV工作

 

 

MVC图解:

*大家仔细看,会发现view和model间使用虚线,说明什么问题?说明view和model是不能直接通讯的,必须通过controller作为中间体

MVC不仅仅是用于web的一个architecture,而是可以用于所有的applications,而且事实上MVC最早是用于GUI applications

 

我们为什么要用MVC,即使不用MVC,特别在GUI applications,假如你仅仅做一些小型的applications,估计你根本不会去用,甚至很多人也不懂MVC,那为什么要用MVC?MVC可以使得程序更容易编写和维护,rails就使用MVC,使得程序非常容易编写。其实除了rails很多architectures比如:WebObjects, Struts, and JavaServer Faces都是用用MVC

 

 

 

Rails architecture:

外来的requests首先被发送到一个router,router首先解析requests,然后解决requests将被发送到什么地方的问题,这时候一个叫action的特殊method来控制requests的去向,action位于controllers,action着眼于requests的data,action可能和models互交,也可能调用其他的actions,或者影响views的表现,过程如图:

 

为了说明问题,我们来看URLhttp://my.url/store/add_to_cart/123

store : controller的名字
add_to_cart : action的名字

其他部分我们不用详细的追究它们的含义,而且过早的了解,也只能带来疑惑。这里强调一下URL,注意的是my.url后面第一个一定是controller name,而第二个一定是action name。

因为URL的关系,router在接受requests的时候他会知道action在哪里,因为URL被规范了,所以上例中router很清楚的知道,request要被传递到StoreController这个class里面的add_to_cart这个action里,分析URL的过程就是我们前面说过的router工作之一,对requests的解析问题,解析完成,就需要把requests的相关内容传递到action里面,action在选择处理的方式,即前面提到的3种处理。注意到这里有些语句是含糊的,因为现在的知识不能让我们马上铺开全局进行讲解,这里只是描绘大概的轮廓,以便以后了解细节做好准备


TAG: RoR

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-29  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 22762
  • 日志数: 47
  • 建立时间: 2008-01-29
  • 更新时间: 2008-02-02

RSS订阅

Open Toolbar