FlexClient, MessageClient, and FlexSession

转载 2012年03月30日 09:50:22
服务端FlexClient、MessageClient、FlexSession类的实例代表了Flex应用和服务端的连接。你可以使用这些对象管理FLEX应用程序和服务端的同步。 

FlexClient, MessageClient, and FlexSession objects 
FlexClient 
每一个MXML或者AS的Flex应用都被编译进SWF文件。当SWF文件和Blazeds服务通信的时候,一个flex.message.client.FlexClient对象就被创建,并在服务端代表这个SWF文件。SWF文件和FlexClient实例具有一对一的映射关系。Blazeds服务端为每个FlexClient实例生成一个唯一的标识id。在客户端也有一个单例类mx.message.FlexClient,用于存储这个唯一的FlexClient Id。 
MessageClient 
如果某个Flex应用程序含有一个订阅组件(flex.message.Consumer),服务端就会创建一个相应的flex.messaging.MessageClient实例来代表这个订阅者的发布者。每个MessageClient都有一个唯一的clientId,可以自动由Blazeds服务端生成,也可以在调用Consumer.subscribe()方法之前指定这个Consumer.clientId属性。 
FlexSession 
FlexSession对象代表在Flex程序和Blazeds服务之间的连接。它的生命周期基于通道和端点使用的底层协议。如果是基于HTTP的通道,例如AMFChannel或者HTTPChannel,在Blazeds服务端就是浏览器范围。如果它连接的端点是一个基于servlet的端点,那么这个HTTP session是基于J2EE HttpSession 对象。 
三者之间的关系 
一个FlexObject对象可以拥有多个FlexSession实例,这取决于Flex应用使用的通道数。例如,一个程序使用了一个HTTPChannel,那么在Blazeds服务端一个FlexSession代表这个HTTP session就会被创建。 

一个FlexSession也可以拥有一个或多个FlexClient和它关联。例如,a SWF file that uses an 
HTTPChannel is opened in two tabs,在BlazeDS服务端2个FlexClient实例被创建(一个SWF文件一个),但是只有一个FlexSession,因为两个tab共享同一个HTTP session。 


每个订阅组件都会创建MessageClient。每一个MessageClient都会和一个FlexClient以及一个FlexSession关联。 

理解:一个channel对应一个FlexSession,一个SWF文件实例对应一个FlexClient,多个请求会创建多个SWF文件实例,服务端也将创建多个FlexClient对应每一SWF文件,但只有一个FLexSession被创建(假设他们都是用一个HTTPChannel通信) 
关于三者的监听器 
BlazeDS服务端提供了下列监听器,来让你根据自己的逻辑来创建、销毁、以及改变三者的状态。 
  FlexClientListener
  FlexClientAttributeListener
  FlexClientBindingListener
  FlexSessionListener
  FlexSessionAttributeListener
  FlexSessionBindingListener
  MessageClientListener

参考:《BlazeDS体系结构(三) 》

相关文章推荐

GCM 发送接收消息 Message Client Server 服务器端,客户端

最近用了很多时间做GCM,由于碰到很多问题,因此详细做一下记录,以方便各位网友,不用再走我的重复的路.不过我试了一下GCM在国内很不好用.假如开发国外的程序的话,用GCM倒是很不错的选择.国内基本上封...

FlexClient, MessageClient, and FlexSession objects介绍

FlexClient 每一个MXML或者AS的Flex应用都被编译进SWF文件。当SWF文件和Blazeds服务通信的时候,一个flex.message.client.FlexClient对象就被创建...
  • xyylchq
  • xyylchq
  • 2011年03月21日 15:09
  • 1481

如何彻底卸载和重装ADS1.2 and 安装ADS1.2的注意点

ADS1.2无法彻底卸载和重装的解决方案问题:安装ADS1.2过程中发生故障,导致安装失败,且无法卸载,无法重装,点击卸载选择”remove”后提示”finished”,但是重新“setup”依然会出...

一步步移植uCOS-II and LwIP (二)

一步步移植uCOS-II and LwIP
  • youk110
  • youk110
  • 2017年01月22日 11:39
  • 480

android导入项目,出现Fix Gradle wrapper and re-import project问题以及相关问题的解决

今天本来想研究下android MVP模式,后来我组长给我发了个压缩过的项目,我解压项目后,在Android Studio导入项目的时候,出现了一下问题(原先我as里面的项目都没有任何问题):   ...

mysql使用between and处理时间区间不包括右边界问题

mysql使用between and处理时间区间不包括右边界问题最近自己写项目发现mysql使用between and处理时间区间不包括右边界。 SELECT * FROM timeline WHE...

台湾大学林轩田机器学习技法课程学习笔记7 -- Blending and Bagging

上节课我们主要介绍了Support Vector Regression,将kernel model引入到regression中。首先,通过将ridge regression和representer t...

关于grep命令的or,and,not操作的例子

在Linux的grep命令中如何使用OR,AND,NOT操作符呢?        其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符。不过呢,可以使用pat...

Oracle SQL逻辑操作符and、or与not

SQL提供的逻辑操作符与大部分其他编程语言中可以使用的逻辑操作符相似。      逻辑操作符AND和OR组合两个布尔值之间的结果并产生基于这两个结果的单结果,而逻辑操作符NOT得到相反结果...
  • kb5706
  • kb5706
  • 2012年05月09日 23:38
  • 2949

MySQL/Mybatis多个AND和OR混用注意事项

mysql中AND的优先级高于OR,所以在查询时,会优先执行AND条件,除非使用()来将一个AND和OR括起来,这样才能使得OR得以按照语句的顺序执行。 如下图所示: java测试代码 M...
  • farYang
  • farYang
  • 2016年10月14日 15:50
  • 8815
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FlexClient, MessageClient, and FlexSession
举报原因:
原因补充:

(最多只允许输入30个字)