【IT168技术文档】
您可能听说过 Ruby on Rails,一个似乎正以狂风暴雨之势席卷 Web 开发社区(尤其是 J2EE 和 PHP 的编程人员)的新应用框架。
Rails 是功能强大的 Web 应用平台,而且深受 J2EE 和 PHP 的编程人员的喜爱。当您了解 Rails 的优势后,您就会理解它对 J2EE 和 PHP 编程人员为什么有如此的吸引力。首先,它使用任何自视甚高的设计模式专家都很钦佩的严格的模型-视图-控制器体系结构;这可以解释它为什么吸引了大量 J2EE 开发人员。其次,使用 Rails 可以轻松地构建基本系统;这对 PHP 开发人员具有吸引力。
然而,从数据库的角度来说,Rails 还是有一些非常大的局限性。Rails 对您的数据库布局和应用程序需求做出了许多假定。例如,Rails 假定所有表都使用单一的非组合式主键。需通过 Rails 插件支持组合式主键。此外,Rails 支持多数据库而且可以对其间事务进行协调;Rails 不支持两阶段提交。
本文章的目的不在于对 Rails 进行赞扬或批评,而只是对该技术的介绍。其中包含表扬也包含有批评。有时批评可能看起来过重了(尤其对于那些 Rails 的热爱者来说),但是请不要将 Rails 看得神乎其神。使用任何 Web 应用框架都是需要技巧的,无论是 J2EE、ASP.NET 还是 PHP。从长远来看,使用 Rails 可能比使用许多其他 Web 应用程序开发平台更高效,但是也需要假以时日来学习其中的技巧。
Ruby 是什么?Rails 是什么?
Ruby 是一种动态编程语言,在很多方面和 Perl、Python 以及 Smalltalk 相似,但也有自己的特点。Java 和 PHP 编程人员似乎可以非常轻松地学会该语言,而且他们是 Ruby 的最忠实的拥护者。但是其他人也为该语言所吸引;这其中还包括著名的 Microsoft 王国中最资深的专家之一 Don Box。
Ruby 并不是新生事物;它创建于 1993 年,时间比 1995 年发布的 Java 或 PHP 都要久。当时 Ruby 语言虽已成熟,但不如某些其他语言受欢迎。因此,Ruby 编程语言的周边体系并不像 Java、PHP 或 Perl 那样丰富。因此,您能找到的有关该语言的框架、信息库、书籍、Web 站点、网志和其他资源也相对较少。
David Heinemeier Hanson 提出了 Rails 框架(Ruby 历史上最受欢迎的应用程序)后,Ruby 社区的软弱无力的市场表现近期发生了变化。Rails 将 Ruby 编程语言扩展为域特定的语言,特别适合 Web 开发。它还使用了另一种语言扩展 ActiveRecord,使 Ruby 具有对象关系持久性。除了不支持组合主键和两阶段提交外,使用 Rails 的最大障碍是您需要学习一种新的编程语言这对大多数人来说都是不可忽视的问题;学习新语言是一项有趣的但令人望而却步的任务。
然而,如果您希望学习更多语言,我想没有别的语言比 Ruby 更值得推荐了。Ruby 代表着 10 年无商业利益篡改开发的巅峰。因此,Ruby 是受欢迎的语言,而且在很多情况下比 Java、C、或 Microsoft .NET 语言更高效。(可能要排除 Microsoft .NET 环境的 Python 语言端口 IronPython。Python,像 Ruby 一样,是一种动态高效的编程语言。)
Rails 的用途
Rails 的设计初衷是创建使用关系数据库后端的动态 Web 站点。它将关键词添加到 Ruby 编程语言中,从而使 Web 应用程序更易于配置。此外,它还可以从现有的数据库模式中自动生成完整(如果有些粗略)的 Web 应用程序。后者既是 Ruby 的最大优点也是它的致命缺点。Rails 对数据库模式命名惯例做出了假设,如遵循这些假设,只需执行一个命令即可生成一个基础 Web 站点。但是要完成此操作需要额外的配置,在一些情况下,则是根本无法实现的。您还可能发现 Rails 期望的每一个数据库惯例都可以被覆盖,但是需要做的覆盖越多,平台的效率就越低。这就是为什么 Rails 在使用新数据库开发“绿色领域”应用程序时非常强大的原因。不幸的是,它在处理原有系统时并不是一个很好的解决方案。
要展示 Rails 在绿色领域应用程序开发中的作用,最好的方法是通过示例。如果您已经安装了 Oracle 数据库,并可以在其中创建新的数据库和表,那么创建一个完整的 Web 应用程序只需不到 15 分钟的时间。在这种情况下,我们将使用 Ruby of Rails 来构建一个产品目录。