当前位置: > 网站建设 > Flex教程 >

Flex与.NET互操作(十二)

时间:2012-03-25 | 栏目:Flex教程 | 点击:

Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)

远程共享对象(Remote Shared Objects) 可以用来跟踪、存储、共享以及做多客户端的数据同步操作。只要共享对象上的数据发生了改变 ,将会把最新数据同步到所有连接到该共享对象的应用程序客户端。FluorineFx所提供的远程共享对象(Remote Shared Objects)和FMS的共享 对象的功能是一样,对于熟悉FMS开发的朋友来说,学习FluorineFx的远程共享对象是非常简单的。

共享对象可以在服务器端创建,也 可以在客户端创建。在客户端创建共享对象的方法和使用FMS开发是一样的,创建一个NetConnection对象,通过该对象的connect()方法连接到 服务器,然后通过SharedObject.getRemote()方法就可以在客户端创建一个远程共享对象。如下实例代码:

private function  connectionServer():void
{
    var nc:NetConnection = new NetConnection();
 nc.connect ("rtmp://localhost:1617/SOAPP","username","password")
    nc.addEventListener (NetStatusEvent.NET_STATUS,onStatusHandler);
 nc.client = this;
 }

private function  onStatusHandler(event:NetStatusEvent):void
{
    if(event.info.code ==  "NetConnectin.Connect.Success")
    {
        createSharedObject();
 }
}

private function createSharedObject():void
{
    var so:SharedObject = SharedObject.getRemote ("OnLineUsers",nc.uri,false);
 so.addEventListener(SyncEvent.SYNC,onSyncHandler);
 so.connect (this.nc);
 so.client = this;
 }

private function onSyncHandler(event:SyncEvent):void
{
   //.....do other
}

在FluorineFx的服务器端创建远程共享对象和FMS有很大的区别,FluorineFx的ISharedObjectService接口提供了专门用于 创建远程共享对象的方法CreateSharedObject(),ApplicationAdapter实现了此接口方法。定义如下:

public bool  CreateSharedObject(IScope scope, string name, bool persistent)
{
      ISharedObjectService service =  (ISharedObjectService)ScopeUtils.GetScopeService(scope, typeof(ISharedObjectService));
 return  service.CreateSharedObject(scope, name, persistent);
 }

如果要在服务器端创建远程共享对象,直接调用 ApplicationAdapter类中的CreateSharedObject()方法就可以。如下在FluorineFx服务器端创建远程共享对象的代码块:

ISharedObject users_so = GetSharedObject(connection.Scope, "OnLineUsers");
if (users_so ==  null)
{
       //创建共享对象
        CreateSharedObject(connection.Scope,  "OnLineUsers", false);
 users_so = GetSharedObject(connection.Scope, "OnLineUsers");
 }

要想更新共享对象里的数据客户端还是使用setProperty()方法,而FluorineFx的服务器更新共享对象的方法则与FMS不一样, 使用的是FluorineFx.Messaging.Api.IAttributeStore接口提供的SetAttribute()和RemoveAttribute()方法来更新共享对象里的数据。

您可能感兴趣的文章:

相关文章