写点什么

Derek Wischusen 论述集成 Flex、BlazeDS 和 Scala/Lift

  • 2008-02-13
  • 本文字数:1630 字

    阅读完需:约 5 分钟

去年 12 月 Adobe 宣布 LiveCycle Data Services 即将开源,叫做 BlazeDS 。BlazeDS 是一个开发于 JEE 平台之上的服务器端技术。它为那些基于 Flex 或 AIR 的 RIA 应用程序将其内容以流的方式传送及服务器端推送提供了方便。Flex on Rails 的 Derek Wichusen撰写了一篇关于 Flex、BlazeDS 和 Scala/Lift 集成的文章

关于 Adobe 的宣告,Wischusen 这样写道:

尽管这一宣告确实是受欢迎的消息,仍还有许多人考虑到自身因素对此消息并不感兴趣:“这很好,但是我不用 Java。”嗯,说它是好消息,是因为 BlazeDS 使用了 Java 平台并不就意味着你必须使用 Java 语言才能利用它的优势。实际上,Java 平台支持好几门语言,包括 Groovy Python Ruby 以及 Scala 。当然,还有 ColdFusion 。理论上,这些语言中任一门都可以很好的与 BlazeDS 直接集成。

Wischusen 继续解释了他为什么使用 Scala:

嗯,因为最近我决定扩展我的编程语言视野,我发现 Scala 既非常有趣也非常强大。它是面向对象的而且是函数式的语言,它有 mixin 类型的成分,它也有用于处理并发特性的 Erlang 式样的 Actors,还有很多很多。最后,可能是最合我意的,就是Scala 有一个卓越的Web 应用程序框架,叫做 Lift

概括来说,Wischusen 集成项目使用了最新版的 JDK 1.5+、 Scala Eclipse Eclipse 的 Scala 插件 Maven BlazeDS Flex 3 。在文章中,Wischusen 按照一步步的指示来动手创建一个 Lift 项目,以此开始编程。接着他使用 Maven 创建了一个 Eclipse 项目。一 旦所创建的 Lift 项目被引入到 Eclipse 项目中,BlazeDS 的 jar 文件就被添加进了构建路径。在展示了如何建立开发环境后, Wischusen 讨论了 Lift 是如何处理 HTTP 请求的:

Lift 是一个视图优先(view first)框架。这意味着默认情况下,Lift 将试图用视图(view)匹配一个 HTTP 请求。如果它找到了一个视图,它将处理该请求,并展现为 HTML。这里有更多关于 Lift 如何处理 HTTP 请求的信息。

在这一项目中,视图用的是 Flex,所以 Lift 没被用来当作 UI 的一部分。Lift 仅被配置用来处理 Web 服务。Wischusen 给出了 Scala 编程的细节步骤及代码样例。他详细解释了 Scala Actor

当 Notifier Actor 被启动(稍候你将看到这发生在哪儿)时,act 方法就会被调用。act 方法里第一件事是调用 ActorPing.schedule 助手方法。该 方法本质上是说,我想在 500 毫秒内发送通知消息给这个 Actor。接下来进入到循坏,这里只是简单的创建一个循环并有一个 case 语句用来处理到来的消 息。因此,当收到一个通知或一个“停止”消息时,所有用于这一情况的代码将被执行。

在创建服务器端应用程序之后,Wischusen 编写了一个 Flex 应用:

这里我们已经创建了一个应用程序,它有一个十分简单的 UI,由两个按钮和一个文本域组成。该应用还有两个 HTTP 服务 (HTTPServices)和消费者(Consumer)。这儿需要注意几个事情。首先,消费者订阅了名为“notificaitions”的目的地, 它和我们的 Notifier Actor 发布消息的目的地是相同的。其次,HTTPServices 调用 webservices/start_feed 和 webservices/stop_feed。如果你回想一下我们创建这个应用程序的过程,就会知道这些调用实际上会调用我们 WebServices 类中 的方法。

开发了应用程序后,Wischusen 写道:

你现在可以启动你的 Lift 应用了,启动 Flex 应用,点击“Subscribe to ‘notifications’”启动 Notifier Actor 并为消费者订阅名为“notifications”的目的地。你将看到 id 号,并且在文本输入域中的时间每 0.5 秒自动更新一次。你可以点击 “Unsubscribe from ‘notifications’”停止 actor,并取消消费者对“notifications”目的地的订阅。

最后,Wischusen 总结道:

有了这三个技术,实时地从服务器自动地将数据推送到客户端很容易实现。这只是一个微不足道的例子,但是我认为可以直接把这一方法扩展到更复杂的应用中。

这一项目的源代码分别被提供在 Life App Flex App 上。 查看英文原文: Derek Wischusen on Integrating Flex, BlazeDS and Scala/Lift

2008-02-13 19:141456
用户头像

发布了 150 篇内容, 共 50.7 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

对初学者来说,YashanDB数据库的学习路线图

数据库砖家

数智焕新!用友BIP交出央国企价值替代新答卷

用友BIP

重塑法律服务新生态,AlphaGPT筑牢法律AI数据安全防线

科技汇

不同质押周期对代币价格稳定性的具体影响及数据支撑

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

快速入门YashanDB数据库自动化运维工具

数据库砖家

巧用YashanDB数据库实现海量数据快速查询

数据库砖家

iCourt重启“律师大航海”计划,2024年美国行扬帆起航

科技汇

Java集合框架性能特征与使用场景深度解析

不在线第一只蜗牛

Java

如何进行YashanDB的安全审计

数据库砖家

引领国资监管新变革——国资国企穿透式监管白皮书重磅来袭

用友BIP

一颗车灯的智能化之旅

脑洞汽车

AI

快速掌握YashanDB的查询优化技巧

数据库砖家

治理代币的质押周期应该如何科学设定?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 代币开发公链开发

订单初版—取消订单链路中的技术问题说明文档

量贩潮汐·WholesaleTide

Java 数据库 服务器

常用YashanDB命令与操作实例

数据库砖家

从代码审计到生态共建 解码鼎夏智能的产业跃升密钥

极客天地

容量规划与扩展策略:YashanDB数据库企业应用

数据库砖家

“智能体”帮你的报销化繁为简,智能共享助力财务转型

用友BIP

MySQL为什么有时候会选错索引?

电子尖叫食人鱼

MySQL 数据库

快速构建高效数据仓库:YashanDB数据库应用指南

数据库砖家

如何高效利用YashanDB提升数据管理能力

数据库砖家

从语音识别到智能助手:Voice Agent 的技术进化与交互变革丨Voice Agent 学习笔记

声网

这5种规则引擎,真香!

电子尖叫食人鱼

前端 开发

开放YashanDB数据库的功能与特性介绍

数据库砖家

错误码502终结指南:3步根除MCP加载失败难题​​

聚客AI学院

人工智能 MCP MCP协议 MCP Server MCP头号玩家

快速入门YashanDB数据库:安装配置全流程

数据库砖家

如何高效利用YashanDB数据库进行数据挖掘

数据库砖家

灯塔低代码开发平台与DeepSeek深度融合,共筑AI编程的星辰大海

中烟创新

用友BIP企业AI全栈云:为中企出海筑牢全球化运营底座

用友BIP

炸裂!Dify新版发布:内置MCP双向支持!

王磊

如何高效使用YashanDB数据库的日志系统?

数据库砖家

Derek Wischusen论述集成Flex、BlazeDS和Scala/Lift_Java_Moxie Zhang_InfoQ精选文章