Rails 架构学习笔记

Rails给web应用的结构上强加了很多约束,而正是这些约束使得应用的开发变得很容易。也许是因为无规矩不成方圆,也许是因为规定好了道路是的开发者不用在选择面前纠结和徘徊,也许是从框架上植入了最佳实践,是的新手不那么容易犯前人的错误。。。

Models, Views, and Controllers
MVC是一个web开发中经典的甚至是事实上的标准模式。从struts的使用范围就可见一斑。

Models, 模型,负责维护应用的状态state。这个状态有时候是瞬间的,经过几个用户交互之后就消失了,有时候是持久的,需要存在应用以外的某个地方,比如DB。模型不只是data,它还包含加在data只是的业务规则rule。可以把模型看做是仓库和看守人的综合体。

Views, 视图,负责生成用户接口,通常是基于模型里的data来完成的。同样一个模型可以根据需求有不同的展示方式,这就是有视图来完成的。

Controllers,控制器,负责编织(orchestrate)整个应用,控制和指挥。控制器接收外部事件,通常是用户的输入,然后和模型交互,最后向用户展示合适的视图。

有了MVC,你就知道把自己的代码根据职责分成3个不同的方面,分别放到不同的地方。不用纠结,也不会出错。rails利用脚手架(scaffolding)来帮助我们生成这三个地方,供你放置MVC代码。
根据“约定大于配置的原则”,rails会根据MVC的约定到根据约定的规则到约定的地方找相应的MVC组建,所以无需配置。

Rails Model Support
对于需要持久化的数据,我们需要设计DB。DB是根据关系代数的集合理论来设计的,而我们的模型是根据OO来设计的。这就需要Object-Relational Mapping,对象关系映射。

ORM,就是将关系表和对象映射起来:一张表对应一个类,表里面的一条记录,就是类的一个实例对象,表的属性就是对象的一个属性。相应的,类的方法来操作表,对象的方法来操作它表达的那一条记录。

Active Record,rails提供的一个ORM层。还是基于约定,他负责映射工作,并且不用配置文件。Active Record的功能不仅如此,他还能与MVC中的其他组件很好的交互,比如将用户的输入映射到模型。他是rails的模型的一个强大的基础工具。

Action Pack: The View and Controller
rails提供了一个组件来支持视图和控制,这是应为他们联系很紧密。控制为视图准备数据,控制还从视图生成的页面中获取用户输入。这种紧密的集合并不意味着我们可以把这两部分代码混杂在一起。相反,rails让我们将他们清楚的分开。

View Support,作为view,可以是静态的内容也可以是动态的内容。我们的应用中当然需要大量的动态信息。怎么生成动态的信息呢?rails基于模板来生成动态信息。它提供3中模板技术,Embedded Ruby (ERb), XML Builder 和RJS。ERb就是在html里面潜入ruby代码,这个是最常用的,很灵活,但也有点违反MVC原则,很容易让你在view里面引入了很多逻辑,而这些逻辑本来应该在控制或模型里面的。所以要谨慎使用,毕竟分离关注也是程序员的一部分职责所在。

Controller Support,rails 的Controller是应用的逻辑中心,它协调着用户,视图和模型的交互。它提供了一些重要的辅助服务:
- 路由, 它负责根据url将用户的request路由到具体的action
- 缓存, 它管理缓存,帮助支持高负荷的性能
- 帮助模块, 它管理helper模块,以减少view的代码膨胀
- 会话, 它管理会话,给用户以持续性的交互体验







你可能感兴趣的:(mvc,应用服务器,配置管理,Ruby,Rails)