Flex与BlazeDS结合为什么是设计RIAs最好的选择(二)

原创|其它|编辑:郝浩|2009-05-12 11:31:17.000|阅读 937 次

概述:这篇文章概括出了关于为什么Java程序员必须学习Flex 以及 BlazeDS的十三个原因。它讨论了Flex 与BlazeDS结合为什么是设计丰富的互联网应用程序(RIAs)的最好的选择——来自以Java为后台,高度的交互式站点以及企业应用程序。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  理由七:BlazeDS可以在任何Java应用服务器上运行

  BlazeDS的多个版本都是可以使用的,包括即将投入使用的包含Apache Tomcat设置的版本。在这篇文章中,我使用二进制分布,作为web档案(WAR),来显示你在应用服务器上如何进行部署。否则你可以引用Java存档(JAR)文件,在你的项目中使用。为了获取各种各样安装BlazeDS的信息而访问BlazeDS wiki。

  这个例子是在现有的项目上使用BlazeDS。你只需要在你的项目上增加JAR文件,然后你可以在应用程序内部使用BlazeDS,这允许你在任何可以部署应用程序的地方部署它。

  在你的项目上增加BlazeDS,完整步骤如下:

  1、 找出包含BlazeDS WAR文件 jar xvf blazeds.war

  2、 复制JAR文件到你的项目lib目录:cp -R WEB-INF/lib /sodaSample。

  理由八:可以在现有的Java应用程序上使用

  再soda的例子中,假设你想要暴露现有的soda服务以便远程的Flex应用程序可以与之链接。在现有的应用程序上创建BlazeDS的基本步骤如下:

  1、 在WEB-INF/flex目录下编辑BlazeDS配置文件。

  2、 在应用程序上web.xml上规定MessageBrokerServlet 以及session listener。

  创建BlazeDS以后,你需要增加你的soda服务到BlazeDS远程配置文件,它允许从Flex 客户端访问soda服务。通过规定一个目的地以及一个或者更多的数据传送渠道来实现添加。基础的AMF渠道在服务器.xml文件中被定义。通过这个定义在远程config.xml 中识别你的目的地:

  < destination id="sodaService" channels="my-amf">

  < properties>

  < source>com.gorillalogic.sodaSample.SodaService< /source>

  < /properties>

  < /destination>
 
  通过在远程配置文件中定义端口,你可以从Flex客户端访问任何一个Java服务。

  传递Java数据模型到Flex客户端,在你的脚本class中定义两者之间的映射:

  [Bindable]

  [RemoteClass(alias="com.gorillalogic.sodaSample.SodaModel")]

  这段代码显示Flex,当远程服务访问返回Java SodaModel的结果把其映射到你的SodaModel。Flex客户端的示例显示如何访问这个Java服务。访问返回一个odaModel,根据你的命令:

  public function callSodaService():void {

  var sodaType:String = type.text;

  var sodaCount:int = parseInt(cnt.text);

  var flag:Boolean = preOpen.selected;

  remoteObject.getSoda(sodaType, sodaCount, flag);

  }

  private function resultHandler(event:ResultEvent):void {

  var sodaModel:SodaModel = event.result as SodaModel;

  }
 
  Flex从变化的结果中返回你的结果,映射到你的SodaModel上。我不在这里讲述细节,但是一个需要说的细节是在汇编配置中指定services-config.xml,像以下所写:

  -locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml -context-root /

  如果不这样,你的Flex客户端将无法找到Java服务。同样的方法,你可以从客户端传递一个对象返还到服务。比如,你可以传递空的soda model返还到客户端。

  理由九:你可以扩展BlazeDS以及使用Java对其进行修改

  假设你决定当soda服务器被访问的任何时候,要增加一个特别的logging。你可以扩展Java编辑者的标准来增加logging。

  首先,增加Java类别扩展JavaAdapter:

  import flex.messaging.services.remoting.adapters.JavaAdapter.

  public class TimingJavaAdapter extends JavaAdapter {

  Then, overload the invoke() method:

  public Object invoke(Message message) {

  RemotingMessage remotingMessage = (RemotingMessage) message;

  String operation = remotingMessage.getOperation();

  String destination = remotingMessage.getDestination();

  Logger.info("calling " + operation + " on destination " + destination);

  Object data = super.invoke(message);

  return data;

  }
 
  使用这种方法,你可以看见即将要进行的操作以及访问的目的地。你可以使用这种简单的hook,比如说你可以测试对服务器多长时间的访问是最有意义的。

  理由十:你可以从HTML 和JSP访问BlazeDS

  你可以用不同的方式进行访问,比如通过浏览器管理或者flashVars。flashVars可以通过HTML页设置,然后通过Flex引用程序读出。

  举个例子,比如你想要传递你的用户名以及用户类型,想要从HTML页面上进行命令。你必须要在HTML页设置flashVars,如下:

  < object id='SodaSample' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'>

  < param name='src' value='SodaSample.swf'/>

  < param name='flashVars' value='username=ryan&type=coke'/>

  < embed name='mySwf' src='SodaSample.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='username=ryan&type=coke'/>

  < /object>
 
  然后,在你的Flex应用程序中你可以通过应用程序参数读出这些变数:

  var username:String;

  if (Application.application.parameters.hasOwnProperty("username")) {

  username = Application.application.parameters.username;

  }
 
  理由十一:Flex 和BlazeDS的数据传送比其它的Ajax解决方案好

  默认情况下,所有的远程程序调用(RPCs)在使用的时候运用的是AMF二进制协议。一个开放的标准,AMF极端的迅速。James Ward组成了一个整体样本显示与其他它远程解决方案的对比。尽管其它的异步式JavaScript 和 XML (Ajax)解决方案,比如Dojo与几个成百的队列进行对抗,具有BlazeDS的Flex可以轻松的解决几千个队列。(James Ward为不同的RIA数据加载技术基准做的统计)

  理由十二:你可以直接从Java 客户端访问BlazeDS

  BlazeDS最新发布的版本包含一个Java AMF类,你可以使用它使得Java 客户端访问BlazeDS服务。这种访问unit testing的方法在单元测试以及下载测试中都显示极其有效。

  理由十三:和Spring框架一起使用

  Adobe 与 Spring框架的组合带来两个项目之间更紧密的结合,最初发布的Spring-BlazeDS整合就显示了很多前景。通过允许Spring Bean成为远程服务,完全一样的配置文件将会被删除。

  结论:

  BlazeDS成为开源并且基于Java,对于新事物以及现有的Java服务项目这的确是一个好的选择。优秀的远程交流性能以及Flex 和Java之间的对象映射,Flex和 BlazeDS技术是RIA发展的一个好的选择。Flex 和BlazeDS对于 Java开发者来说是新鲜事物,开发者们会发现它的发展进程非常丰富,并且非常容易学习。

  有BlazeDS 伴随的Flex也是大型企业级应用软件的一个好选择。在以前的一个项目中,我的团队写一个应用程序会包含超过50种不同的表现形式,在服务器与客户端之间规律的转移一些上千行的数据。这种应用程序已经几乎不可能使用传统的Ajax技术。使用Flex 和BlazeDS,在接下来的一年中我们将可以发布最初的版本。看一看这种充满活力的工具可以为你的应用程序发展项目做什么吧。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP