我最近学习了 scala 并即将开始工作/学习 Lift 框架。浏览功能并开始使用该框架,我看到了该框架的一些惊人功能,包括反向 ajax 和 Comet。在我的早期经验中,我对从未扩展的反向 ajax 的体验非常糟糕。如果我为任何开发选择提升框架,这就是原因。我的问题是技术和产品有多成熟,在 tomcat 上使用 lift 的可扩展性有多大?与 servlet spec 3.0 相比,哪个更好,等待 servlet spec 3.0 还是开始使用 lift?
问问题
1576 次
1 回答
13
反向 AJAX是Comet。它们只是同一事物的两个不同名称。至于你问题的根源......
Lift 的 Comet 支持的可扩展性很大程度上取决于 servlet 容器。你真的需要一个原生支持延续的容器。码头是我熟悉的,但我很确定还有其他的。通过在容器级别获得持续支持,您可以避免锁定每个客户端的线程,这是 Comet 的大多数可伸缩性问题的根源。
在可扩展性的其他领域,LiftCometActor
是围绕具有活动长轮询的单个客户端的通用抽象。因为这个抽象是一个actor,所以它可以在现有的actor框架中处理(Scala stdlib for Lift 1.0.x,或 Lift actor 2.0)。这也避免了线程扩展的问题,并确保挂起的更新将以有序的方式排队。
简而言之,Lift 的 Comet 支持与 Comet 一样可扩展。当然,有与该技术相关的内在开销。您将永远无法避免为每个客户端提交至少一个套接字。然而,Lift(连同一个支持 continuations 的容器)能够开箱即用地减轻任何非必要的开销。
于 2010-02-15T04:58:38.377 回答