
Ruby的流行导致了许多Web框架的诞生,例如Ruby on Rails,Merb和Camping. 最近,新的Web框架Waves正式发布,其某些功能吸引了Ruby开发人员尝试.
Waves是Ruby on Rails之类的MVC框架. 它使用一种称为请求Lambdas的技术,该技术由规则和代码块组成以形成映射. 当规则与请求匹配时,将运行相应的代码块. 这只是Waves的独特功能之一.
Waves的其他引人入胜的功能包括:
InfoQ很幸运能与Waves的创始人Dan Yoder讨论这个框架.
Robert Bazinet(RB): 什么是Waves?
Dan Yoder(DY): Waves是基于MIT认证的下一代Web应用程序框架. 基本上,它实现了Rails所没有的功能,这使它成为“下一代”. 其中一些是非常基本的,包括线程安全性和节省更多资源. 某些功能利用JITR(及时资源)等技术将DRY提升到一个更高的水平,从而使您可以轻松地在应用程序之间重用MVC代码,甚至重用整个应用程序. Waves更发达,更容易扩展. 例如,您可以轻松地编写自己的视图类来更改视图选择和呈现的方法,或者切换到该模型的另一个平台(默认的Ruby Sequel). 基本思想与使用Rails的Ruby来实现MVC Web应用程序相同,但是它基于我多年使用Rails的经验,这使我可以创建一个更强大的框架.

RB: 为什么创建它?
DY: 简而言之,露营.
更详细,主要是因为在编写Rails应用程序时遇到了一些难以克服的限制. Waves实际上只是一开始的扩展的集合. 然后,我不知道什么时候可以发布它们,因为实际上我发现自己在Rails之上重建了一个新框架. 与普通插件相比,它更现代. 我还发现,我对Rails代码的修改本质上改变了框架的预期行为,因此无需参与其他Rails部件. 一个明显的例子是我最初实现的即时资源: ActiveDependency覆盖了对象和模块中的const_missing方法来处理代码重载. 我想修改此行为,因此必须重写Rails方法. 我不喜欢这种解决方案,因为我根本不需要触摸对象或模块,但是我只能这样做,因为Rails可以做到这一点.
直到有一天我发现了露营. 我不记得这个原因,我只记得我对它的代码简单感到惊讶. 有一种启蒙的感觉. 如果仅仅是用我想要的功能创建一个新框架,那么就不需要围绕Rails展开工作. 这是一个艰难的决定,因为我最初的计划是为Rails编写插件,这比编写框架要容易得多. 而且,我需要重写很多代码. 这是非常痛苦的. 但最终,我认为代码将变得更精简,更易于扩展和使用. DuckTyped.com的Ben向我推荐了Rack. 当时我正在编写代码,所以我采用了它. 同时,DataMapper和Sequel也逐渐成熟. 这些使创建一个功能全面的框架成为可能,该框架可以完全专注于Web应用程序的MVC部分.
RB: Waves框架开发了多长时间了?
DY: 我只是在2007年8月才开始开发Waves. 首个beta版本是在今年2月初. 因此ruby web框架,这是一个非常年轻的框架,一切都刚刚开始. 我是一名老派学者: Beta对我来说意味着“对我来说,我实际上还不能付诸实践”.

RB: 对于开发人员,他们如何更好地尝试通过Waves开发应用程序?
DY: 有一个教学视频可能是最好的起点. 您可以遵循这样的指南来发挥您的想象力. 当然,RDocs也是一个好方法. 还有一个支持论坛,我将尝试在几个小时内(最多一天)回答任何问题. 总之,您可以从教程开始使用Waves,注意RDocs和论坛,如果遇到问题,可以去论坛提问.
RB: Waves是一个类似Rails的MVC框架. Waves与Rails有何不同?
DY: 非常不同. 正如我所说的,它是“下一代”,是Rails的演进. 它是线程安全的,并节省了资源. 它更加关注和重用,包括应用程序以及它们之间的重用: JITR或模块封装的应用程序等. 路由等效于Request Lambdas,它非常强大,可以为MVC增添很多. 它们可以使您在一处加强所有控制器的安全性. 该模型可以绑定到所需的任何ORM框架,但是如果不需要它,则不必为使用该模型而付出内存和性能开销. 例如,我有一个基于Waves的CMS,它使用文件存储,因此不需要ORM. Waves进行了顶级尝试,并且基本上没有与Waves中的控制器耦合. 以布局为例,它是在尝试本身而不是在控制器中制定的. 同样,您可以在尝试中绑定布局或引入控制器方法. 另一个主要区别是Waves支持真正的代码重载. 这意味着可以在重新加载之前自动卸载代码,从而不会保留最后一次加载的输出. 这种好处不仅使调试更加容易,而且还允许您通过LiveConsole对产品代码进行热修复. 这是说明差异的一个很好的例子. 确实是Ruby下的MVC革命.
RB: 哪种类型的网站基于Waves?
DY: 我有一个已发布的CMS,它为许多站点提供支持,当然包括Ruby Waves站点RubyWaves.com本身. 我还有一个通过Waves实现的主题构建应用程序. 它们最初在Rails上运行,现在都在Waves上运行. 它们的内存占用量仅为以前的三分之一至四分之一,并且代码少于Rails. 他们已经稳定运行了几个星期. 我对此感到非常鼓舞. 我希望看到其他一些与数据相关的应用程序. 希望很快到这里.

RB: Waves是开源的吗?如果是,开发人员如何参与?
DY: 波是基于MIT证书的,可以免费获得. 我也非常希望核心参与者能够加入以帮助Waves向前迈进. 参与其中的第一步是在支持论坛中找到我,让我知道您要从事哪种工作. 目前非常欢迎参加. 现在有很多事情要做,而且我认为没有社区就不可能开发Waves或任何其他重要框架,并且成功也不会. Waves站在Rack,Sequel和Markaby的肩膀上,并从中获益匪浅. 这些出色的开源产品简化了许多工作. 这使Waves非常专注于提供MVC绑定. 但是仍然有很多机会可以使它变得更好.
RB: 波浪是线程安全的,您能解释一下吗?
DY: 波支持每个请求一个线程的模型. 在处理请求时引入信号量,以使不同的线程不会互相影响. 因为Waves支持群集并使用Rack. 这不是唯一受支持的模型,但我认为它非常重要,它为开发人员提供了选择的机会,尤其是当Ruby 1.9将支持本机操作系统线程时. 当前,线程在Ruby社区中不是很流行,但是一旦支持本机线程,我得出结论,它们将返回,因为它们运行得更快. 好处是可以通过增加应用程序运行的实例数来提高性能,尤其是在具有并行体系结构和良好线程支持的计算机上. 波浪可以使这一过程变得简单.
RB: 鉴于Ruby 1.9已经支持“本机”线程,您如何看待Ruby 1.9?
DY: 我很清楚Waves目前不支持1.9. 但是,这是Waves前进的主要目标. 不仅因为1.9具有Waves可以享受的太多有趣的功能,而且显然由于线程安全性,Waves可以在1.9上实现性能上的飞跃. 这就是为什么我不必太担心性能的原因之一,但是,例如Merb社区确实如此. 此外,在下一版本中,您将能够简化Waves以获得更好的性能. 但是我认为当我们转向1.9时,它将变得越来越有趣.

RB: 您对JRuby支持的态度如何? Waves使用的续集不支持JRuby 100%,对吧?
DY: 可能在路线图上获得1.9支持后排名,但我愿意接受建议. 我要指出,Waves不支持Sequel,它只是新应用程序的默认设置. 但是现在我比功能更关注功能,因此JRuby的优先级并不高. 我真的很喜欢Sequel中的功能,这个例子非常好. 希望在将Waves的关键库移至1.9之后,JRuby将成为议事日程. 同样,Ruby社区的反馈将改变这一点,特别是如果有人愿意做出贡献的话. (提示,提示!)
RB: 您能告诉我们一些有关Waves计划的细节吗?
DY: 好的. 首先,我收到了社区的许多建议,包括增加了对Tenjin,Haml和Sass模板库的支持,以及即将实现的轻量级Web服务器. 此外,还有一个针对群集支持的错误修复. 我还计划增加对当前缺少的后端会话以及增强的Request Lambdas等的支持.
对于Waves,需要付出很多努力来增强Schema反射功能. 当前,这是Sequel和DataMapper的弱点. 我希望Waves可以有一些ORM独立模式的概念,因为我认为反射是扩展JIT尝试的关键.
我需要指出默认的测试方法是什么. 我已经使用了很多方法并且喜欢RSpec,但是我很犹豫将其添加到默认的Waves应用程序中,因为Ruby社区中还有许多其他测试选项. 选择Sequel的决定要简单得多,因为它支持迁移和Ruby表达式作为查询,我认为这是很酷的功能. 但是我对使用RSpec作为默认值没有信心,因此也欢迎社区对此问题提供反馈.
我也开始从事表演工作. 最初,我进行了一些基准测试和性能测试ruby web框架,以了解问题所在. 确实,这里有很多很多有趣的事情要做. 我认为Waves已经很酷了,但是这些很酷的部分还有很多工作要做. 这只是冰山一角. 我维护了路线图中的单位清单,该清单仍处于初期阶段. 地址在. 如果您有兴趣,可以在这里获取更多详细信息.
RB: Dan,感谢您抽出宝贵时间与我们讨论Waves.
Waves官方网站提供了用于创建博客的多章教程. 我曾经尝试安装Waves并按照该教程进行操作,它的运行效果与上面所说的一样,并且创建了一个非常不错的应用程序. 教程之后还有一个视频教程. 可以在Waves网站上找到有关Waves的其他信息.
查看原始英文文本: 乘以新的Ruby Web Framework的浪潮
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-163930-1.html
是哪个银行的
我更新后下载App无法下载
你是厂家派来的逗比吗