BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Moxie Zhang 关注 0 他的粉丝 ,译者 宋玮 关注 0 他的粉丝 发布于 2008年2月14日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

去年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平台支持好几门语言,包括GroovyPythonRuby以及Scala。当然,还有ColdFusion。理论上,这些语言中任一门都可以很好的与BlazeDS直接集成。
Wischusen继续解释了他为什么使用Scala:
嗯,因为最近我决定扩展我的编程语言视野,我发现Scala既非常有趣也非常强大。它是面向对象的而且是函数式的语言,它有mixin类型的成分,它也有用于处理并发特性的Erlang 式样的Actors,还有很多很多。最后,可能是最合我意的,就是Scala有一个卓越的Web应用程序框架,叫做Lift
概括来说,Wischusen集成项目使用了最新版的JDK 1.5+、ScalaEclipseEclipse的Scala插件MavenBlazeDSFlex 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 AppFlex App上。

查看英文原文:Derek Wischusen on Integrating Flex, BlazeDS and Scala/Lift

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT