`
碧海山城
  • 浏览: 192638 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Blazeds文档(二)-------Blazeds体系结构(一)

阅读更多

二、Blazeds体系结构



Blazeds
体系结构

       
一个Blazeds应用包含了一个运行在浏览器或者Adobe AIR的客户端应用并且和J2EE应用服务端通信。客户端可以是Flex也可以是结合FlexHTML/JavaScript的应用程序。

 

整个体系主要包括通道、端点、消息、服务、目的地、适配器等,把这些搞懂也就差不多了。通道使得组件能够和Blazeds服务端的端点通信,将请求送到目的地端点和通道是相互映射的

1.
Blazeds客户端体系结构

       Blazeds
使用一个基于消息的框架与服务端结合。这个框架使用通道封装了Flex程序和Blazeds服务端之间的连接。下面是Blazeds客户端的结构




 


      
以下Flex组件和Blazeds服务端结合:
       . RemoteObject
       • HTTPService
       • WebService
       • Producer
       • Consumer
      
所有的这些组件都包含在Flex SDKrpc.swc组件库中。

      
尽管RemoteObjectProducerConsumer包含在Flex SDK中,他们仍然需要一个服务端来反编译出他们发送的消息。BlazedsLiveCycle Data Services ES服务就是两个这样的服务端。当然Flex应用程序可以不使用Blazeds这种中间层而是直接使用HTTP Service或者Web Service来调用远程服务

2.0
通道和通道设置

        Flex
组件使用通道和Blazeds服务端交互。一条通道包含多条道路,他们的基础功能就是提供Flex客户端和Blazeds服务端的交流。通道中的道路都是按性能排序的。Flex组件会尝试连接第一条道路,不过这并不能保证一定能连接,有可能使用的还是道路中后面的那几条。它会搜寻通道中的道路知道连接上或者已经没有连接。


       
通道封装了Flex组件和Blazeds服务端之间的连接方式。概念上来说,通道是Flex组件下面的组件,他们处理组件和Blazeds服务端之间的交互。他们和Blazeds服务端上相应的端点通信。

 
        Flex
客户端使用不同的通道类型。例如AMFChannelHTTPChannel。通道选择有很多的因素,包括你的程序构建的类型。如果你想要使用无二进制压缩的方式传输,可以使用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.1flex组件指定通道

 

如果你通过-services选项指定services-config.xml文件来编译MXML文件,那么组件(RemoteObjectHTTPService等等)会自动指定一个或者多个通道配置实例。

   

不过如果你没有加这个编译参数,或者想自己覆写编译项的行为,那么你可以在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在服务端的核心。在端点经过初步的处理请求并且将提炼出来的消息传递给MessageBrokerMessageBroker查看消息的目的地,然后将他传递过去。如果目的地有安全现在,他就在传递之前运行检查证明。


服务和目的地

       
服务和目的地是消息在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

   

  • 大小: 22.7 KB
  • 大小: 22.5 KB
分享到:
评论
6 楼 ibelink 2009-10-28  
说实话,我看了还是觉得云里雾里的。。。
5 楼 碧海山城 2009-08-31  
niva 写道
有错别字难免,别在关键地方写错别字啊,
“否则,messagebroker就不能床底客户端请求到端点。”这说的是什么啊?


马上改正,抱歉
4 楼 niva 2009-08-31  
有错别字难免,别在关键地方写错别字啊,
“否则,messagebroker就不能床底客户端请求到端点。”这说的是什么啊?
3 楼 zhx831121 2009-07-30  
不错 ,新手学习了
2 楼 raymond2006k 2009-02-17  
很好。介绍简明扼要;看过基本就了解BlazeDS架构和工作原理了。
1 楼 lookdd1 2009-01-05  
好文章,学习了。

相关推荐

    blazeds-bin-3.3.0.22497.zip

    这个版本“blazeds-bin-3.3.0.22497.zip”是BlazeDS的一个特定发行版,包含了运行和部署BlazeDS所需的所有组件。 在解压后的文件中,我们看到两个关键文件: 1. **blazeds.war**:这是一个Web应用归档文件(Web ...

    blazeds-turnkey-4.0.0.14931

    BlazeDS是Adobe公司开发的一款开源项目,它主要提供了一个基于服务器的解决方案,用于实现Java应用程序与客户端的Flex应用之间的远程调用(Remoting)和Web消息传递(Messaging)。这个项目的目标是帮助开发者构建富...

    blazeds-bin-4.0.1.17657.zip

    这个“blazeds-bin-4.0.1.17657.zip”压缩包包含了BlazDS的二进制版本,这是一个开放源代码的服务器端技术,由Adobe开发并广泛应用于构建富互联网应用程序(RIA)。它的主要目标是提供数据集成和交互能力,使得基于...

    blazeds-turnkey-4.0.0.14931第四卷

    blazeds-turnkey-4.0.0.14931第四卷(共四卷) 含tomcat

    blazeds-core-3.2.0.3978.jar

    blazeds-core-3.2.0.3978.jar blazeds-core-3.2.0.3978.jar

    blazeds-bin-4.0.0.15974.zip

    Blazeds-bin-4.0.0.15974.zip是一个包含Adobe BlazeDS库的压缩包,专为Flex开发者设计,旨在提供强大的数据集成和远程服务访问功能。BlazeDS是Adobe官方推出的一个开源项目,它允许Flex客户端与Java后端服务器之间...

    blazeds-turnkey-4.0.0.14931.zip

    在压缩包内的文件列表中,"blazeds"可能是指解压后的目录,其中包含了Blazeds的安装文件、文档、示例代码等资源。开发者通常会按照官方提供的安装指南进行部署,配置Tomcat服务器,然后将Blazeds的库文件添加到Flex...

    blazeds-turnkey-4.0

    在提供的`blazeds-turnkey-4.0.0.14931.zip`压缩包中,我们可以找到以下关键资源: 1. `blazeds-turnkey-readme.htm`:这是项目的基本使用指南,详细介绍了如何配置和运行BlazeDS Turnkey,包括系统需求、安装步骤...

    blazeds一系列的jar包-4.0

    包含blazeds-common-4.0.0.14931.jar、blazeds-core-4.0.0.14931.jar、blazeds-proxy-4.0.0.14931.jar、blazeds-remoting-4.0.0.14931.jar

    blazeds 3-0-0-544

    BlazeDS的核心功能是提供了轻量级的消息传输服务,它基于AMF(Action Message Format),这是一种高效的二进制序列化协议,能够将复杂的数据结构快速地在Flex客户端与Java服务器之间进行传递。通过AMF,开发者可以...

    blazeds-turnkey-4.0.0.14931.zip分卷二

    blazeds-turnkey-4.0.0.14931.zip分卷二

    blazeds-turnkey-4.0.0.14931第二卷

    blazeds-turnkey-4.0.0.14931含tomcat 第二卷(共四卷)

    blazeds-turnkey-4.0.0.14931第一卷

    blazeds-turnkey-4.0.0.14931含tomcat 第一卷(共四卷)

    flex-src.zip_blazeds_blazeds src download_blazeds-bin-4._flex_tr

    2. **AMF协议**:AMF是BlazeDS用来高效传输数据的一种二进制格式,它能够将ActionScript对象序列化为网络传输友好的格式。在“inventory”、“testdrive-101”等子目录中,可能包含使用AMF进行数据交换的相关示例或...

    blazeds-turnkey-4.0.14931

    Blazeds-Turnkey是Adobe官方推出的一款强大的服务器端解决方案,专为Flex应用程序提供数据集成、消息传递和Remoting服务。这个项目的核心是使开发者能够更便捷地在Flex客户端和Java后端之间建立连接,实现数据的双向...

    Blazeds+ds-consele+samples

    Blazeds+ds-consele+samples 是一个与Flex开发密切相关的资源集合,主要用于搭建Java和Flex之间的通信桥梁。BlazeDS是Adobe提供的一款开源服务器端技术,它使得 Flex 客户端能够与Java应用程序服务器进行实时数据...

    spring-blazeds-reference.rar_blazeds-bin-4._flex

    BlazeDS是Adobe提供的一个中间件,用于实现Spring和Flex之间的通信。它提供了AMF(Action Message Format)协议,可以高效地传输数据,减少网络延迟。BlazeDS通过HTTP和WebSocket等协议,将Spring服务暴露为Remoting...

    blazeds-turnkey-4.0.0.14931第三卷

    blazeds-turnkey-4.0.0.14931第三卷(共四卷) 含tomcat

    blazeds-bin-3.3.0.20776

    BlazDS的全称是“Blaze Data Services”,在标题中提到的“blazeds-bin-3.3.0.20776”是BlazDS的一个特定版本号,这通常意味着包含了该版本的所有组件和库。 1. **Flex与Java通信**: Flex是一种用于构建富互联网...

Global site tag (gtag.js) - Google Analytics