反向AJAX(Comet)和Spring MVC vs. Scala / LIFT?

有一个demo by IBM显示了如何轻松地将反向AJAX用于DWR 2.另一方面,Scala / LIFT具有内置的反向AJAX功能。

>问题:任何经验,如果这适用于Spring MVC?
>问题:如果你从头开始,那么喜欢Scala / LIFT的DWR / Spring MVC的优缺点是什么
>问题:在Scala / LIFT中,安全处理与Spring Security中一样复杂?

电梯的彗星架构由Novell选择,在他们评估了许多不同的技术后,为其Pulse产品供电。

Lift的Comet实现使用单个HTTP连接来轮询页面上任意数量的组件的更改。每个组件都有一个版本号。长调查包括版本号和组件GUID。在服务器端,侦听器附加到长轮询请求中列出的所有GUID。如果任何组件具有较高的版本号(或长时间轮询期间的版本号增加),则会将三角形(描述每个版本的更改的一组JavaScript)发送到客户端。应用三角形,并将客户端上的版本号设置为更改集的最高版本号。

Lift将长轮询与会话管理集成,以便在长时间轮询中引起连接不足的请求进入相同的URL时,长时间轮询终止以避免连接不足(某些浏览器每个命名服务器最多有2个HTTP连接,其他人最多6)。 Lift还支持DNS漫游服务器进行长轮询请求,以便浏览器中的每个选项卡可以对不同的DNS通配符服务器进行长时间轮询。这样可以避免连接饥饿问题。

提升可以动态地检测Servlet正在运行的容器,并且在Jetty 6& 7和(很快)Glassfish,Lift将使用平台的“延续”实现,以避免在长时间投票期间使用线程。

Lift的JavaScript可以坐在jQuery和YUI的顶部(也可以坐在Prototype / Scriptaculous之上)。实际的轮询代码包括连接失败的回退和其他处理瞬态连接失败的“优雅”方式。

我看过Atmosphere,CometD,Akka(所有基于JVM的Comet技术)。没有(当时我评估它们)支持每页多个组件或连接饥饿避免。

Novell从头开始,选择了Lift来驱动Pulse,这是一个很好的理由。

在安全性方面,Lift将弹簧弹簧安全握手。见http://www.mail-archive.com/liftweb@googlegroups.com/msg13020.html

基本上,电梯的安全性被烘烤到您的应用程序中。默认情况下,电梯应用程序可以抵御常见问题(跨站点脚本,重播攻击,跨站点请求伪造)。默认情况下,电梯应用程序可以抵御参数篡改。 Lift的sitemap定义了站点导航和访问控制规则。这意味着你从来没有一个人无法点击的链接。您不需要具有外部过滤器(例如Spring Security),您必须独立于您的应用程序进行配置(whoops …移动页面,但忘记确保更新了Spring Security XML文件)。

哦,如果你不想使用模板语言,这是一个完整的电梯彗星聊天组件:

class Chat extends CometActor with CometListener {
  private var msgs: List[String] = Nil

  def registerWith = ChatServer

  override def lowPriority = {
    case m: List[String] => msgs = m; reRender(false)
  }

  def render = {
    <div>
    <ul>
    {
      msgs.reverse.map(m => <li>{m}</li>)
    }
    </ul>
    <lift:form>
    {
      SHtml.text("", s => ChatServer ! s)
    }
    <input type="submit" value="Chat"/>
    </lift:form>
    </div>
  }
}

并将其插入到页面中:< lift:comet type =“Chat”/>

http://stackoverflow.com/questions/3106054/reverse-ajax-comet-and-spring-mvc-vs-scala-lift

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:反向AJAX(Comet)和Spring MVC vs. Scala / LIFT?