《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 面向Silverlight的WCF服務(wù)優(yōu)化策略的設(shè)計(jì)與實(shí)現(xiàn)
面向Silverlight的WCF服務(wù)優(yōu)化策略的設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:微型機(jī)與應(yīng)用2011年第20期
張學(xué)林, 鐘志農(nóng),, 景 寧,, 薛 丹
(國(guó)防科學(xué)技術(shù)大學(xué) 電子科學(xué)與工程學(xué)院, 湖南 長(zhǎng)沙 410073)
摘要: WCF服務(wù)與Silverlight技術(shù)相結(jié)合,,為高效開(kāi)發(fā)RIA應(yīng)用提供了新的途徑。針對(duì)WCF服務(wù)技術(shù)在基于Silverlight的Web應(yīng)用開(kāi)發(fā)中所面臨的問(wèn)題,,對(duì)WCF服務(wù)的Silverlight客戶端調(diào)用,、WCF服務(wù)繼承機(jī)制的實(shí)現(xiàn)以及異步調(diào)用機(jī)制的同步化等關(guān)鍵技術(shù)進(jìn)行研究,提出了相關(guān)的優(yōu)化策略和實(shí)現(xiàn)方法,,為基于WCF服務(wù)與Silverlight技術(shù)高效開(kāi)發(fā)Web應(yīng)用奠定了基礎(chǔ),。
Abstract:
Key words :

摘   要: WCF服務(wù)與Silverlight技術(shù)相結(jié)合,為高效開(kāi)發(fā)RIA應(yīng)用提供了新的途徑,。針對(duì)WCF服務(wù)技術(shù)在基于Silverlight的Web應(yīng)用開(kāi)發(fā)中所面臨的問(wèn)題,,對(duì)WCF服務(wù)的Silverlight客戶端調(diào)用,、WCF服務(wù)繼承機(jī)制的實(shí)現(xiàn)以及異步調(diào)用機(jī)制的同步化等關(guān)鍵技術(shù)進(jìn)行研究,提出了相關(guān)的優(yōu)化策略和實(shí)現(xiàn)方法,,為基于WCF服務(wù)與Silverlight技術(shù)高效開(kāi)發(fā)Web應(yīng)用奠定了基礎(chǔ),。
關(guān)鍵詞: WCF; Silverlight,; RIA,; 服務(wù)調(diào)用

    WCF(Windows Communication Foundation)是微軟提出的一個(gè)面向服務(wù)的分布式分層架構(gòu),它整合了.Net平臺(tái)下所有與分布式系統(tǒng)有關(guān)的技術(shù),,為開(kāi)發(fā)各種不同環(huán)境下的分布式系統(tǒng)提供了一個(gè)統(tǒng)一,、高效的方法。Silverlight(銀光)是微軟全力打造的一個(gè)開(kāi)發(fā)面向富互聯(lián)網(wǎng)應(yīng)用程序(RIA)的基礎(chǔ)平臺(tái),,它改變了傳統(tǒng)Web應(yīng)用程序界面設(shè)計(jì)方式,,能夠開(kāi)發(fā)出具有專業(yè)圖形、音頻和視頻的Web應(yīng)用程序,,增強(qiáng)了用戶體驗(yàn),。因此WCF服務(wù)與Silverlight技術(shù)的有機(jī)結(jié)合,為高效開(kāi)發(fā)RIA應(yīng)用提供了一種新的途徑[1],。但WCF服務(wù)技術(shù)與Silverlight技術(shù)是兩種不同的技術(shù)體系,,在開(kāi)發(fā)基于Silverlight的Web應(yīng)用時(shí),常規(guī)的WCF服務(wù)技術(shù)不能完全適應(yīng)開(kāi)發(fā)的要求,,因此必須對(duì)其進(jìn)行優(yōu)化,。本文針對(duì)WCF服務(wù)技術(shù)在基于Silverlight的Web應(yīng)用開(kāi)發(fā)中所面臨的問(wèn)題,對(duì)WCF服務(wù)的Silverlight客戶端調(diào)用,、WCF服務(wù)繼承機(jī)制的實(shí)現(xiàn)以及異步調(diào)用機(jī)制的同步化等關(guān)鍵技術(shù)進(jìn)行研究,,提出了相關(guān)的優(yōu)化策略和實(shí)現(xiàn)方法。
1 Silverlight和WCF簡(jiǎn)介
1.1 WCF技術(shù)簡(jiǎn)介

    WCF是微軟基于SOA(Service Oriented Archit -ecture)推出的.Net平臺(tái)下的框架產(chǎn)品,,它代表了軟件架構(gòu)設(shè)計(jì)與開(kāi)發(fā)的一種發(fā)展方向,,在微軟的戰(zhàn)略計(jì)劃中也占有非常重要的地位。WCF是使用托管代碼建立和運(yùn)行面向服務(wù)(Service Oriented)應(yīng)用程序的統(tǒng)一框架,,它使得開(kāi)發(fā)者能夠建立一個(gè)跨平臺(tái)的安全,、可信賴、事務(wù)性的解決方案,,且能與已有系統(tǒng)兼容協(xié)作,。WCF是微軟分布式應(yīng)用程序開(kāi)發(fā)的集大成者,它整合了.Net平臺(tái)下所有與分布式系統(tǒng)有關(guān)的技術(shù),例如.Net Remoting,、ASMX,、WSE和MSMQ,功能十分強(qiáng)大。
    WCF的整體基礎(chǔ)框架包括服務(wù)端框架和客戶端框架兩個(gè)部分[2]:服務(wù)端框架主要將服務(wù)以終結(jié)點(diǎn)的形式暴露出來(lái)供潛在的用戶端消費(fèi),,并且接收處理客戶端服務(wù)請(qǐng)求,、激活服務(wù)對(duì)象、執(zhí)行相應(yīng)的操作并返回最終結(jié)果,;客戶端架構(gòu)顯得相對(duì)簡(jiǎn)單,,主要是通過(guò)服務(wù)代理完成服務(wù)請(qǐng)求和結(jié)果接收。二者的核心都是圍繞服務(wù)契約(ServiceContract)進(jìn)行的,。
    一個(gè)完整的WCF服務(wù)的應(yīng)用實(shí)例包括服務(wù)契約的定義,、服務(wù)的實(shí)現(xiàn),、服務(wù)的寄宿,、元數(shù)據(jù)的發(fā)布和導(dǎo)入、服務(wù)代理的創(chuàng)建和服務(wù)調(diào)用等步驟,。
1.2  Silverlight技術(shù)簡(jiǎn)介
    Microsoft Silverlight 是一種跨瀏覽器,、跨平臺(tái)的.NET Framework 實(shí)現(xiàn),用于為 Web 生成和提供下一代媒體體驗(yàn)和富互聯(lián)網(wǎng)應(yīng)用程序(RIA),。Silverlight 統(tǒng)一了服務(wù)器,、Web 和桌面的功能,統(tǒng)一了托管代碼和動(dòng)態(tài)語(yǔ)言,、聲明性編程和傳統(tǒng)編程以及 Windows Presentation Foundation (WPF) 的功能[3],。
    傳統(tǒng)的Web 應(yīng)用程序在瀏覽器中以HTML方式呈現(xiàn)界面,在Web 服務(wù)器端實(shí)現(xiàn)呈現(xiàn)邏輯控制和客戶端狀態(tài)維持,,造成界面頻繁刷新,、狀態(tài)維持困難、HTML 難以表達(dá)眾多媒體元素等問(wèn)題,。而實(shí)現(xiàn)RIA應(yīng)用的Silverlight 技術(shù),,使用XAML 語(yǔ)言描述多媒體界面,在客戶端實(shí)現(xiàn)呈現(xiàn)邏輯,,通過(guò)網(wǎng)絡(luò)與分布在Internet 中的Web 服務(wù)進(jìn)行通信,獲取數(shù)據(jù)資源[4],。
    Silverlight能夠開(kāi)發(fā)出具有專業(yè)圖形、音頻和視頻的Web應(yīng)用程序,,增強(qiáng)了用戶體驗(yàn),。Silverlight相當(dāng)于一個(gè)小型的.NET Framework,可以充分調(diào)用客戶端機(jī)器的處理運(yùn)算能力,,使得Web頁(yè)面展示如同C/S端程序一般,,并且實(shí)現(xiàn)了無(wú)刷新,帶來(lái)了更多的用戶視覺(jué)與操作體驗(yàn)。
2 基于Silverlight與WCF的Web應(yīng)用開(kāi)發(fā)框架
    傳統(tǒng)的Web應(yīng)用開(kāi)發(fā)一般采用典型的三層架構(gòu),,主要包括數(shù)據(jù)訪問(wèn)層,、業(yè)務(wù)邏輯層和表現(xiàn)層[5]。
    數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互即對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)增、刪,、改,、查等操作。在一定程度上驗(yàn)證數(shù)據(jù)的有效性和正確性,,但無(wú)法確定數(shù)據(jù)作用,,不負(fù)擔(dān)任何業(yè)務(wù)邏輯。
    業(yè)務(wù)邏輯層實(shí)現(xiàn)相應(yīng)業(yè)務(wù)邏輯數(shù)據(jù)的轉(zhuǎn)換處理以及生成,。對(duì)流入數(shù)據(jù)的有效性和正確性進(jìn)行驗(yàn)證,,并轉(zhuǎn)換成相應(yīng)的流出數(shù)據(jù),以達(dá)到業(yè)務(wù)邏輯目標(biāo),。
    表現(xiàn)層實(shí)現(xiàn)用戶與系統(tǒng)的交互,,直接驗(yàn)證數(shù)據(jù)的有效性和正確性。它接收用戶請(qǐng)求并返回響應(yīng)數(shù)據(jù)結(jié)果的展現(xiàn),,而具體的數(shù)據(jù)處理則轉(zhuǎn)到業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層進(jìn)行處理,。
    WCF服務(wù)技術(shù)與Silverlight技術(shù)的出現(xiàn),為開(kāi)發(fā)高擴(kuò)展性,、豐富用戶交互方式的Web應(yīng)用提供了更高效的方法,。其中WCF 技術(shù)提供了多種高效且高可用的企業(yè)級(jí)特性,可以把傳統(tǒng)的,、獨(dú)立的技術(shù)整合到一起,,提供了對(duì)可靠性、事務(wù)性,、并發(fā)管理,、安全性以及實(shí)例激活等技術(shù)的有力支持,同時(shí)提供了簡(jiǎn)單,、快捷的遠(yuǎn)程服務(wù)訪問(wèn)方式,。通過(guò)WCF技術(shù)可有效提高應(yīng)用系統(tǒng)的兼容性和擴(kuò)展性,并降低系統(tǒng)內(nèi)部模塊的耦合度,。Silverlight技術(shù)是面向RIA的客戶端,,為開(kāi)發(fā)豐富用戶交互方式的Web應(yīng)用提供了支撐。因此二者的結(jié)合能夠完全發(fā)揮各自的技術(shù)優(yōu)勢(shì),,完全符合RIA的技術(shù)要求,。為此,本文針對(duì)WCF服務(wù)技術(shù)以及Silverlight技術(shù)的特點(diǎn),,通過(guò)擴(kuò)展傳統(tǒng)的三層Web應(yīng)用開(kāi)發(fā)框架,,提出了基于Silverlight與WCF的Web應(yīng)用開(kāi)發(fā)框架,如圖1所示,。

 

 

    在此框架中,,核心是服務(wù)層和用戶控件層,。其中服務(wù)層通過(guò)WCF服務(wù)的方式對(duì)業(yè)務(wù)邏輯層對(duì)象進(jìn)行封裝,并為外部(表現(xiàn)層)提供了標(biāo)準(zhǔn)的接口,;表現(xiàn)層通過(guò)標(biāo)準(zhǔn)的通信方式調(diào)用WCF服務(wù)以實(shí)現(xiàn)對(duì)業(yè)務(wù)邏輯對(duì)象的訪問(wèn),。服務(wù)層的存在,降低了系統(tǒng)的耦合度,,提高了系統(tǒng)的擴(kuò)展性,,并通過(guò)WCF服務(wù)的方式提高了系統(tǒng)的應(yīng)用性能。
    用戶控件層直接支撐表現(xiàn)層,,在Silverlight客戶端環(huán)境下,,為表現(xiàn)層的開(kāi)發(fā)提供了各種Silverlight控件支持。在Web應(yīng)用客戶端開(kāi)發(fā)中,,只需對(duì)一些控件進(jìn)行組合擴(kuò)展,,便可開(kāi)發(fā)出各種滿足表現(xiàn)層頁(yè)面,展示需求用戶界面,;通過(guò)調(diào)用服務(wù)層的WCF服務(wù),,以實(shí)現(xiàn)對(duì)各種業(yè)務(wù)邏輯對(duì)象的訪問(wèn),。通過(guò)用戶控件層可大大提高用戶界面的開(kāi)發(fā)效率,。
    另外,在Web應(yīng)用開(kāi)發(fā)中,,可根據(jù)實(shí)際提取出一些通用方法和數(shù)據(jù)對(duì)象實(shí)體,,封裝為通用類庫(kù)和業(yè)務(wù)數(shù)據(jù)實(shí)體類,分別作為系統(tǒng)開(kāi)發(fā)的輔助工具類庫(kù)和全局共享的數(shù)據(jù)類,,以提高系統(tǒng)的開(kāi)發(fā)效率,。
3 面向Silverlight的WCF服務(wù)優(yōu)化
    Silverlight技術(shù)與WCF服務(wù)的結(jié)合符合當(dāng)前Web應(yīng)用的開(kāi)發(fā)趨勢(shì),但在面向Silverlight的Web應(yīng)用開(kāi)發(fā)環(huán)境下,,通用的WCF調(diào)用方法,、異步/同步調(diào)用機(jī)制以及WCF服務(wù)繼承機(jī)制不能完全適應(yīng)系統(tǒng)的開(kāi)發(fā)要求,因此針對(duì)Silverlight對(duì)WCF服務(wù)進(jìn)行優(yōu)化,成為基于Silverlight技術(shù)與WCF服務(wù)技術(shù)開(kāi)發(fā)Web應(yīng)用的關(guān)鍵,。
3.1 Silverlight客戶端調(diào)用WCF服務(wù)的設(shè)計(jì)實(shí)現(xiàn)
     在WCF服務(wù)框架下,,服務(wù)器端的服務(wù)不管客戶端服務(wù)代理的調(diào)用方式(同步或者異步),其設(shè)計(jì)與實(shí)現(xiàn)始終是一致的,。在客戶端,,WCF通過(guò)客戶端創(chuàng)建代理進(jìn)行服務(wù)的調(diào)用,服務(wù)代理對(duì)象的創(chuàng)建有兩種方式[2]:
  一種是代理構(gòu)造法,,即借助相關(guān)工具導(dǎo)入服務(wù)元數(shù)據(jù)生成代理類,。.NET環(huán)境下,面向Silverlight客戶端提供的一種通用方法(“添加服務(wù)引用”)就是這種方法,。此種方法實(shí)現(xiàn)簡(jiǎn)單,,但是由于服務(wù)代理是由統(tǒng)一的工具生成,,生成規(guī)則有限,一旦應(yīng)用系統(tǒng)客戶端代理需要統(tǒng)一地實(shí)現(xiàn)或更改,,如服務(wù)契約的繼承機(jī)制層級(jí)關(guān)系的恢復(fù),,就需要對(duì)每個(gè)服務(wù)代理進(jìn)行手工修改,尤其對(duì)于一次產(chǎn)生多個(gè)服務(wù)代理對(duì)象應(yīng)用的情形,,這種方式效率較低且難以形成調(diào)用機(jī)制的一致化,。
   另一種方法是通道工廠法,即直接使用通道工廠(ChannelFactory<T>)來(lái)調(diào)用服務(wù)操作。通道工廠法相對(duì)來(lái)說(shuō)具有更好的靈活性和擴(kuò)展性,,更適合于系統(tǒng)應(yīng)用的底層,。但是,這種方式需要客戶端共享服務(wù)契約接口的定義,,一般情況下直接共享服務(wù)契約,,客戶端需同步調(diào)用服務(wù)操作,而Silverlight客戶端不支持同步數(shù)據(jù)操作,,只支持異步數(shù)據(jù)操作,,因此在Silverlight客戶端需要生成異步方式服務(wù)契約代理類。
   為解決上述問(wèn)題,,本文提出采用通道工廠法靈活創(chuàng)建面向Silverlight的WCF服務(wù)的統(tǒng)一異步機(jī)制客戶端代理,。創(chuàng)建如圖2所示流程:首先發(fā)出服務(wù)操作調(diào)用請(qǐng)求,根據(jù)其服務(wù)類型確定服務(wù)地址即WCF服務(wù)的終結(jié)點(diǎn),,進(jìn)而判斷是否已生成相應(yīng)異步方式服務(wù)契約代理類,,如果沒(méi)有,則先生成相應(yīng)的服務(wù)代理類,,然后再直接創(chuàng)建相應(yīng)的通道工廠實(shí)例調(diào)用服務(wù)異步執(zhí)行相關(guān)操作,,最后返回操作結(jié)果。

    根據(jù)上述客戶端服務(wù)調(diào)用流程,,在客戶端保留了與服務(wù)器端共享一致的服務(wù)契約代碼,,暴露相關(guān)服務(wù)契約類型和操作,以便客戶端潛在地調(diào)用,,同時(shí)設(shè)計(jì)和實(shí)現(xiàn)了如圖3所示的客戶端服務(wù)調(diào)用框架:通過(guò)ServiceCallBuilder<TService>解析服務(wù)操作請(qǐng)求得到相應(yīng)的服務(wù)地址和調(diào)用服務(wù)的方法和參數(shù),,然后根據(jù)其服務(wù)地址和類型調(diào)用ServiceChannelFactory<TService>生成相應(yīng)的異步方式服務(wù)契約代理類,進(jìn)而創(chuàng)建相應(yīng)的異步信道工廠的服務(wù)信道,,最后結(jié)合ServiceCallBuilder<TService>解析的服務(wù)方法和參數(shù),,在ServiceCall<TService>中完成服務(wù)操作的異步調(diào)用。

    AsyncServiceInterfaceFactory和AsyncServiceInterface Generator是對(duì)Silverlight客戶端異步方式服務(wù)契約代理類自定義生成的實(shí)現(xiàn),。通過(guò)應(yīng)用Silverlight客戶端WCF代理自動(dòng)生成程序集文件(Silverlight.WCF.AutoGeneratedAsyncInterface.dll)采用反射機(jī)制,,利用AsyncServiceInterfaceFactory類加載WCF服務(wù)契約類型和Silverlight客戶端WCF代理自動(dòng)生成程序集文件,然后調(diào)用AsyncServiceInterfaceGenerator中的自定義的Generate方法生成異步服務(wù)契約代理類型和該類型中異步操作的方法,,并返回創(chuàng)建的異步服務(wù)契約代理類型,,為客戶端調(diào)用提供接口,。
    以這種方式實(shí)現(xiàn)客戶端代理服務(wù)的異步方式的可控生成,顯然比代理構(gòu)造法的工具生成服務(wù)契約代理類具有更好的靈活性和擴(kuò)展性,。
3.2  WCF服務(wù)繼承機(jī)制的實(shí)現(xiàn)
    面向?qū)ο蟮脑O(shè)計(jì)原則對(duì)于WCF服務(wù)設(shè)計(jì)來(lái)說(shuō)在系統(tǒng)開(kāi)發(fā)中有著重要的借鑒價(jià)值和實(shí)際價(jià)值,尤其是WCF服務(wù)的繼承機(jī)制的實(shí)現(xiàn)對(duì)于提高系統(tǒng)的開(kāi)發(fā)效率有著重要的作用,。雖然服務(wù)契約的定義與接口定義類似,但由于WCF框架自身的限制,,WCF契約屬性是不支持繼承的[6],。
    在服務(wù)器端契約繼承關(guān)系上,利用.NET環(huán)境本身對(duì)接口繼承的支持,只需要在多層服務(wù)契約接口定義時(shí),,在每層接口上標(biāo)記其相應(yīng)的服務(wù)契約屬性(ServiceContract),,以支持WCF服務(wù)契約屬性。
    然而,,代理構(gòu)造法生成的客戶端服務(wù)代理的創(chuàng)建一般無(wú)法還原服務(wù)端契約的層級(jí)關(guān)系,,這必須通過(guò)手工修改代理并導(dǎo)入服務(wù)契約的定義,恢復(fù)契約層級(jí),。實(shí)際系統(tǒng)開(kāi)發(fā)中這種手工恢復(fù)的方式大大增加了工作量和復(fù)雜度,。而采用3.1節(jié)中所提出的方法生成的Silverlight客戶端服務(wù)代理,可以很方便地完成繼承機(jī)制的統(tǒng)一實(shí)現(xiàn)。
    由于客戶端對(duì)WCF服務(wù)的調(diào)用并不會(huì)影響服務(wù)器端,,一個(gè)WCF服務(wù)的客戶端代理只需要有其所繼承的上層基類的操作契約,,維持相應(yīng)操作契約的特有屬性,則不需要恢復(fù)層級(jí)關(guān)系就可以實(shí)現(xiàn)對(duì)服務(wù)端上層基類操作的調(diào)用,。為此,,本文設(shè)計(jì)創(chuàng)建BaseServiceInterface類在客戶端啟動(dòng)時(shí)結(jié)合與服務(wù)器端共享的服務(wù)契約代碼,,注冊(cè)所有基類,。對(duì)于一個(gè)WCF服務(wù),可利用3.1節(jié)所提到的客戶端異步方式服務(wù)契約代理類的生成類AsyncServiceInterfaceGenerator中的Generate方法所調(diào)用的自定義方法(GetOperationContra -ctMethods),判斷是否屬于相應(yīng)基類的派生類,,并生成所屬基類和自身服務(wù)契約所有操作異步方法及操作契約屬性,。這樣就完全統(tǒng)一實(shí)現(xiàn)了客戶端服務(wù)代理的繼承機(jī)制。
3.3  異步調(diào)用機(jī)制的同步化
    Silverlight客戶端是通過(guò)異步方式來(lái)調(diào)用WCF服務(wù)的,,但是對(duì)于一些應(yīng)用又需要采用同步的方式來(lái)調(diào)用服務(wù),,如一些嚴(yán)格要求業(yè)務(wù)流程的應(yīng)用系統(tǒng)。為此,,本設(shè)計(jì)采用C#迭代器,,實(shí)現(xiàn)了異步調(diào)用機(jī)制的同步化,來(lái)滿足同步調(diào)用服務(wù)的應(yīng)用開(kāi)發(fā)需求,。
    C#迭代器可以返回相同類型的有序代碼塊,,通過(guò)這些代碼塊能夠?qū)崿F(xiàn)特定的處理功能。迭代器代碼塊與普通代碼塊類似,,只是迭代器代碼塊中存在不定量的yield語(yǔ)句,。其中,,yield return語(yǔ)句生成迭代下一個(gè)值;yield break語(yǔ)句設(shè)置迭代終止完成,。即關(guān)鍵字yield用于設(shè)置返回值,,當(dāng)程序達(dá)到y(tǒng)ield return語(yǔ)句時(shí),會(huì)保存當(dāng)前的位置,。當(dāng)下次調(diào)用迭代器時(shí),,將從這個(gè)位置重新開(kāi)始執(zhí)行。只要函數(shù)成員的返回類型是枚舉器接口或者其中的一個(gè),,迭代器就可以用作函數(shù)成員體,。
    針對(duì)C#迭代器的特點(diǎn),定義了一個(gè)如圖4所示的IAction接口作為枚舉器的執(zhí)行元素,封裝了一個(gè)執(zhí)行函數(shù)(Excute)和一個(gè)完成事件(Completed),,自定義ServiceCall<TService>抽象類實(shí)現(xiàn)IAction接口,,通過(guò)執(zhí)行函數(shù)封裝客戶端異步調(diào)用服務(wù)的全過(guò)程并返回當(dāng)前主線程觸發(fā)所注冊(cè)的完成事件。其派生類ServiceCommand<TService>和ServiceQuery<TResult, TService>則是由具體的服務(wù)操作執(zhí)行結(jié)果衍生出的返回操作結(jié)果的兩種方式,。

    同時(shí)設(shè)計(jì)了一個(gè)ServiceRun類封裝迭代器IAction元素執(zhí)行細(xì)節(jié),。具體實(shí)現(xiàn)流程如圖5所示。

    由于所設(shè)計(jì)流程是一個(gè)迭代循環(huán)的過(guò)程,,在調(diào)用ServiceRun類的同時(shí)自動(dòng)調(diào)用一個(gè)空的IAction元素的完成事件,,以達(dá)到啟動(dòng)迭代器的目的??梢钥闯龇?wù)的調(diào)用完全通過(guò)迭代器內(nèi)的元素執(zhí)行,,通過(guò)yield return返回結(jié)果,回歸主線程后才會(huì)繼續(xù)執(zhí)行后續(xù)代碼,,基本實(shí)現(xiàn)了WCF服務(wù)在Silverlight客戶端異步調(diào)用同步返回,,并且維持了WCF服務(wù)調(diào)用的穩(wěn)定性。
    本文針對(duì)基于WCF和Silverlight典型的Web應(yīng)用框架對(duì)WCF服務(wù)的應(yīng)用限制,,在.NET環(huán)境下,,設(shè)計(jì)并實(shí)現(xiàn)了面向Silverlight的WCF服務(wù)客戶端代理通道工廠的方案。在該方案的基礎(chǔ)上,,按照面向?qū)ο蟮幕驹瓌t,,實(shí)現(xiàn)WCF服務(wù)的繼承機(jī)制;采用C#迭代器機(jī)制,,完成Silverlight客戶端異步調(diào)用的同步化,。這些優(yōu)化進(jìn)一步發(fā)揮了Silverlight技術(shù)在RIA設(shè)計(jì)方面的技術(shù)優(yōu)勢(shì),以及WCF服務(wù)自身強(qiáng)大的功能優(yōu)勢(shì),使得該框架具有更高的復(fù)用度和擴(kuò)展性,,能顯著提高相關(guān)應(yīng)用系統(tǒng)的開(kāi)發(fā)效率和性能,。
參考文獻(xiàn)
[1] STEARN B. A new approach for developing rich internet  applications[J]. IEEE Internet Computing, 2007,11(3):67-73.
[2] 蔣金楠. WCF技術(shù)剖析(卷一)[M]. 北京:電子工業(yè)出版社,2009:366-367.
[3] 魏永超,銀光志[M]. 北京:清華大學(xué)出版社, 2009:4-7.
[4] 程國(guó)雄,胡世清. 基于Silverlight互動(dòng)學(xué)習(xí)RIA平臺(tái)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與科學(xué), 2010,32(7):23-26.
[5] 王非. RIA系統(tǒng)研究與實(shí)現(xiàn)[J]. 微計(jì)算機(jī)應(yīng)用,,2005, 17(5):100-104.
[6] 張金星.基于WCF的軟件開(kāi)發(fā)過(guò)程中若干問(wèn)題的研究[D]. 吉林:吉林大學(xué), 2010.  (收稿日期:2011-07-22)
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。