Ruby on Rails
阅读原文时间:2023年07月09日阅读:2

Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架。在2004年7月,由Rails的创始人大卫·海纳梅尔·韩森从37signals公司的项目管理工具Basecamp里面分离出来,并且以开源方式发布。

主要特点

当然了,所有的 web 框架都有同样的目标。是什么使得 Rails 如此不同呢?我们可以通过几个途径来回答这个问题。 

第一是看架构。在过去的时间里,许多开发者在严谨的 web 应用程序上使用 MVC 架构。他们发现 MVC 架构可以使他们的程序变得更清晰,在 java 中像 Tapestry 和 Struts 这些框架都是基于 MVC 。 Rails 也是一个 MVC 框架。当你使用 Rails进行开发,应用程序的所有代码以一种标准方式互相作用。在开始开发之前,整个应用程序的骨架已经搭好了。 

第二个是看编程语言。 Rails 程序是使用 Ruby 编写的,它是一门现代,面向对象的脚本语言。 Ruby 简洁,不难理解。它可以让你快速地用代码自然 , 清晰表达想法。让你的程序能很简单被编写并且在几个月后还能很容易读懂。 

Ruby on Rails是一个 Web 应用程序框架,是一个相对较新的 Web 应用程序框架,构建在 Ruby 语言之上。它被宣传为现有企业框架的一个替代,而它的目标,简而言之,就是让生活,至少是 Web 开发方面的生活,变得更轻松。 

J2EE是一种利用Java平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java平台的标准版,J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性能高可靠性以及可扩展性的应用的需求。 

Java平台有3个版本,它们是适用于小型设备和智能卡的Java平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java平台企业版(Java 2 Platform Enterprise Edition,J2EE)。 

Ruby on Rails和 J2EE 堆栈的比较 

可以看到,Rails 堆栈和构成普通的基于 J2EE 的 Web 应用程序的组件之间的基本区别很小。两者都有用来执行应用程序代码的容器;都有帮助分离应用程序的模型、视图和控件的 MVC 框架;以及持久存储数据的机制。 

习惯约定优于配置

这个思想贯穿了 Rails 设计的始终。举个例子,通常我们写java web 应用程序,都会按照 MVC 来给对应类做区分,我个人喜欢将 Controller 类放在 web 目录中,将 View 类放在 view 目录中,将 model 类放在 domain 目录中。但是不同的人有不同的设置,不同的命名,如何让框架知道这些不同的目录呢, java 框架的解决之道,只能是通过 xml 配置文件让它了解这些信息。而 rails 的解决方式就是: 目录结构我来定义,你只要在我定义好的目录中放东西就可以了。这也就是为什么 rails 中很少有配置文件(但不是没有)的一个重要原因。虽然思想很简单,但是它带来的好处就是,Rails 的开发效率是 java 开发的 10 倍(这是 rails 的 fans 宣称的,不过我相信这点,相信看完这篇文章你也一定会的)。那么光这点就能让 rails 开发比采用 java 更快了吗?不完全是这样,因为这还得益于 rails 的另外一个设计理念:更少的代码。并不是任何语言都能那么宣称的,rails 实现这点完全得益于它的设计语言 Ruby 。使用 Ruby 你的确能用很少的语言写很多的功能,这是其他语言所无法实现的。想要掌握Rails,你一定要了解 Ruby。

生成器

ruby on rails使用的实时映射技术和元编程技术,免去了开发人员在开发过程中编写大量样板文件代码的烦恼。在少数需要使用样板文件代码的时候,开发人员可以通过ruby on rails内建的生成器脚本实时创建,而不再是通过手工编写。rails的这个特点可以使开发人员更专注于系统的逻辑结构,而不必为一些琐碎的细节所烦扰。 

网站应用程式架构

ASP.NET

 ASP.NET MVC

 BFC

 DotNetNuke

 MonoRail

 Umbraco

 

 

 

ColdFusion

 ColdSpring

 Fusebox

 Mach-II

 Model-Glue

 onTap

 on Wheels

 

 

Common Lisp

 ABCL-web

 blow

 BKNR

 SymbolicWeb

 UnCommon Web

 

 

 

C++

 CppCMS

 

 

 

Java

 Apache Struts

 AppFuse

 Flexive

 GWT

 Grails

 Vaadin

 ItsNat

 JavaServer Faces

 Makumba

 OpenXava

 Reasonable Server Faces

 RIFE

 Restlet

 Seam

 Spring

 Stripes

 Tapestry

 WebWork

 Wicket

 ZK

Perl

 Catalyst

 Interchange

 Mason

 

PHP

 Agavi

 Akelos

 CakePHP

 Chisimba

 CodeIgniter

 Garden

 Horde

 Kohana

 Kolibri

 KumbiaPHP

 Midgard

 Orinoco Framework

 PHPonTrax

 Seagull

 Simplicity

 Symfony

 WASP

 Yii Framework

 Zend

 Zoop

Python

 Bottle

 CherryPy

 Django

 Flask

 Gork

 Pyjamas

 Pylons

 Pyramid

 Tornado

 TurboGears

 web2py

 Zope

Ruby

 Ruby on Rails

 Merb

 Sinatra

 

Scala

 Lift

 

 

 

Smalltalk

 AIDA/Web

 Seaside

 

 

Other languages

 Application Express

 Fusebox

 OpenACS

 Yaws

 HAppS

 SproutCore

 

来源:http://baike.baidu.com/link?url=0AadnMDxce2m-YOEoZZoGMlx4nfTVNUlz53fGk_78c_0fmcXVKd7C6mhLjjbON44