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

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

阅读更多

服务端FlexClientMessageClientFlexSession类的实例代表了Flex应用和服务端的连接。你可以使用这些对象管理FLEX应用程序和服务端的同步。

 

FlexClient, MessageClient, and FlexSession objects

 

FlexClient

 

每一个MXML或者ASFlex应用都被编译进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服务端2FlexClient实例被创建(一个SWF文件一个),但是只有一个FlexSession,因为两个tab共享同一个HTTP session

 

 

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

 

 

关于三者的监听器

 

BlazeDS服务端提供了下列监听器,来让你根据自己的逻辑来创建、销毁、以及改变三者的状态。

 

FlexClientListener

 

FlexClientAttributeListener

 

FlexClientBindingListener

 

FlexSessionListener

 

FlexSessionAttributeListener

 

FlexSessionBindingListener

 

MessageClientListener

 

 

 

数据序列化

 

       AS对象转换为Java对象



 


 
 

 

Java对象转换为AS对象

 

 



 

 



 



 

 

 

 

// Product.as

package samples.externalizable {

 

import flash.utils.IExternalizable;

import flash.utils.IDataInput;

import flash.utils.IDataOutput;

[RemoteClass(alias="samples.externalizable.Product")]

public class Product implements IExternalizable {

 

public function Product(name:String=null) {

this.name = name;

}

 

public var id:int;

public var name:String;

public var properties:Object;

public var price:Number;

 

public function readExternal(input:IDataInput):void {

name = input.readObject() as String;

properties = input.readObject();

price = input.readFloat();

}

 

public function writeExternal(output:IDataOutput):void {

output.writeObject(name);

output.writeObject(properties);

output.writeFloat(price);

}

}

}

 

// Product.java

package samples.externalizable;

import java.io.Externalizable;

import java.io.IOException;

import java.io.ObjectInput;

import java.io.ObjectOutput;

import java.util.Map;

 

public class Product implements Externalizable {

 

private String inventoryId;

public String name;

public Map properties;

public float price;

 

public Product(){

}

 

public String getInventoryId() {

return inventoryId;

}

 

public void setInventoryId(String inventoryId) {

if (inventoryId != null && inventoryId.startsWith("X")){

this.inventoryId = inventoryId;

}else{

throw new IllegalArgumentException("3rd party product

inventory identities must start with 'X'");

}

}

 

public void readExternal(ObjectInput in) throws IOException,

ClassNotFoundException {

name = (String)in.readObject();

properties = (Map)in.readObject();

price = in.readFloat();

setInventoryId(lookupInventoryId(name, price));

}

 

public void writeExternal(ObjectOutput out) throws IOException {

// Write out the client properties from the server representation

out.writeObject(name);

out.writeObject(properties);

out.writeFloat(price);

}

 

private static String lookupInventoryId(String name, float price) {

String inventoryId = "X" + name + Math.rint(price);

return inventoryId;

}

}

 

 

 

  • 大小: 42.8 KB
  • 大小: 115 KB
  • 大小: 67.6 KB
  • 大小: 159.8 KB
  • 大小: 40.1 KB
  • 大小: 42.8 KB
分享到:
评论

相关推荐

    blazeds开发文档

    在Blazeds体系中,几个关键组件构成了核心,它们包括通道(Channels)、端点(Endpoints)、消息(Messages)、服务(Services)、目的地(Destinations)和适配器(Adapters)。理解这些组件的工作方式对于深入学习...

    Flex教程-PPT文档

    5. **Flex框架**:包括 Cairngorm、BlazeDS、PureMVC等,这些框架为Flex应用提供了结构化的开发模式,帮助开发者更好地组织代码和管理应用程序的生命周期。 6. **Services与Remoting**:Flex支持与服务器端进行数据...

    Spring_3.x企业应用开发实战 目录

    - **1.4 Spring体系结构** - **核心容器**:包含 Spring 框架的基本组成部分,如 BeanFactory 和 ApplicationContext。 - **数据访问/集成**:提供数据访问层的支持,包括 JDBC、ORM 和 OXM 等。 - **Web**:为 ...

    深入浅出Flex,经典教程

    “Blazeds体系结构.doc”会深入剖析BlazeDS的架构设计,包括其组件、工作原理以及与其他Adobe技术的配合。这有助于读者理解BlazeDS如何在服务器端和客户端之间建立通道,实现数据推送和服务调用。 “新建 Microsoft...

    java面试资料

    在了解具体的Struts框架工作原理之前,我们需要先明确Struts框架的基本结构和工作流程。 **客户端请求处理流程:** 1. **客户端发起请求:** 用户通过浏览器等客户端向服务器发送HTTP请求。 2. **ActionServlet...

    Flex体系架构剖析

    Flex体系架构是Adobe公司开发的一款用于构建富互联网应用程序(Rich Internet Applications, RIA)的技术框架。...《Flex体系架构剖析》这份文档,无疑将帮助你更深入地探索Flex的世界,提升你的开发技能。

    完整的Flex中文帮助文档 PDF格式

    这个“完整的Flex中文帮助文档”包含了对Flex全面的介绍、教程、API参考和指南,对于学习和理解Flex技术体系至关重要。下面将详细阐述Flex的核心知识点。 1. **Flex架构**:Flex是基于Flash Player或Adobe AIR运行...

    Flex3Cookbook.rar

    在学习和使用Flex3时,你需要掌握ActionScript的基础语法、MXML的结构以及Flex组件体系。此外,了解如何配置和使用BlazeDS或GraniteDS进行Java与Flex间的数据交换也是关键。对于Java开发者,还需要熟悉Servlet、JSP...

Global site tag (gtag.js) - Google Analytics