Pra*_*oya 12 eventmachine node.js ruby-on-rails-3
在Node.js问世之后,普及编程就是一件事.但是,Ruby确实有EventMachine支持编写事件代码.
在rails中支持事件的要求是:
1.运行反应器的偶数服务器(薄,彩虹)
2.光纤(Ruby 1.9.3),以便更容易编写事件代码,否则我们可以使用线程.
3.所有宝石都会事件化(例如mysql2).
Nodejs展示了即兴编程的明显优势.那么为什么rails社区不采用eventmachine?我认为rails不能完全移植到eventmachine的原因之一是因为依赖于可能没有被触发的底层gem.但有人知道是否有计划朝这个方向迈进?
Rails可以做的NodeJS做什么,但开始的NodeJS出通过对所有库厂商崇尚事件触发程序,所以按照惯例,大多数的依赖,你在添加节点的package.json,你知道,这将是事件触发,将与工作的NodeJS出盒子.
Chr*_*ald 15
最大的原因是Rails生态系统不是为事件IO构建的,并且在您的应用程序中引入单个非事件IO可以消除这些优势.在Ruby(和Rails)编写事件代码是非常可能的,但它不一定是直截了当的,因为当宝石执行或不执行事件IO时并不总是很清楚,并且开发人员需要花费大量时间追逐应用程序可能阻塞的位置.相比之下,Node的创建具有IO永远不应该是同步的隐含理想,并且它的整个生态系统已经从理想中流出,这意味着开发人员不必担心他们的IO操作是否会同步或不; 默认情况下,它们是异步的.
此外,即使您受IO限制,事件Web应用程序也非常有用.如果您的应用程序受CPU限制,或正在进行繁重的同步CPU工作,那么无论如何,一个事件模型可能不是正确的方法.Ruby可能需要大量的CPU,主要是由于语言的元编程构造和垃圾收集器(它应该在Ruby 2.1中大幅改进!),这可能使它不如Node更适合于编程.
Rails有许多可用的并发模型 - 分叉,抢占式线程和事件 - 并且开发人员可以选择最适合其应用程序域的模型.分叉是默认的,因为它很容易,不需要任何特殊考虑(只要你在POSIX系统上部署!),并且在创建Rails时Ruby没有系统线程.现在,使用Ruby 1.9+(系统线程,GIL)和JRuby(没有GIL!),线程代码非常易于部署.Ruby 2.0带来了COW友好的垃圾收集器,这意味着分叉也比以前更有效.
在一天结束时,事件代码不是默认代码,因为它需要开发人员的更多工作,对于许多人来说,默认分叉模型已经足够好了.如果不是这样,开发人员可以选择线程或事件代码,最适合他们的基础架构和应用程序域.
归档时间: |
|
查看次数: |
532 次 |
最近记录: |