Flex与.NET互操作(十二)

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()方法来更新共享对象里的数据。

时间: 2024-12-29 21:52:08

Flex与.NET互操作(十二)的相关文章

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

FluorineFx所提供的远程共享对象(Remote Shared Objects)和FMS的共享对象的功能是一样,对于熟悉FMS开发的朋友来说,学习FluorineFx的远程共享对象是非常简单的.       共享对象可以在服务器端创建,也可以在客户端创建.在客户端创建共享对象的方法和使用FMS开发是一样的,创建一个 NetConnection对象,通过该对象的connect()方法连接到服务器,然后通过SharedObject.getRemote()方法就可以在客户端创建一个远程共享对象.

Flex与.NET互操作(十五)

Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传 前几天一位朋友问我一个问题,他说:"我用HTTP接口或是WebService接口可以实现图片上传功能,那么用FluorineFx如何实现图片 上传功能呢?",其实仔细看官方文档和示例程序的自己都可以找到答案,实现上传可以有很多种实现,这里我以官方所提供是示例为基 础稍加改动,通过ByteArray类实现图片上传. 首先建立FluorineFx库和网站,在远程服务器类里添加一个处理文

Flex与.NET互操作(十)

Flex与.NET互操作(十):基于FluorineFx.Net的及时通信应用(Real-time Messaging Applications)(一) 使用FluorineFx.Net开发的每一个实时通讯功能应用都拥有一个应用程序适配器(ApplicationAdapter),用来管理整个实时通讯应用的生 命周期,以及接受和拒绝客户端的连接等.应用程序适配器对象也就相当于是一个Flash媒体服务器应用程序的对象. 使用 FluorineFx.Net开发及时通信应用,我们可以通过ASP.NET网

Flex与.NET互操作(十四):FluorineFx的AMF(Action Message Format)协议通信

AMF(Action Message Format)在开发Flash/Flex应用中使用频率是非常高的,相对普通的HTTP.WebService的SOAP等多种数据通信方式的效 率更高,有人曾经做过这方面的测试,详细可以访问:http://xinsync.xju.edu.cn/index.php/archives/2162.本文将结合FluorineFx来提供 通信服务接口,在客户端通过Flex来访问,简单的介绍下关于使用FluorineFx的AMF(Action Message Format)

Flex与.NET互操作(十):FluorineFx.Net的及时通信应用(ApplicationAdapter)(一)_Flex

应用程序适配器对象也就相当于是一个Flash媒体服务器应用程序的对象. 使用FluorineFx.Net开发及时通信应用,我们可以通过ASP.NET网站来宿主,一个ASP.NET网站可以承载多个实时通讯应用程序.这些应用程序都存储ASP.NET网站的根目录下指定文件夹的根目录中.如下图示:                                       在开发FluorineFx的及时通信应用的时候,按照FluorineFx的目录结构配置ASP.NET的站点目录是非常简单的,只需要在

Flex与.NET互操作(十一)

Flex与.NET互操作(十一):基于FluorineFx.Net的及时通信应用(Remote Procedure Call)(二) FluorineFx.NET提供了完善的RPC(Remote Procedure Call)功能,无论是通过Flash还是Flex开发的客户端应用(.swf)都可以非常简单方便 的采用RPC的方式调用.NET的服务器端方法,.NET的服务器端同样也可以非常方便的呼叫客户端,调用客户端的方法(比如实现系统广播). 一.客户端的RPC(客户端调用服务器端) 要想实现客

Flex与.NET互操作(三):基于WebService的数据访问(下)

在上一篇文章<Flex与.NET互操作(二):基于WebService的数据访问(上) >中介绍了通过<mx:WebService>标签来访问Webservice. 实际上我们也可以通过编程的方式动态的访问WebService,Flex SDK为我们提供了WebService类. 使用WebService类来访问WebService其实也就是将<mx:WebService>标签的属性通过类对象的属性形式来表示,相比之下使用 WebService类比使用<mx:We

网页动画的十二原则

  作为前端的设计师和工程师,我们用 CSS 去做样式.定位并创建出好看的网站.我们经常用 CSS 去添加页面的运动过渡效果甚至动画,但我们经常做的东西不会超过这些. 动效是一个有助于访客和消费者理解我们设计的强有力工具.这里有些原则能最大限度地应用在我们的工作中. 迪士尼经过基础工作练习的长时间累积,在 1981 年出版的 The Illusion of Life: Disney Animation 一书中发表了动画的十二个原则 (12 Principles of Animation) .这些

Swift语法专题十二——方法

Swift讲解专题十二--方法 一.引言         方法只是一个术语,其实就是将函数与特定的类型结合,类.结构体.枚举都可以定义方法,方法又分为实例方法和类型方法,类型方法类似于Objective-C中的类方法.Swift和Objective-C的一大不同是,Objective-C只有在类中可以定义方法. 二.实例方法基础         实例方法的语法和函数完全一致,其和具体类型的实例所关联,实例方法在调用时由类型的实例点语法进行调用来完成一些功能模块.示例如下: class Math