关闭

BlazeDS知识积累

标签: flexblazedsamf
533人阅读 评论(0) 收藏 举报
分类:

BlazeDS是一个基于消息的框架。主要运用了两种模式:请求响应模式、发布/订阅模式。

BlazeDS提供以下几种通道:

  (1)标准AMF通道;

  (2)加密AMF通道;

  (3HTTP通道(AMFX)。

其中AMFHTTP通道都支持无轮询的请求/响应模式和客户端轮询模式(模拟实时通信),而AMFHTTP流通道模式提供了真正的数据流实时模式。

AMF协议时基于Http协议的。

 

httpService的工作方式主要是通过请求URL获取xml格式数据。

WebService返回soap格式的调用结果。也是通过请求URL来进行的。SOAP也是基于XML格式规范。

BlazeDSadobe专门为RemoteObject而开发的第三方软件。采用的是AMF(Action Message Format)二进制数据格式进行传输。

 

RemoteObject传输的是对象。 httpServiceWebService是基于Xml传输。

 

BlazeDS远程访问技术使用调用-响应模型。使FlexAdobe Flash应用访问服务器端Java对象如同访问本地对象一样。它可以整合存在于服务器的java安全策略,并提供在ActionScriptJava数据类型之间透明的数据转换与传输服务。

 

MessageBroker 
         MessageBroker是为了将消息路由给服务端,是Blazeds在服务端的核心。在端点经过初步的处理请求并且将提炼出来的消息传递给MessageBrokerMessageBroker查看消息的目的地,然后将他传递过去。如果目的地有安全现在,他就在传递之前运行检查证明。

 

HttpService组件虽然可以不通过BlazeDS而直接访问位于服务器端的URL, 但是这样就无法获得BlazeDS提供的跨域访问、集中式的安全控制和日志等服务

 

 

消息服务:

       消息(Messaging)服务允许多个客户端通过它发布、订阅消息或进行点对点的消息通信。

使用消息服务可以构建准实时通信或者多点数据同步的系统。

       Flex应用程序使用客户端消息API发送消息到定义在BlazeDS服务器中destination,并从它接收消息。消息在Channel中传输,在Endpoint中处理。BlazeDS亦可以将消息推送到连接至它的客户端, 此时BlazeDS使用destination广播消息,所有订阅此destination的Flex应用程序都可以收到消息。

       BlazeDS的消息服务还可以借助一个JMSAdapter支持嵌入或外部的JMS服务,使用JMS服务的主题(topic)和队列(queue).

 

 

BlazeDS的大致运行流程

       在客户端,由Flex RPC或Message组件发起会话请求,由Channel将参数或命令使用指定的网络协议(HTTP或HTTPS)与服务器端进行会话;在服务器端,由一个Servlet统一接收所有Channel的请求,然后根据Channel请求的URL将请求分发给相应的Endpoint,最终将请求转换成适配器(Adaptere)的源----即客户端组件能识别的命令,这些客户端组件可能是java Object、 web页面、 web service或JMS组件等。通过定义Adapter,可以支持更多的客户组件。

 

 

Operation 代表了远程服务中的单个方法。

AsyncRequest: 它允许对远程Destination进行多个请求,并在服务器处理完请求后回调请求者。它是一个Producer,即消息的生产者,即可以通过Channel将消息传输到服务器端。

 

Consumer的两种接收消息方法:主动接收和被动通知如果使用实时或轮询Channel,那么一旦有新消息,Consumer会接收到acknowledge事件通知,否则需要调用Consumer.receive来接收消息

 

 

MessageBrokerServlet以servlet的形式注册到JavaEEWeb服务器中,它统一接收前端Channel发送的HTTP请求,然后根据请求的URL将消息分发给相对应的Endpoint,在Endpoint对消息处理完毕后将结果写入HTTP响应流。 

 

 


EndPoint就是消息传输的接收器。
Endpoint并不真正处理消息,它将处理过程委托给service,endpoint在接收到消息时会根据消息的destination获得合适的service,然后调用service,serviceMessage方法处理消息。
Destination和Adapter都是service的子组件,service通过消息的destination找到设定的Adapter,并且调用dapter.invoke方法来激活destination代表的客户组件。

 

 

我们知道HTTP连接一般都是短连接,即socket连接,在完成一次请求/相应后马上断开,这种模式虽然提高了服务器的吞吐能力,但是客户端无法及时接收到服务器的消息。PollingChannel则提供了定时轮询服务器的能力

 

 

重大发现:

<destination id="chat-room-service">

                     <properties>

                               <source>flex.samples.runtimeconfig.ChatRoomService</source>

                               <scope>application</scope>

                     </properties>

            </destination>

这里要重点强调scope的含义,加上application表示该类的作用域在整个应用中。在服务启动的时候只初始化一次。  如果不写scope属性的话,则每个客户端对应一个目的地类。

 

 

BlazeDS的序列化机制:

1.     元标记RemoteClassTransient

RemoteClass 是修饰类的编译期的元标记。以[RemoteClass(alias=””)]的形式定义在ActionScript类前。用于显示映射其修饰的类和远程类。

   Transient则是运行期元标记,修饰类的成员变量,用于表明成员变量时瞬态变量,不参与序列化。

序列化只序列共有的,对于非公开变量或属性、只读属性(只有get访问函数)和静态变量或属性不参与序列化。

 

 

 

别人理解:

BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,它能够使得后端的Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。使用Blazeds可以很方便的连接java后台,同时他也提供HttpService、webservice方式,不过在Blazeds中可以通过配置文件中对其进行设置的,这样提高了应用的灵活性。其中最重要的还是RemotingObject技术,他可以直接远程远程调用java后台提供的公共接口,使其效率大大提升,一般是采用HTTPService方式的10倍左右。

 

 

 

常见错误:

 

如上图所示,假如在blazeDS配置文件文件中写错路径或是其它的话,客户端在编译的时候就会自动检查不通过。 上面不难发现是路径问题。在配置文件中应改为:mx.messaging.channels.AMFChannel。其实就多了一个e.   不是messageing 而是messaging。

0
0
查看评论

应该积累知识还是应该积累经验???

我常常思考的问题!!
  • henth
  • henth
  • 2006-02-02 09:42
  • 396

关于知识积累与创新的思考

关于知识积累与创新的思考 转载时请注明出处:http://blog.csdn.net/absurd最近有网友提出这样的担心,现有知识太多了,会不会被这些知识所淹没,失去自己的创新。这种担心也是情有可原的,连大师李敖都不愿用电脑,他认为从网络中可获取的知识太多了,信息爆炸,让人分不清钻石和狗...
  • absurd
  • absurd
  • 2006-07-03 21:52
  • 6434

科研经验1:云笔记积累个人知识体系

笔记的记录方式笔记是个人能力提高和知识体系积累的关键性习惯! 常见的笔记记录方式有三种,其实也是我个人笔记记录方式成长的三个阶段。1. 传统的纸记录方法。2008年我大学本科毕业前的记录方式,也可能是绝大多数人的习惯,最近问了6个使用程序语言工作的新手,居然有3人还使用纸记录的方式记录编程经验笔记...
  • woodcorpse
  • woodcorpse
  • 2017-07-17 07:57
  • 519

知识积累方式的改变

         关于知识积累方式的改变,其实我是有很多话想说,自从互联网广泛的影响人们的生活之后,人们的学习的方式其实也是有着非常巨大的变化。想想,自己以前在大学之前是如何学习的,而到了研究生阶段是有如何学习和解决问题的。可以说...
  • hiwzg
  • hiwzg
  • 2006-07-06 17:23
  • 638

java日常基础知识

1、面向对象的特征有哪些方面?  答:面向对象的特征主要有以下几个方面:  - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。  - 继承:继承是从已有类得到继承信息创建...
  • yys3155
  • yys3155
  • 2017-02-16 17:06
  • 779

Flex Blazeds推送机制

前言: 对于数据实时性页面呈现非常强的业务,通过前台定时刷新这样的效率明显不行。下面通过flex技术来实现这个功能。 思路: 以告警数据为例,告警数据通过mq、socket等方式进入系统,在java服务器通过监听来监听消息队列数据,接收后推送到flex各个客户端。blazeDS采用amf协议。...
  • Flood_Dragon
  • Flood_Dragon
  • 2012-10-12 16:36
  • 905

Flex3与java BlazeDS入门教程及其配置详解

Flex3与java BlazeDS入门教程及其配置详解 源代码下载地址:http://www.zuidaima.com/share/1789445387160576.htm
  • yaerfeng
  • yaerfeng
  • 2016-05-11 09:21
  • 4207

基于restful注解(spring4.0.2整合flex+blazeds+spring-mvc)

本文转自:http://www.blogjava.net/liuguly/archive/2014/03/10/410824.html 参考官网: 1.http://livedocs.adobe.com/blazeds/1/blazeds_devguide/ 2.http://docs.spr...
  • hhr373317
  • hhr373317
  • 2015-03-10 16:57
  • 804

实现Flex与Java的通信的Demo(BlazeDS方式)

应需求,研究了一下Flex如何与Java后台进行通信。先把HelloWorld的程序写在这里吧: 首先要想说的是网络上传播着3种flex与java的整合方法:     第一种是java项目里通过add flex project nature 插入flex 项目。 &...
  • angus_17
  • angus_17
  • 2012-11-13 10:14
  • 3424

细细品味Flex——BlazeDS开发指南

细细品味Flex——BlazeDS开发指南  1、BlazeDS简介 1.1 引言   通过使用HTTPService、WebService、URLLoader及FileReference等组件或类完成与服务器的通信是非常方便和简单的,但它们的缺点是通信数据量较小,如果要传输大量的...
  • skyboy11yk
  • skyboy11yk
  • 2013-12-02 23:01
  • 971
    个人资料
    • 访问:321052次
    • 积分:4258
    • 等级:
    • 排名:第8494名
    • 原创:42篇
    • 转载:444篇
    • 译文:1篇
    • 评论:18条
    最新评论