Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)
远程共享对象(Remote Shared Objects) 可以用来跟踪、存储、共享以及做多客户端的数据同步操作。只要共享对象上的数据发生了改变,将会把最新数据同步到所有连接到该共享对象的应用程序客户端。 Flex与.NET互操作的核心在于 FluorineFx.Net 框架,它允许 Flex 客户端与 .NET 服务端进行高效的数据交换。本篇主要关注的是 Remote Shared Objects(远程共享对象),这是一个强大的功能,用于在多客户端之间实现数据同步。 远程共享对象(Remote Shared Objects, RSOs)是一种在分布式环境中同步数据的技术。它们可以存储和跟踪数据,并确保所有连接到同一共享对象的客户端都能即时获取最新的数据变化。当RSO中的数据发生变化时,这些更改会自动传播到所有相关的客户端,无需手动刷新或请求更新。 在 Flex 客户端,创建远程共享对象的过程相对简单。你需要创建一个 `NetConnection` 对象并连接到服务器。一旦连接成功,可以通过 `SharedObject.getRemote()` 方法创建远程共享对象。以下是一个示例: ```actionscript 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; } ``` 在 Flex 的服务器端,使用 FluorineFx 实现远程共享对象的方式与 Flash Media Server (FMS) 不同。FluorineFx 提供了 `ISharedObjectService` 接口,其中的 `CreateSharedObject()` 方法用于创建远程共享对象。`ApplicationAdapter` 类实现了这个接口,允许你这样创建共享对象: ```csharp public bool CreateSharedObject(IScope scope, string name, bool persistent){ ISharedObjectService service = (ISharedObjectService)ScopeUtils.GetScopeService(scope, typeof(ISharedObjectService)); return service.CreateSharedObject(scope, name, persistent); } ``` 在服务器端获取或更新共享对象的数据时,FluorineFx 使用不同的方法,不像客户端那样使用 `setProperty()`。在服务器上,你可以通过 `IAttribute` 或 `ISharedObject` 的相关方法来读写属性。 例如,如果你想在服务器端更新共享对象,可以这样做: ```csharp ISharedObject users_so = GetSharedObject(connection.Scope, "OnLineUsers"); if (users_so == null){ CreateSharedObject(connection.Scope, "OnLineUsers", false); users_so = GetSharedObject(connection.Scope, "OnLineUsers"); } // 更新共享对象 users_so.Data["onlineCount"] = newUserCount; users_so.Save(); ``` 通过这样的方式,Flex 客户端和 .NET 服务端能够高效地协同工作,实现实时的数据同步和通信。这对于需要实时更新数据的多人在线游戏、聊天室或协作应用等场景特别有用。FluorineFx.Net 提供了一种强大而灵活的框架,使得跨平台的富互联网应用程序开发变得更加容易。
剩余6页未读,继续阅读
- 粉丝: 10
- 资源: 971
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助