Node.js和Twisted的用例有哪些区别?

66
假设一组开发人员在编写JavaScript与Python及其框架Twisted方面有同等的熟练程度,那么在什么情况下使用Node.js会比Twisted更为适宜(反之亦然)?

截至2013年,这两个框架的当前状态是什么?似乎更多的人使用Node.js而不是Twisted。如果我错了,请纠正我。 - Nipuna
做出明智的决定并开始行动。- 当您通过了一些问题后,您会更清楚地知道如何做出更好的决策。也许可以更换工具并重新开始。 - Robert Siemer
PyPy内置了Stackless Python(也称为协程),这些内容已经集成到Python语言中,并在更深层次上实现,因此相比Twisted提供更多的舒适性和更好的性能。但是Twisted也可以与之集成,并且可以使其看起来更像基于常规协程的Python代码。 - Erik Kaplun
2个回答

80

Twisted更为成熟--它已经存在很长时间了,并且拥有许多高级功能(最复杂的协议实现,反应器与其他事件循环的大量集成等),足以使您眼花缭乱。

据说Node.js更快(我自己没有测量过),如果不需要额外的高级功能,则可能更简单易用(就像Python世界中的Tornado一样 - 再次强调,我从未测量过相对性能)。

因此,如果我需要任何额外功能或想通过使用更成熟的包来感觉更加稳定,我绝对会使用Twisted。如果这些考虑因素不适用,但顶级性能是项目的关键目标,则我会在Twisted、Node.js和Tornado中编写一个简单的基准测试(但要代表实际项目中至少一个或两个关键性能需求情况),并进行仔细的测量,然后再做出总体决策。Python的“额外功能”(第三方扩展和标准库)与服务器端Javascript相比也更加丰富,如果项目需要任何此类额外功能,则这可能是一个关键因素。

最后,如果对于特定的应用场景而言,这些问题都无关紧要,则开发团队可以就三个候选方案(Twisted、Node.js、Tornado)在简单易用性和熟悉程度方面进行投票 - 任何一个都可能很好,最好选择大多数团队成员最为熟悉的!


很棒的回答,+1 建议 OP 查看 Twisted(可能更适合他们的需求)。 - mikemaccana
3
一个节点未必更快的例子(特别是如果你使用pypy)http://mrjoes.github.com/2011/12/15/sockjs-bench.html,还有其他更可信的基准测试,但我认为如果使用PyPy,很多潜在的性能提升将会消失。 - fijal
7
截至2012年,Node.js也相当成熟 :P - salmatron
1
node.js缺少哪些“花里胡哨”的功能? - B T

7
截至2012年,Node.js已被证明是一款快速、可伸缩、成熟且广泛使用的平台。Node.js创始人Ryan Dahl曾说过:
“如今,全球范围内许多初创企业和知名公司,包括Voxer、Uber、沃尔玛和微软等,都在使用Node.js。可以说,每天都有数十亿次请求通过Node.js进行处理。随着越来越多的人参与到这个项目中,提供的第三方模块和扩展也在不断增加和提高质量。虽然我曾经对将其推荐给关键任务应用保持保留态度,但现在我非常愿意将Node.js推荐给即使是最苛刻的服务器系统。”
更正式地说,Node.js的优势可以分为以下几类:
- 众多的社区支持:可以说,在如此短的时间内,没有其他平台能获得如此多的社区支持。它在GitHub上有成百上千的贡献者和关注者,并被雅虎!(Manhattan Project)、eBay、LinkedIn、Microsoft和Voxer等巨头使用。
- NPM:尽管核心相对较小,但Node.js有大量的可用包可以扩展其功能到任何您可能需要的领域!所有这些都是自动化的,并且正在积极地开发和扩展,就像PyPI(pip)。
- 可伸缩性和速度:Node.js的架构和单线程特性允许高度的可伸缩性和速度。特别是在0.8版本之后,Node.js的速度真正变得更快了(参见基准测试),这可以通过许多使用Node.js的大型企业证实。它的V8核心也因当前的浏览器战争而不断改进。
- JavaScript:Node.js的核心语言JavaScript非常适合用于服务器端应用,尤其是lambda函数、动态对象和简易JSON序列化等JS亮点,这些特性确实非常适合那些需要速度和可伸缩性的情况。(Python也有所有这些特性,但JS更加强大)
- 部署:由于其广泛使用,很多真正优秀的网站提供了易于使用和强大的Node.js部署工具,包括Heroku、Joyent、Cloud9等。
因此,如果没有使用它的限制(如现有代码、服务器、团队能力等),则建议任何新的协作网络项目使用Node.js以获得更快的速度和可伸缩性。

30
听起来你不知道Twisted的成熟程度。除了“JavaScript”这一点(这是列表中最牵强的部分),你所强调的Node的所有优点实际上都不是排他性的,也适用于Twisted。 - Jean-Paul Calderone
4
@Jean-PaulCalderone说得没错。右侧的标签统计支持了他的第一点:node.js × 11239,twisted × 1021。 - UpTheCreek
5
如果你认为规模是衡量社群的唯一标准,那没错。 - Jean-Paul Calderone
4
尺寸并不是唯一的标准,但它可能是最重要的。 - Clint
4
问题数量增多并不意味着它使用率较低或社区规模较小。可以以文档为例来思考。 - vonPetrushev
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接