Flex BlazeDS体系结构图

转[url]http://www.alisdn.com/wordpress/?p=578[/url]
【基于消息的框架】
Blazeds使用基于消息的框架在客户端和服务端之间发送和返回数据。
Blazeds在它们之间使用了两个交换模式:
1,第一个模式是请求—响应模式,客户端发送请求给服务端处理。服务端返回处理结果给客户端。RPC Service就是使用这个模式。
2,第二个模式是发布—订阅模式,即服务端发布消息设置,客户端订阅了去接收它们。Messaging Service使用这个模式将数据推给“感兴趣“的客户端。
BlazeDS整体结构图:
[img]http://keren.iteye.com/upload/attachment/102977/107152e5-8a21-366e-93be-6736cc4816cb.jpg[/img]
【BlazeDS提供了三种关键的服务】
1,Remoting Service。提供一种客户端直接调用服务器端java方法的方式。具体配置:remote-service.xml.
2,Message Service 。提供一种基于发布/订阅模式的消息服务,可以用于实现实时的数据推送或协作的flex应用。具体配置:message-service.xml.
3,Proxy Service。通过proxy service,使得flex应用可以实现安全的,受限的跨域访问, 也就是说它让您的Flex应用程序访问的服务可以处于不同的域,而不需要在目标域里配置crossdomain.xml权限文件。具体配置:proxy-config.xml.
BlazeDS服务是一个J2EE的web容器,Flex客户端通过channel发送一个请求,请求在BlazeDS服务端会到达一个endpoint,从endpoint开始,请求会通过一条Java对象处理链,包括:MessageBroker, service, destination, adapter,结构如下:
BlazeDS服务器端结构图:
[img]http://keren.iteye.com/upload/attachment/102979/a3332ce0-8d22-3d27-9e2f-afed9af175ae.jpg[/img]
【MessageBroker】
MessageBroker负责转发消息到service,接收到消息时,MessageBroker查看消息消息的destination,并把消息转发给目标service。如果destination有安全限制保护,在转发之前,MessageBroker会执行身份认证和授权检查。 MessageBroker的配置在BlazeDS应用的WEB-INF/flex/services-config.xml文件中
【Services 和 destinations】
Services 和 destinations在BlazeDS 服务中,是消息处理链的下一环节。
BlazeDS 包括四种一一对应的services 和 destinations:
1,RemotingService和RemotingDestination
2,HTPProxyService和HTTPProxyDestination
3,MessageService和MessageDestination
不同的Flex组件的请求是由不同的Services和destinations进行处理的,对应关系如下:
HTTPService 和WebService与HTTPProxyService/HTTPProxyDestination
RemoteObject 和RemotingService/RemotingDestination
Producer /Consumerhe和MessageService/MessageDestination
services 和 destinations 可以在services-config.xml配置, 但是最好的做法是分别在下面的文件中进行配置:
RemotingService 在remoting-config.xml 中配置
HTTPProxyService 在the proxy-config.xml中配置
MessageService 在messaging-config.xml 中配置
【destinations配置】
<destination id="shoppingCart"><properties><source>com.mark.pojo.shoppingCart</source><scope>session</scope></properties></destination>


desitnation节点的scrop属性的可选值为application、session和request,指定了远程对象实例作用域。
1,如果作用域为request,那么服务器会为每一次请求都创建一个远程Java对象实例,request是默认的作用域。
2,如果作用域是session,服务器则为每一个会话创建一个共享的远程Java对象实例。通常来说,连接服务器的每一个浏览器实例构成了一个会话。例如,如果我们启动Firefox来访问连接LiveCycle Data Service的Flex应用,启动的Firefox就是一个浏览器实例。在该Firefox浏览器中,如果打开其他标签页也访问同一Flex应用,那么这些应用就处于同一会话中,共享同一远程对象实例。
3,如果作用域是application,那么服务器则为每一个Flex应用创建一个远程的Java对象实例。

限制远程访问Java对象的某些方法:
有些时候,远程Java对象定义了许多公共方法,但是我们也许并不希望这些方法都开放给Flex应用。在这种情况下,可以通过include-methods属性定义允许访问的方法列表,如果Flex应用试图访问该列表外的方法就会导致异常,在客户端会调用fault事件。
<destination id="shoppingCart"><properties><source>com.mark.pojo.shoppingCart</source><scope>session</scope><include-methods><method name="purchaseItem"/><method name="deleteItem"/></include-methods><exclude-methods><method name="purchaseItem"/></exclude-methods></properties></destination>
【Adapters】
当一个消息到达正确的destination时,destination会把消息发到相应的一个Adapter。Destination与Adapter的对应关系如下:
RemotingDestination使用JavaAdapter
HTTPProxyDestination使用HTTPProxyAdapter或SOAPAdapter
MessageDestination使用ActionScriptAdapter或JMSAdapter

【Flex 通讯组件】
Flex提供了RemoteObject,HTTPService,WebService,Producer,Consumer等可以与BlazeDS通讯的组件,这些组件都包含在了Flex SDK中,是Flex组件库的一部分。
【Channels Set】
Channels封装了Flex组件与BlazeDS服务之间的连接,是处于Flex组件之下的一个通层。
BlazeDS提供了AMFChannel和HTTPChannel。Flex客户端可以使用不同类型的Channel与服务器通讯。Channel是在services-config.xml中配置.
【amf协议】Amt全称是action message format,它是一种二进制格式,专用于as和服务器端通讯,比http通讯要快很多,支持多种数据类型,如java,.net,php等。
BlazeDS客户端结构图:
[img]http://keren.iteye.com/upload/attachment/102981/e4feeeab-4832-3b56-9996-b1cecba08c33.jpg[/img]

其他参考:
Flex BlazeDS+Spring RemoteObject使用案例
[url]http://keren.iteye.com/admin/blogs/376886[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值