gpt4 book ai didi

scala - 反向 AJAX( cometd )和 Spring MVC 与 Scala/LIFT?

转载 作者:行者123 更新时间:2023-12-03 14:15:39 25 4
gpt4 key购买 nike

有一个demo by IBM这显示了在 DWR 2 中使用 Reverse AJAX 是多么容易。另一方面,Scala/LIFT 带有内置的 Reverse AJAX 功能。

  • 问题:如果这适用于 Spring MVC,有什么经验吗?
  • 问题:如果您从头开始,更喜欢 Scala/LIFT 而不是 DWR/Spring MVC
  • 的优缺点是什么?
  • 问题:在 Scala/LIFT 中,安全处理是否与 Spring Security 中一样复杂?
  • 最佳答案

    在对多种不同技术进行评估后,Novell 选择了 Lift 的 Comet 架构来为其 Pulse 产品提供动力。

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

    Lift 将长轮询与 session 管理集成在一起,因此如果在长轮询期间请求进入相同的 URL 会导致连接饥饿,则终止长轮询以避免连接饥饿(某些浏览器每个命名服务器最多有 2 个 HTTP 连接,其他人最多有 6 个)。 Lift 还支持用于长轮询请求的 DNS 通配符服务器,这样浏览器中的每个选项卡都可以针对不同的 DNS 通配符服务器进行长轮询。这避免了连接饥饿问题。

    Lift 动态检测 Servlet 正在运行的容器以及 Jetty 6 和 7 以及(很快)Glassfish,Lift 将使用平台的“延续”实现来避免在长轮询期间使用线程。

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

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

    Novell 从零开始,选择 Lift 来为 Pulse 提供动力是有充分理由的。

    在安全性方面,Lift 胜过 Spring + Spring Security。见 http://www.mail-archive.com/liftweb@googlegroups.com/msg13020.html

    基本上,Lift 的安全性已融入您的应用程序。默认情况下,Lift 应用程序可以抵抗常见问题(跨站点脚本、重放攻击、跨站点请求伪造)。默认情况下,Lift 应用程序可防止参数篡改。 Lift 的站点地图定义了站点导航和访问控制规则。这意味着您永远不会拥有无法点击的链接。您不需要有一个必须独立于您的应用程序配置的外部过滤器(例如 Spring Security)(哎呀......移动了一个页面,但忘记确保 Spring Security XML 文件已更新。)

    哦...如果您不想使用模板语言,这里有一个完整的 Lift Comet 聊天组件:

    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"/>

    关于scala - 反向 AJAX( cometd )和 Spring MVC 与 Scala/LIFT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3106054/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com