假设一组开发人员在编写JavaScript与Python及其框架Twisted方面有同等的熟练程度,那么在什么情况下使用Node.js会比Twisted更为适宜(反之亦然)?
Twisted更为成熟--它已经存在很长时间了,并且拥有许多高级功能(最复杂的协议实现,反应器与其他事件循环的大量集成等),足以使您眼花缭乱。
据说Node.js更快(我自己没有测量过),如果不需要额外的高级功能,则可能更简单易用(就像Python世界中的Tornado一样 - 再次强调,我从未测量过相对性能)。
因此,如果我需要任何额外功能或想通过使用更成熟的包来感觉更加稳定,我绝对会使用Twisted。如果这些考虑因素不适用,但顶级性能是项目的关键目标,则我会在Twisted、Node.js和Tornado中编写一个简单的基准测试(但要代表实际项目中至少一个或两个关键性能需求情况),并进行仔细的测量,然后再做出总体决策。Python的“额外功能”(第三方扩展和标准库)与服务器端Javascript相比也更加丰富,如果项目需要任何此类额外功能,则这可能是一个关键因素。
最后,如果对于特定的应用场景而言,这些问题都无关紧要,则开发团队可以就三个候选方案(Twisted、Node.js、Tornado)在简单易用性和熟悉程度方面进行投票 - 任何一个都可能很好,最好选择大多数团队成员最为熟悉的!