【IT168 技术文章】
Oracle帮您准确洞察各个物流环节
Ruby on Rails 为现实世界的面向服务架构(SOA)做好准备了吗?
答案应该是肯定的。Tate负责RESTful SOA项目的开发工作,该项目使用Ruby on Rails进行开发。不过,作为Ruby的早期倡导者,Tate表示,虽然Ruby具备有利于RESTful项目开发工作的所有动态语言具备的功能,但它也存在一个明显的不足。
“只有你部署了它以后并且逐步扩展,Ruby才能发挥作用,”Tate说。
这就是Tate为什么同Ezra Zygmuntowicz(托管服务公司EngineYard.com创始人合首席架构师)以及Clinton Begin(软件顾问、以SQL为中心的Java框架iBATIS的创始人)合作撰写了一本新书---《Rails应用部署指南》。
这本书的用意是帮助开发人员学会如何成功部署Rails应用,并使它们可以按照比例扩展和性能可调谐。这本书还向读者介绍如何在RailsNginxMongrel集群上安装应用并实现高可扩展性。Tade说。
“我们设立虚拟箱(virtualized boxes)而不是规则的专用箱来分开你的架构组件,” Zygmuntowicz解释说。“所以你的数据库层有单独的虚拟机,应用层有单独的虚拟机,Web服务器曾也有单独的虚拟机。所以,这些Linux虚拟机是不会与很多其它服务混合运行在一起的。”
让每一个用户在其自己的虚拟机上运行所需的服务,有利于规模调整和性能调节,EngineYard架构师说。“它可以让你用一种更好更高效的方式调解你的应用服务的性能,因为你架构的每一层都是可以单独扩展的,”他解释说。
Begin说,这本书将有助于开发人员现实世界中逐渐学会部署Rails应用。但是,Begin在之前所写的一本关于iBATIS的书中,他指出,所有的有关程序编码的书籍都有其局限性,很大一部分原因是技术的发展太迅速了,大部分的编程手册在它们印刷的时候就已经过期了。
“我所希望我的书能够教会开发人员如何看待Rails部署以及弄明白为何它这样部署,”Begin说。 “仔细研究过这本书的开发人员都应该可以部署Rails,就像我们在书中做得那样。”
古语说得好:“授之以鱼,不如授之以渔。” Begin表示,开发人员应该讲这本书看作为一个如何给这种轻型系统建立架构的起点。
“我希望开发人员在阅读完这本书以后能够自我反思,”Begin说。“牢记我们在书中教给大家的部署步骤和注意事项,并把这些知识应用到实际部署中。唯一的区别就是实际的部署中使用的服务器可能不会是书中提到的Mongrel,很多开发人员在实际部署中可能会用到Thin服务器。”
Begin表示,即使在书中没有提到Thin,他也相信阅读过此书的开发人员将对Rails部署有基本的了解,以便能够使用他们选择的应用服务器工作。
“我希望他们能够阅读这本书,但是不要照搬书上的内容,”Begin说。“我希望开发人员能够掌握我们书中传授的做法,并能创造出适合于他们自己需要的新的部署方法。我们不会试图推行一个一劳永逸的方法。”
如果开发人员可以学会有效地为企业SOA部署Ruby on Rails应用,他们就可以利用作者提到的那些功能,这要比使用Java或者C#有用得多。
对于那些计划采用RESTful方法的人来说,Ruby on Rails很有优势,Tate说。
“Rails的贡献之一就是它具备成为一个非常有效率的REST平台的能力,”Tates解释说。“REST能自动从Rails资源服务器取得更新并自动扩展,而其它平台则需要你在空闲时手动输入脚本代码执行这项工作。从这个角度来看,这个平台的优势是你可以有一个技能出理HTML请求还能处理XML请求。在你开始创建额外应用和定制应用时,这个平台就已经可以使用了。”
虽然在工作期间,Begin广泛使用Java语言,但他仍然坚持认为Ruby on Rails是实际部署SOA的最好选择。
“原因在于,我认为动态语言,不仅仅是Ruby而是大多数情况下,都很重要,因为目前的Java、C #或其它任何静态编译语言,它们的问题是在对Web服务进行编码的时候会产生大量的代码,”Begin说。“我有一个计算税款的Web服务。对于一个Web来说,它所产生的代码就超过了50000行---2.4兆字节的Java代码。这仅仅是一个Web服务,而我们有 20个类似的Web服务。我甚至都没有启动我的应用。”
虽然Begin没有明确说Ruby on Rails将会使开发人员的效率提高十倍,但根据他的使用Java的经验,Rails具有很多内在的优势,其中一些是不能量化的,就像Begin所说的“Rails是一个令人感到愉快的工作平台。”
根据自己使用Rails的体验,Begin说:“Rails平台简单易用,我认为使用它你将更具生产力。你不需要花时间在你的内部环境中编写同Web服务通讯的SOA层和适配器,你要做得实花更多时间来满足客户的需要,但不是技术需要。这就是我认为Rails作为最终产品的优势所在。”
注:什么是Ruby on Rails?
Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架。
当然了,所有的 web 框架都有同样的目标。是什么使得 Rails 如此不同呢?我们可以通过几个途径来回答这个问题。
第一是看架构。在过去的时间里,许多开发者在严谨的 web 应用程序上使用 MVC 架构。他们发现 MVC 架构可以使他们的程序变得更清晰在 java 中象 Tapestry 和 Struts 这些框架都是基于 MVC 。 Rails 也是一个 MVC 框架。当你使用 Rrails 进行开发,应用程序的所有代码以一种标准方式互相作用。在开始开发之前,整个应用程序的骨架已经搭好的。
回答这个问题的第二个是看编程语言。 Rails 程序是使用 Ruby 编写的,它是一门现代,面向对象的脚本语言。 Ruby 简洁,不难理解。它可以让你快速地用代码自然 , 清晰表达想法。让你的程序能很简单被编写并且在几个月后还能很容易读懂。