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

BlazeDS提供以下几种通道:

  (1)标准AMF通道;

  (2)加密AMF通道;

  (3)HTTP通道(AMFX)。

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

AMF协议时基于Http协议的。

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

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

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

RemoteObject传输的是对象。 而httpService和WebService是基于Xml传输。

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

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

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.     元标记RemoteClass和Transient

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。

BlazeDS知识积累相关推荐

  1. 人工智能伦理如何设定,从种群层面看人类的知识积累和进化

    前言:9月份中宣部出版局<中国图书评论>对<崛起的超级智能>进行了推荐和评论,对其中阐述的种群知识库扩展观点给予了重点关注.应该说种群知识库扩展是互联网大脑架构不断发展的抽象推 ...

  2. Winform开发几个常用的开发经验及知识积累(一)

    本人做Winform开发多年,孜孜不倦,略有小成,其中收集或者自己开发一些常用的东西,基本上在各个项目都能用到的一些开发经验及知识积累,现逐步介绍一些,以飨读者,共同进步.  1.窗口[×]关闭按钮变 ...

  3. WinRT知识积累1之读xml数据

    前述:这个知识是在Windows8.1或WP8.1中运用Linq to xml获取一个xml文件里的数据.(网上也很多类似的知识,可以借鉴参考) 平台:windows8.1 metro 或者WP8.1 ...

  4. 计算机C语言常用语句,计算机二级C语言考试常见知识积累

    形式化方法是一种特别的基于数学的技术,用于软件和硬件系统的形式规范.开发以及形式验证.下面是小编整理的关于计算机二级C语言考试常见知识,欢迎大家参考! 选择结构 [考点1]关系运算 关系运算符有6个, ...

  5. java 知识积累_java学习知识积累-spring常用注解

    java学习知识积累-spring常用注解 类的分层注解,由于我们后台开发都是分为三层进行开发的,所以Spring框架提供了三种对于不同层的注解方式: 控制层:@Controller 服务层:@Ser ...

  6. HTML知识积累及实践(一)- 标签样式

    HTML知识积累及实践(一) - 标签样式 1.认识HTML (1)HTML不是一种语言,而是一种标记语言 (2)标记语言是由标记标签和纯文本组成的 (3)HTML使用标记标签描述网页 2.HTML标 ...

  7. 如何将零碎信息结构化并做到有序安放,以实现知识积累?

    如何"将零碎信息结构化"?"结构化"这词有点难理解,以三体为例解释一下.三体里面有一个歌者,文明是比三体人还要高级的一个文明.还有一个清理工具叫二向箔.二向箔比 ...

  8. 易支付相关知识积累(easyPay)

    关键字:易支付相关知识积累. 易支付交易流程如下: [ 1 ] 网上消费者浏览检索商户网页: [ 2 ] 网上消费者在商户网站下订单: [ 3 ] 网上消费者选择支付方式--"首信易支付&q ...

  9. 【mysql知识积累】

    mysql知识积累 mysql的八大数据类型 mysql索引失效的常见原因(八字口诀) mysql(Mysiam和innodb的区别) mysql的八大数据类型 1.整数类型(Integer Type ...

  10. Linux知识积累——ssh链接和ubuntu查看隐藏文件及显示隐藏文件所占用存储空间

    Linux知识积累--ssh链接和ubuntu查看隐藏文件及显示隐藏文件所占用存储空间 1.ssh链接 2.ubuntu查看隐藏文件及显示隐藏文件所占用存储空间 1.ssh链接 问题描述:使用Xshe ...

最新文章

  1. 实模式和保护模式区别及寻址方式
  2. Silverlight 鼠标与键盘事件注意点
  3. swing之单选框和复选框
  4. 技术债务就像俄罗斯方块,你永远都赢不了!
  5. LeetCode(90):子集 II
  6. scrum回顾_[PM]敏捷开发之Scrum总结
  7. MyBatis入门让它跑起来
  8. 《大型数据库技术》MySQL数据库安装配置及基础使用
  9. 机器学习笔记(参考吴恩达机器学习视频笔记)16_决策树
  10. cad无法安装_CAD软件下载好了,为什么安装不上?有两个原因,解决方法在这
  11. 四核处理器_一千块普通办公电脑配置清单,还是四核处理器,能玩TX全家桶
  12. 10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示
  13. 1920x1080平板 android,高清是王道!1080P分辨率屏幕平板大搜罗
  14. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
  15. 为什么网上工商银行安装了U盾不能上网站了?
  16. 大数据学习路线,芜湖 起飞~
  17. 老狼远程协助软件编写教程共62节全(作为作者,应该是最晚发布的了)
  18. 微信的新消息一键标为已读.简单的微信脚本,使用autojs编写的安卓自动化脚本
  19. 鸣志驱动器与研华工控机RS485/422 com串口接线方法
  20. 选赵敏还是选小昭,这可真是个问题 | Decision Tree

热门文章

  1. 高中计算机考试app,信考中学信息技术考试练习系统 V17.1.0.1009 浙江高中版
  2. 2016中国app年度排行榜:十大行业、25个领域、Top 500 和2017趋势预测
  3. 苹果x来电闪光灯怎么设置_免费设置来电视频彩铃,安卓苹果都适用!
  4. python输出关键字的行号_python 《第七谈》简单的抓取数据,联行号为例
  5. 计算机动漫与游戏制作电脑配置,动漫与游戏设计该如何选电脑配置?
  6. 拜耳2020年10个新植保制剂商业化,3个生物技术性状项目推进至上市阶段
  7. 【c语言大作业】c语言编写贪吃蛇
  8. 数电实验(二)利用8选1数据选择器74LS151设计四舍五入判别电路
  9. Touch Panel 调试技巧 01
  10. MATLAB计算13195的约数,最大约数算法 | Delphi论坛 | Delphi Forum - We Delphi