Flex与.NET互操作(七):了解FluorineFx的环境配置(远程对象、网关、通道、目的地)...
注:本文內(nèi)容原本計(jì)劃在上一篇《Flex與.NET互操作(六):Flex和.NET協(xié)同開(kāi)發(fā)利器FluorineFx?》中寫出,考慮到寫在一起文章內(nèi)容太長(zhǎng)故分為兩篇。
?????Flex中的遠(yuǎn)程對(duì)象訪問(wèn),也就是服務(wù)端提供一個(gè)遠(yuǎn)程服務(wù)對(duì)象(RemotingService Object),在Flex客戶端通過(guò)相應(yīng)的訪問(wèn)技術(shù)去調(diào)用遠(yuǎn)程對(duì)象的過(guò)程。
?????在本系列文章的前面幾篇文章中所介紹的訪問(wèn)Webservice的方法,也就是一種遠(yuǎn)程對(duì)象方法,只不過(guò)他是基于WEB服務(wù)(WebServie)的遠(yuǎn)程訪問(wèn),不是基于遠(yuǎn)程對(duì)象(Remoting Object)的的遠(yuǎn)程訪問(wèn)。要想直接實(shí)現(xiàn)基于對(duì)象的遠(yuǎn)程訪問(wèn)是比較麻煩的,然后FluorineFx則專門為我們提供了該功能,通過(guò)FluorineFx的核心庫(kù)來(lái)開(kāi)發(fā)遠(yuǎn)程對(duì)象(Remoting Object)服務(wù),具體是怎么實(shí)現(xiàn)的呢?FluorineFx要求為遠(yuǎn)程對(duì)象提供[RemotingService]標(biāo)記來(lái)提供遠(yuǎn)程對(duì)象服務(wù),看看下面的RemotingServiceAttribute的詳細(xì)定義:
1?[AttributeUsage(AttributeTargets.Class,?AllowMultiple?=false)]2?publicsealedclassRemotingServiceAttribute?:?Attribute3?{4?publicRemotingServiceAttribute();5?publicRemotingServiceAttribute(stringserviceName);6?}?????從上一篇文章中的示例代碼可以看出,使用.NET(c#)定義了一個(gè)Sample的遠(yuǎn)程對(duì)象服務(wù)類,并為其指定了[RemotingService],詳細(xì)如下:
1?[RemotingService("Fluorine?sample?service")]2?publicclassSample3?{4?publicSample()5?{6?}7?8?publicstringEcho(stringtext)9?{10?return"Gateway?echo:?"+text;11?}12?}?????從上一篇文章中搭建FluorineFx與.NET的開(kāi)發(fā)環(huán)境過(guò)程中就已經(jīng)出現(xiàn)過(guò)Flex客戶端調(diào)用FluorineFx的遠(yuǎn)程對(duì)象示例,下面我們?cè)趤?lái)看看這個(gè)示例:
1?<mx:RemoteObject?id="service"destination="fluorine"2?source="FlexDotNet.ServiceLibrary.Sample">3?<mx:method?name="Echo"result="onResult(event)">4?</mx:method>5?</mx:RemoteObject> 1?<mx:Script>2?<![CDATA[3?import?mx.rpc.events.ResultEvent;4?internalfunction?onClick():void5?{6?service.Echo(txtInput.text);7?}8?9?internalfunction?onResult(evt:ResultEvent):void10?{11?txtResult.text?=evt.result.toString();12?}13?]]>14?</mx:Script>?????如上可實(shí)現(xiàn)遠(yuǎn)程對(duì)象訪問(wèn),通過(guò)Flex的非可視化組件<mx:RemoteObject>進(jìn)行遠(yuǎn)程對(duì)象連接。其中的source屬性指定遠(yuǎn)程對(duì)象,格式為全限定名(命名空間+類名)。destination屬性是非常重要的,這決定了Flex客戶端是否可以正確的訪問(wèn)到遠(yuǎn)對(duì)象,相關(guān)配置如下:
1?<destination?id="fluorine">2?<properties>3?<source>*</source>4?</properties>5?</destination>?????在<mx:RemoteObject>組件內(nèi)部使用<mx:Mothod>組件配置遠(yuǎn)程對(duì)象中的方法,詳細(xì)見(jiàn)本文前面部分。要真實(shí)實(shí)現(xiàn)遠(yuǎn)程對(duì)象訪問(wèn)的核心是對(duì)象的適配器和連接通道:
1?<?xml?version="1.0"encoding="UTF-8"?>2?<service?id="remoting-service"3?class="flex.messaging.services.RemotingService"4?messageTypes="flex.messaging.messages.RemotingMessage">5?<adapters>6?<adapter-definition?id="dotnet"class="FluorineFx.Remoting.RemotingAdapter"default="true"/>7?</adapters>8?9?<default-channels>10?<channel?ref="my-amf"/>11?</default-channels>12?13?<destination?id="fluorine">14?<properties>15?<source>*</source>16?</properties>17?</destination>18?</service>?????實(shí)際開(kāi)發(fā)中我們可以進(jìn)行自定義通信通道,默認(rèn)情況下是使用FluorineFx為我們提供的默認(rèn)連接通道:
1?<channels>2?<channel-definition?id="my-amf"class="mx.messaging.channels.AMFChannel">3?<endpoint?uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx"class="flex.messaging.endpoints.AMFEndpoint"/>4?<properties>5?<!--<legacy-collection>true</legacy-collection>?-->6?</properties>7?</channel-definition>8?</channels> 與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Flex与.NET互操作(七):了解FluorineFx的环境配置(远程对象、网关、通道、目的地)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微粒贷逾期5天了 会不会通知家人
- 下一篇: 信用卡等级划分额度