写点什么

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:141251
用户头像

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

关注

评论

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

前端常用的站点导航

刘帅强

AIRIOT物联网低代码平台如何配置三菱PLC驱动?

AIRIOT

物联网 PLC 驱动配置

银行RPA趋向主动触发流程,补足营销场景执行末端的渠道协同能力

易观分析

银行 市场营销

一种经典的客户关系管理系统(CRM)订单模型的设计与实现

汪子熙

CRM SAP 客户关系管理系统 5月月更 订单模型

学Python运维,这知识点你肯定会遇到,【必收藏之】nginx 域名跳转相关配置

梦想橡皮擦

5月月更

2022年5月中国数据库排行榜:openGauss 黑马首登顶,AntDB 冲进20强

墨天轮

数据库 opengauss TiDB oceanbase 神通

层层剖析一次 HTTP POST 请求事故

vivo互联网技术

HTTP CORS XSS 跨域 waf

javascript 中搜索数组的四种方法

CRMEB

百问百答第38期:关于nginx监控,我们这样做

博睿数据

博睿数据 nginx监控

OpenHarmony 3.1 Release版本关键特性解析——Enhanced SWAP内存管理

OpenHarmony开发者

内存管理 OpenHarmony

Magento 和 WordPress 的区别

海拥(haiyong.site)

WordPress 5月月更

推荐几个机器学习的好资源

AIWeker

人工智能 深度学习 5月月更

熊磊:成功移植OpenHarmony到多套开发板,是最开心的事

OpenHarmony开发者

开发板 OpenHarmony

战“码”先锋直播预告丨如何成为一名优秀的OpenHamrony贡献者?

OpenHarmony开发者

OpenHarmony 贡献代码

对话ACE第三期有奖调研

OceanBase 数据库

数据库 对话ACE Oracle ACE

稳扎稳打步步为营 英特尔GPU将在消费市场和数据中心全面开花

科技新消息

总结

Geek_36cc7c

钱卫宁:开源是培养数据库人才的关键|OceanBase 数据库大赛访谈

OceanBase 数据库

oceanbase 数据库大赛

Nebula Graph|如何打造多版本文档中心

NebulaGraph

数据库 图数据库 NebulaGraph

堡垒机4a认证是什么意思?是指哪4a?

行云管家

云计算 网络安全 堡垒机 堡垒机认证

CUDA优化之PReLU性能调优

OneFlow

性能优化 cuda PReLU 朴素实现

前端工程化之FaaS SSR方案​

百度Geek说

前端

互联网出海企业数据库选型问答实录

OceanBase 数据库

云数据库 oceanbase 互联网出海

Dockerfile 的最佳实践 | Dockerfile 你写的都对么?

xcbeyond

最佳实践 镜像 Dockerfile

RocketMQ—Producer(五)路由队列选择

IT巅峰技术

架构 RocketMQ java

有数BI大规模报告稳定性保障实践

网易数帆

大数据 BI 网易 稳定性保障

金融任务实例实时、离线跑批Apache DolphinScheduler在新网银行的三大场景与五大优化

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

druid 源码阅读(八)Druid 回收连接

爱晒太阳的大白

5月月更

【云计算】云计算四个必学知识看这里!

行云管家

云计算 云服务 企业上云

Linux下玩转nginx系列(五)---nginx实现负载均衡

anyRTC开发者

nginx Linux 负载均衡 音视频

马斯克推崇的柏拉图式元宇宙,PlatoFarm早已验证出答案

股市老人

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