- 浏览: 395243 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (325)
- 神经网络 (1)
- javascript (11)
- 数据结构 (2)
- 计算机图形学 (11)
- 模式识别 (1)
- 前端开发 (14)
- 机器学习 (11)
- ios开发 (50)
- Python (9)
- HTML5 (4)
- 计算机视觉 (9)
- 数字图像处理 (7)
- 架构设计 (19)
- 数据库设计 (9)
- 算法设计 (59)
- Java (37)
- 其他 (3)
- 游戏开发 (5)
- c++ (17)
- Linux (3)
- TCP/IP (2)
- Flex (41)
- 健康 (6)
- AI (2)
- 工具 (1)
- 数据挖掘 (1)
- 性能优化 (6)
- 综合 (2)
- 网络通信 (12)
- Android (2)
- UML (3)
- 软件设计 (11)
- 编程经验 (7)
- J2EE (1)
- 多媒体技术 (3)
- 数学 (7)
- php (4)
- 设计 (1)
- CS (2)
- 计算机理论 (1)
- 信息安全 (1)
最新评论
-
ahead_zhan:
good good good
flex3控件_ModuleLoader -
lonerzf:
好样的。非常感谢楼主
OpenCV视频教程整理 -
lonerzf:
好样的。谢谢~
OpenCV视频教程整理 -
coding1688:
博主说的不错,我在实现瀑布流布局时也用的masonry插件,有 ...
Javascript 瀑布流式布局及其动态效果的实现 -
snowolf:
除非玩游戏,不然没啥win的事情,或者用win的银行客户端,通 ...
macbook安装操作系统的机理分析
参考:http://hi.baidu.com/whlxjq520/blog/item/f040771082d9abd2a7ef3f8d.html
最近在学习java+flex+blazeDS的架构,所以转帖一篇以备后面的学习。
一、先来简单的看blazeDS.
1、blazeds是一个web应用框架。无非就是servlet,jsp和filter,无他。
2、一个web应用框架的基础还是servlet和过滤器。所以它里面有个MessageBrokerServlet。这个servlet的用处和其他框架,如struts,spring,或者xwork里的新增配置文件(struts.xml,application.xml)所起到的作用类似,匹配url,决定将请求发往给哪个服务。
3、blazeds的名词解释。
我要装修房子,知道张三是做装修的,有三种方式(电子邮件,电话,快递)都可以联系,他可以提供多种服务,如墙漆,家具,地板,灯具。
1)channels通道,就是三种联系方式。
2)endpoints端点,就是三种联系方式的具体内容,每种联系方式可以有多个。如电话,他装有三个12365444,451325648,45668,当然也可以仅有一个。我第一个打不通就打地二个,第二个打不通就打第三个。
3)serive,是张三的家务事,他可以安排电话专门负责接墙漆的单子,email接家具的单子。
4)destination目的。我们需要什么墙漆,绿色的,红色的等等具体的服务内容。
6)adapter适配器。这是张三的家事了,他知道谁谁嘴巴子甜,就让他接电话,哪个喜欢在网上漫游就让他收发邮件。
4、张三的所有的服务在他内部是通过services-config.xml等几个文件安排的,对外他可以发布自己的destination,endpoints和channels到报纸,杂志,网络,或者其它公共信息载体,也可以仅仅发给自己的私密好友。
二、Blazeds体系结构
一个Blazeds应用包含了一个运行在浏览器或者Adobe AIR的客户端应用并且和J2EE应用服务端通信。客户端可以是Flex也可以是结合Flex、HTML/JavaScript的应用程序。
整个体系主要包括通道、端点、消息、服务、目的地、适配器等,把这些搞懂也就差不多了。通道使得组件能够和Blazeds服务端的端点通信,将请求送到目的地。端点和通道是相互映射的。
1.Blazeds客户端体系结构
Blazeds使用一个基于消息的框架与服务端结合。这个框架使用通道封装了Flex程序和Blazeds服务端之间的连接。下面是Blazeds客户端的结构
以下Flex组件和Blazeds服务端结合:
. RemoteObject
• HTTPService
• WebService
• Producer
• Consumer
所有的这些组件都包含在Flex SDK和rpc.swc组件库中。
尽管RemoteObject、Producer、Consumer包含在Flex SDK中,他们仍然需要一个服务端来反编译出他们发送的消息。Blazeds和LiveCycle Data Services ES服务就是两个这样的服务端。当然Flex应用程序可以不使用Blazeds这种中间层而是直接使用HTTP Service或者Web Service来调用远程服务
2.0 通道和通道设置
Flex组件使用通道和Blazeds服务端交互。一条通道包含多条道路,他们的基础功能就是提供Flex客户端和Blazeds服务端的交流。通道中的道路都是按性能排序的。Flex组件会尝试连接第一条道路,不过这并不能保证一定能连接,有可能使用的还是道路中后面的那几条。它会搜寻通道中的道路知道连接上或者已经没有连接。
通道封装了Flex组件和Blazeds服务端之间的连接方式。概念上来说,通道是Flex组件下面的组件,他们处理组件和Blazeds服务端之间的交互。他们和Blazeds服务端上相应的端点通信。
Flex客户端使用不同的通道类型。例如AMFChannel和HTTPChannel。通道选择有很多的因素,包括你的程序构建的类型。如果你想要使用无二进制压缩的方式传输,可以使用HTTPChannel,它使用AMFX(AMF in XML),一种无二进制压缩的方式。
下面的例子在services-config.xml文件中创建了一个AMFChannel通道,与服务器上的AMFEndpoint通信:
<channels>
<channel-definition id="samples-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http:// servername:8400/myapp/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
2.1为flex组件指定通道
如果你通过-services选项指定services-config.xml文件来编译MXML文件,那么组件(RemoteObject、HTTPService等等)会自动指定一个或者多个通道配置实例。
不过如果你没有加这个编译参数,或者想自己覆写编译项的行为,那么你可以在MXML或者AS文件中为组件指定通道。当你想要为你的组件使用动态目的地的时候,整个应用级别的默认通道非常重要。
通过加上-services编译参数,可以包含所有的客户端连接服务器需要的信息,但是一下情况你可能会选择手动设置通道:
1) 你不想硬编码端点路径在你编译的客户端swf文件。
2) 你想要动态的创建目的地(目的地不在services-config.xml文件内)。
3) 你想要在客户端代码控制组件使用通道的顺序。
下面的代码展示了如何在MXML文件中定义通道:
<RemoteObject id="ro" destination="Dest">
<mx:channelSet>
<mx:ChannelSet>
<mx:channels>
<mx:AMFChannel id="myAmf"
道MLcationonfig.xmluri="http://myserver:2000/myapp/messagebroker/amf"/>
</mx:channels>
</mx:ChannelSet>
</mx:channelSet>
</RemoteObject>
下面的代码则是AS文件:
private function run():void {
ro = new RemoteObject();
var cs:ChannelSet = new ChannelSet();
cs.addChannel(new AMFChannel("myAmf",
"http://servname:2000/eqa/messagebroker/amf"));
ro.destination = "Dest";
ro.channelSet = cs;
}
注意:当你在客户端代码创建通道时,还是必须在services-config.xml文件里配置一个指定端点的通道。否则,messagebroker就不能传递客户端请求到端点。
2.2 为目的地指定通道和端点
如果大多数的目的地使用使用相同的通道,你可以指定应用级别的默认通道,比如:
<services-config ...>
...
<default-channels>
<channel ref="my-http"/>
<channel ref="my-amf"/>s
</default-channels>
...
也可以单独指定通道,比如:
<destination id="sampleVerbose">
<channels>
<channel ref="my-secure-amf"/>
</channels>
...
</destination>
2.3 选择端点
可以参考文档或者看blazeds通道、端点配置
消息
Flex客户端组件和Blazeds服务端都是基于消息进行交流的,Flex组件使用几种消息和他们对应的服务交流。所有的消息有基于客户端的(ActionScript)和基于服务端(Java)的,因为这些消息分别在客户端和服务端序列化和反序列化。
一些消息,比如应答消息和命令消息,使用不同的Flex组件和Blazeds服务。其他的消息类型使用特殊的Flex组件和Blazeds服务。例如消息生产者发送消息给消息消费者组件。
其他情况下,你不可以直接写代码构造和发送消息。例如,你只是使用远程组件(RemoteObject)调用远程方法远。远程组件创建一个远程消息封装给远程对象调用。返回的消息封装在一个ResultEvent中。
Blazeds服务端体系
Blazeds
服务就是一个包含J2EE Web应用程序的应用。Flex客户端通过通道发送请求到Blazeds服务的端点上。从端点开始,请求经过一些列的Java对象包括消息传播对象、服务对象、目标对象以及最终的适配器对象。适配器将请求实现为本地的、或者contacting a backend system或者远程服务例如JMS服务。下面展示了Blazeds服务体系
端点
基于服务的端点是通过MessageBrokerServlet启动的,需要在web.xml中配置的。除此之外,HTTP session监听器也要加入到web程序的web.xml中。
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<display-name>MessageBrokerServlet</display-name>
<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
<init-param>
<param-name>services.configuration.file</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
客户端程序使用通道和Blazeds端点通信。端点和通道是相互映射的,保持端点和通道使用相同的消息格式是很重要的。如果通道使用AMF消息格式,比如AMFChannel,端点也必须AMF消息格式与之匹配,比如AMFEndpoint。
你可以在WEB-INF/flex目录下的services-config.xml配置端点。
MessageBroker
MessageBroker是为了将消息路由给服务端,是Blazeds在服务端的核心。在端点经过初步的处理请求并且将提炼出来的消息传递给MessageBroker。MessageBroker查看消息的目的地,然后将他传递过去。如果目的地有安全现在,他就在传递之前运行检查证明。
服务和目的地
服务和目的地是消息在Blazeds服务中传递处理的下一站。系统包括4个服务以及他们对应的目的地:
RemotingService(远程服务) 和 RemotingDestination(远程目的地)
HTPProxyService(HTTP
代理服务) and HTTPProxyDestination(HTTP代理目的地)
MessageService(消息服务) and MessageDestination(消息目的地)
服务是消息传递过来的目标,可以将目的地想象成服务的实例。例如,远程组件和远程服务通信中,你必须指定一个远程目标,例如你要调用的类的方法。这种客户端和服务端的映射是按照下面来实现的:
HTTPService 和 WebService HTTPProxyService/HTTPProxyDestination通信
RemoteObject和 RemotingService/RemotingDestination通信
Producer、Consumer和 MessageService/MessageDestination通信
你可以在sevices-confi.xml中配置服务和目的地,但是最好是将他们放进不同的文件:
RemotingService配置在remoting-confi.xml
HTTPProxyService配置在proxy-config.xml
MessageService配置在messaging-config.xml
适配器和”随机”的编译是消息处理链中的最后一环。当一个消息抵达正确的目的地以后,它就会被传递给适配器被实现成本地的或者后台系统或者一个远程服务(JMS)。Blazeds使用如下的方式在适配器和目的地间映射
RemotingDestination uses JavaAdapter
HTTPProxyDestination uses HTTPProxyAdapter or SOAPAdapter
MessageDestination uses ActionScriptAdapter or JMSAdapter
发表评论
-
【转】那些年使用过MapReduce的论文
2014-03-09 15:20 1008MapReduce is a programmi ... -
phonegap js 和 本地代码 调用原理
2013-09-03 11:52 716转自:http://www.cnblogs.com/coms ... -
单点登录SSO的实现原理
2013-08-26 10:09 650转自:http://blog.csdn.net ... -
nginx上搭建HLS流媒体服务器
2013-07-28 13:31 1344转自:http://blog.csdn.net/ ... -
73本免费的、语言无关的优秀的编程书籍
2013-03-24 21:43 650这些书籍中有HTML格式的,也有PDF格式的,当 ... -
Hadoop集群实践
2012-11-11 17:01 740(0) 完整架构设计 [ Hadoop(HDFS) , ... -
ActionScript最新3D引擎项目(转载)
2012-10-23 19:11 8283D引擎 注:对于3D引擎,渲染的效率和支持的渲染功 ... -
Flash 3D的相关文章推荐
2012-10-12 15:18 0Flash ActionScript 3.0的3D效果处 ... -
深入浅出了解Molehill的底层API-顶点着色器与片段着色器
2012-10-12 11:07 1188转自:http://www.adob ... -
REST介绍与REST在PHP中的应用
2012-10-06 17:27 594转自:http://www.nowamagic.net/ ... -
【转】大流量、高并发的网站的底层系统架构
2012-09-29 22:08 698转自: http://hi.baidu.com/liyi ... -
【转】建设一个靠谱的火车票网上订购系统
2012-09-29 21:59 1061转自:http://www.ifanr.com/68019 ... -
ActionScript 3 和 Flex框架的性能优化
2012-08-29 09:33 730与其在程序写完了之后臃肿得跑不动,不如平时注意这些关键点,时时 ... -
JS原型对象通俗"唱法"
2012-08-23 16:52 685参考:http://www.cnblogs.com/gn ... -
Javascript 瀑布流式布局及其动态效果的实现
2012-08-18 21:24 2281参考:http://test.yvlou.c ... -
常用前端开发工具合集
2012-08-18 10:07 741参考:http://www.cnblogs ... -
玩转html5<canvas>画图
2012-08-06 09:09 1335参考:http://www.cnblogs.c ... -
可扩展性数据库的架构设计
2012-07-17 19:59 789参考:http://www.51testing.c ... -
Flash、HTML和Unity开发网页游戏的现实比较
2012-06-15 10:49 24152011-11-21 这一天对于全球的flash开发者来说是 ... -
学好JavaScript Web开发必备技能
2012-06-09 18:57 752参考: http://hi.baidu. ...
相关推荐
FLEX——blazeDS原理.pdfFLEX——blazeDS原理.pdf
Using BlazeDS and Flex integrated。
BlazeDS通信到Java的PureMVC——Flex框架,BlazeDS的服务器配置比较麻烦,这里使用的是直接下载blazeds_turnkey_3-0-0-544.zip中的tomcat BlazeDS模板路径为: blazeds_turnkey_3-0-0-544.zip解压后路径\tomcat\...
使用BlazeDS实现Java和Flex通信
BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,使得后台的Java应用程序和运行在浏览器上的Flex应用程序能够相互通信。
Flex技术本身和Java就有很强的关联性,它提供了一个基于Eclipse的IDE和BlazeDS.BlazeDS是个基于服务端的Java远程调用和Web消息的一个开源的技术。有许多应用都是以Java为后端处理的。Flex用于前端。由于Java和Flex...
BlazeDS开发者指南中文版,很详细的描述了BlazeDs的基本原理,开发、配置过程。
blazeds.war blazeds
包含blazeds.war blazeds-spring.war 以及解压后的blazeds,blazeds-spring文件夹, 可直接拷贝到javaee项目下的WebRoot文件夹下
Blazeds入门教程.doc
最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的...
blazeds4整合spring3 这是我新近研究的方法 与整合spring2.5以下的方法有不同了,(看过一些教程觉得不是很好,用...适合新手入门和老手改用spring3来做项目。 如要交流可以加我:48724810 by焚香槟榔...2010/12/18
Spring BlazeDS Integration,Flex通过remoteObject与java通讯,附带例子 文档
NULL 博文链接:https://itshenry.iteye.com/blog/618258
BlazeDS入门:HTTP Service BlazeDS入门:HTTP Service BlazeDS入门:HTTP Service
flex 工具 blazeds
blazeds与spring的结合使用项目源码
blazeDS war包及Flex结合blazeDS的入门程序及操作步骤比较适合入门选手
Flex使用blazeds和java交互数据。 blazeds包和使用的详细步骤。 Flex blazeds 使用步骤、blazeds_bin_3-0-0-544.zip、blazeds.war、
Flex Blazeds入门教程 写的很不错的教程