About channels and endpoints
channels
是客户端的对象用来封装消息以同LCDS服务器的endpoint通信
基本概念
通道类型:(Channel)
- RTMP(Real Time Messaging Protocal,实时消息协议)通道
- 加密的RTMP通道
- AMF通道(Action Message Format)
- HTTP通道(AMFX通道)
普通轮询:
客户端能够以一定时间间隔向服务器反复发送请求。每一次请求时,如果没有响应则宣告结束。直到某次请求收到响应时,即关闭连接。
长轮询:
客户端向服务器发出请求,服务器如果还没准备好数据就不返回请求,知道数据准备好或者超时才返回请求,无需等待客户端发起新的请求再返回响应,因为降低了服务器响应的延迟时间。
端点:(Endpoint)
- 基于Servlet
的端点:运行于Web容器内,使用Servlet来处理HTTP会话和网络I/O。
- 基于NIO
技术的端点:使用基于NIO的Socket服务器,具有更好的性能和扩展性。
Configuring channels and endpoints
<channel-definition id="my-nio-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:2880/nioamf" class="flex.messaging.endpoints.NIOAMFEndpoint"/>
<server ref="my-nio-server"/>
<properties>
<polling-enabled>false</polling-enabled>
</properties>
</channel-definition>
- id
和type标识
出Flex客户端用来连接服务器的channel
-
endpoint
标签包含服务器端的endpoint的URL
和type
- properties标签包含channel
和endpoint
的属性
- 当使用NIO-based
的channel的时候使用server
标签
- endpoint的URL
就是连接MessageBrokerServlet的endpoint的网络地址
How channels are assigned to a Flex component
如果在MXML编译器设置(compiler option)里设置了“-services”,那么channels会自动通过配置文件来设置
;否则的话需要在MXML里手动添加
channels。
-services "E:/task/ProducerTest/WebContent/WEB-INF/flex/services-config.xml"
<RemoteObject id="ro" destination="Dest">
<mx:channelSet>
<mx:ChannelSet>
<mx:channels>
<mx:AMFChannel id="myAmf" uri="http://myserver:2000/myapp/messagebroker/amf"/>
</mx:channels>
</mx:ChannelSet>
</mx:channelSet>
</RemoteObject>
<mx:AMFChannel id="myamf" uri="/ptp/messagebroker/amf"/>
<mx:ChannelSet id="channelSet" channels="{[myamf]}"/>
<mx:RemoteObject id="recordSrv" destination="recordService"
channelSet="{channelSet}" showBusyCursor="true">
</mx:RemoteObject>
Assigning channels and endpoints to a destination
application-level
的缺省channels设置
<services-config ...>
...
<default-channels>
<channel ref="my-http"/>
<channel ref="my-amf"/>
</default-channels>
...
service
的缺省channels设置
<service ...>
...
<default-channels>
<channel ref="my-http"/>
<channel ref="my-amf"/>
</default-channels>
...
destination
的channels设置
<destination id="sampleVerbose">
<channels>
<channel ref="my-secure-amf"/>
</channels>
...
</destination>
Fallback and failover behavior
为什么要提供一个channels的集合呢?这样可以在缺省第一个channel通信不成功的时候自动启用第二个channel。
Choosing an endpoint
LCDS提供了两种endpoint,一个是servlet-based
的endpoints和NIO-based
的使用Java New I/O APIs的endpoints。当对于实时连接(real-time connection)要求高的时候应该选用后者。
Servlet-based channel and endpoint combinations
- AMFChannel/AMFEndpoint(AMF
format)
- HTTPChannel/HTTPEndpoint(AMFX
format)
- StreamingAMFChannel/StreamingAMFEndpoint(real-time
with AMF
format)
- StreamingHTTPChannel/StreamingHTTPEndpoint(real-time
with AMFX
format)
NIO-based channel and endpoint combinations
- RTMPChannel/RTMPEndpoint
- AMFChannel/NIOAMFEndpoint
- StreamingAMFChannel/ NIOStreamingAMFEndpoint
- HTTPChannel/NIOHTTPEndpoint
- StreamingHTTPChannel/StreamingNIOHTTPEndpoint
Choosing a channel
-
Non-polling
AMF and HTTP channels:一般是remoting service调用、proxied HTTP service调用和web service请求。
-
Piggybacking
on AMF and HTTP channels:Piggybackin的特性就是允许消息队列的传播,并对一个消息队列进行一次反馈,减小服务器系统开销。
-
Polling
AMF and HTTP channels:客户端可以一直在一个时间间隔中请求服务器的消息。
-
Long polling
AMF and HTTP channels:通过设置polling-enabled、polling-interval-millis、wait-interval-millis和client-wait-interval-millis来实现。
-
Streaming
channels:RTMP channels, streaming AMF 或者 HTTP channels。
小结
- AMFChannel -> (NIO)AMFEndpoint:regular, piggybacking, polling, long-polling
- StreamingAMFChannel -> (NIO)StreamingAMFEndpoint
- HTTPChannel -> (NIO)HTTPEndpoint:regular, piggybacking, polling, long-polling
- StreamingHTTPChannel -> (NIO)StreamingHTTPEnpoint
- RTMPChannel -> RTMPEndpoint:duplex socket
(双向套接字),这是真正的real-time
通信
HTTP piggybacking
HTTP polling
HTTP long-polling
HTTP streaming
Configuring channels with servlet-based endpoints
polling-enabled:默认是false。
polling-interval-millis:默认是3000。该值表示客户端给服务器发送请求消息的间隔时间。如果设置为0后,客户端在收到服务器的消息后立刻执行相关操作
wait-interval-millis:默认是0。该值表示服务器端等待客户端新消息的时间,需要设置max-waiting-poll-requests为非空值才能生效。0表示不等待客户端的新消息到来而像往常一样发送一个空消息回去;-1表示没有客户端的新消息的到来就不发送消息。
client-wait-interval-millis:默认是0,表示使用polling-interval-millis。1表示没有任何延迟。该值可覆盖polling-interval-millis。
max-waiting-poll-requests:endpoint的属性。默认是0。服务器端可等待响应的线程的最大数目。如果超过这个限制,wait-interval-millis会变为0。
piggybacking-enabled:
login-after-disconnect:channel属性。默认是false。设为true的意思是客户端会在消息发送失败的时候自动尝试重新验证登陆服务器端。
connect-timeout-seconds:客户端连接超时时间。
Configuring channels with NIO-based endpoints
暂时没有学习的需要
Channel and endpoint recommendations
Using LiveCycle Data Services clients and servers behind a firewall
- 大小: 10.3 KB
- 大小: 23 KB
- 大小: 26.8 KB
- 大小: 29.7 KB
- 大小: 31.9 KB
- 大小: 9.8 KB
分享到:
相关推荐
4. LCDS:LiveCycle Data Services的安装包。 5. Tomcat 5或更高版本:一个流行的Java应用服务器。 安装好这些工具后,可以开始创建Flex + LCDS项目: 1. 新建Flex LCDS工程:在Eclipse中,选择File -> New -> ...
3. LCDS:提供Flex和Java之间的数据服务。 4. Tomcat 5或更高版本:作为Web应用服务器运行Flex项目。 入门教程: 创建Flex LCDS项目: 1. 打开FlexBuilder3,选择"File -> new -> Flex Project"。 2. 在向导界面1...
1. **LCDS简介**:介绍LCDS的基本概念,其在企业应用中的角色,以及为什么选择LCDS作为富客户端开发的解决方案。 2. **Flex集成**:详细讲解如何将Flex应用与LCDS结合,包括配置Flex Builder或IDE以支持LCDS,以及...
Using LEDs, LCDS, and GLCDs in Microcontroller Projects is an application oriented book providing a number of design projects making it practical and accessible for electrical & electronic ...
- LCDS还支持数据流的概念,使得数据的实时更新变得简单易行,非常适合构建动态的、响应迅速的用户界面。 #### 4. **LCDS的部署与管理** - LCDS支持在多种操作系统上运行,包括Windows、Linux、Solaris等,提供了...
Adobe公司LCDS注册机,适用于LCDS早期版本,学习交流之用
Flex LCDS flex.war就是lcds.war Flex+LCDS使用的war包
- LCDS:提供数据服务。 - Tomcat 5 或更高版本:作为应用服务器。 **5. 入门教程** **步骤1:创建Flex LCDS工程** - 在Eclipse中,通过`File -> new -> Flex Project`创建新项目。 - 选择Java源代码的根目录,确保...
通过本文的介绍,我们不仅了解了Flex、LCDS和Java的基本概念,还掌握了创建Flex LCDS工程的具体步骤。学习这些技术不仅可以提升开发能力,还能帮助构建高性能、可扩展的应用程序。希望本文能为您的学习之路提供有...
很多人在帖子和群中问到过一些关于建立Flex+LCDS(FDS)工程的问题,由于操作上的东西,很难简单说清楚,于是写了一个简单的教程(本来很早就答应过的,结果被newfish逮住做东西,加上公司的事,一直抽不出时间哈,...
《cairngorm与LCDs结合应用:最小工程解析》 在Adobe Flex开发领域,cairngorm和LiveCycle Data Services (LCDS)是两个重要的框架和工具,它们各自为开发者提供了强大的功能。cairngorm作为一个轻量级的MVC(Model-...
lcds.war lcds.war lcds.war lcds.war lcds.war lcds.war lcds.war lcds.war
lcds是用于来连接java数据库的哦!使用Flex 3 plugin+Eclipse+lcds 欢迎大家下载
LCDS支持AMF(Action Message Format),这是一种高效的二进制数据格式,能快速传输数据,减少网络延迟。 在Flex与LCDS的配合下,你可以使用LCDS的 BlazeDS 组件(BlazeDS是LCDS的一个开源版本)来创建数据服务,...
**学习资源**:提供的"Flex+++LCDS(Blazeds)+++Java+入门教程.doc"文档很可能是详细的教程,包括基本概念、安装配置、示例代码和实践指导。而"flex.war"和"blazeds.war"这两个文件则是预编译好的Flex和LCDS服务器端...
通过本文的详细介绍,我们不仅了解了Flex、LCDS以及Java的基本概念和发展背景,还深入学习了如何在Eclipse环境下搭建开发环境,并具体介绍了创建Flex LCDS项目的步骤。对于初学者而言,这些知识点将有助于快速上手并...
例如,EmployeeManager可能使用LCDS的AMF通道,将Flex请求转换成高效的二进制格式发送到服务器,从而实现高性能的数据交换。 6. **项目结构分析**:压缩包内的"EmployeeManager"可能是项目的源代码或编译后的SWF...