欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

服務端與客戶端之間的交互方法和交互系統(tǒng)的制作方法

文檔序號:7685854閱讀:191來源:國知局
專利名稱:服務端與客戶端之間的交互方法和交互系統(tǒng)的制作方法
技術領域
本發(fā)明涉及基于WCF服務的交互技術,具體而言,涉及服務端與客戶端之間的交互方法和交互系統(tǒng)。
背景技術
Silverlight逐漸成為開發(fā)客戶端的主流技術之一,作為Silverlight客戶端與.net服務端交互的基礎,WCF (Windows Communication Foundation)服務的應用也越來越廣泛。圖1示出了 WCF服務的示意圖。如圖1所示,要想通過WCF服務實現(xiàn)Silverlight 客戶端與.net服務端之間的交互,就必須創(chuàng)建WCF服務端與WCF客戶端。為方便理解,可以將客戶端與服務端之間的交互比作打電話,此時,WCF服務相當于電話線,WCF服務端與WCF客戶端相當于兩部電話,Silverlight客戶端相當于發(fā)出指令的人,而.net服務端相當于接收指令、執(zhí)行動作并報告執(zhí)行結果的人。具體的交互過程為WCF客戶端接收Silverlight客戶端發(fā)出的指令,通過WCF服務將該指令信息傳遞給WCF服務端,WCF服務端有將該指令信息傳遞給.net服務端;.net 服務端收到指令信息后執(zhí)行相應的動作,然后將執(zhí)行的結果傳遞給WCF服務端,WCF服務端通過WCF服務將執(zhí)行結果傳遞給WCF客戶端,最終傳遞給Silverlight客戶端。對Silverlight客戶端而言,.net服務端有兩種對象最重要數(shù)據類、業(yè)務類。數(shù)據類用于保存業(yè)務涉及的信息,例如可以定義一個數(shù)據類“加班單”,該數(shù)據類的對象(實例)記錄了加班的人員、加班日期、加班小時數(shù)等信息。而業(yè)務類定義了實現(xiàn)某種業(yè)務(或操作)的方法,例如可以定義“加班單管理類”,調用該類(或該類的對象)的某些方法,可以實現(xiàn)對數(shù)據庫中加班單記錄的增加、刪除、修改、查詢操作。業(yè)務類與數(shù)據類應用舉例=Silverlight客戶端通過WCF服務調用.net服務端的 “加班單管理類”(或該類的對象)的方法,從數(shù)據庫中查詢加班單信息,并組織成“加班單” 數(shù)據類對象,通過WCF服務返回給Silverlight客戶端。Silverlight客戶端將加班單展示給用戶,用戶修改加班單的內容,點擊“保存”按鈕進行保存操作。保存時Silverlight客戶端將修改后的“加班單”數(shù)據類對象通過WCF服務傳遞給.net服務端的“加班單管理類” 的方法(或該類的對象),“加班單管理類”的方法將“加班單”數(shù)據類對象所代表的加班單信息存入數(shù)據庫中。圖2是WCF服務中服務契約與數(shù)據契約聲明的示意圖,如圖2所示,實現(xiàn)WCF服務, 有兩個必要條件1. WCF服務只能調用聲明為服務契約的業(yè)務類,也就是說如果Silverlight客戶端希望訪問.net服務端的某個業(yè)務類的方法,則必須將該業(yè)務類聲明為服務契約,并寫入 WCF服務端和WCF客戶端的代碼中。2. WCF服務只能傳遞標準數(shù)據類型(例如整型、字符串等)或聲明為數(shù)據契約的數(shù)據類,也就是說如果希望通過WCF服務傳遞某種數(shù)據類,則必須將該數(shù)據類聲明為數(shù)據契
4約,并寫入WCF服務端和客戶端的代碼中。而這兩個必要條件給開發(fā)工作帶來很大的不便系統(tǒng)穩(wěn)定性差當增加、修改業(yè)務類或數(shù)據類時,需要相應的修改WCF服務端和 WCF客戶端的服務契約或數(shù)據契約,反復修改導致WCF服務的穩(wěn)定性變差。系統(tǒng)可擴展性差如果某產品從C/S架構轉換為B/S架構,此時系統(tǒng)的服務端有大量的業(yè)務類、數(shù)據類,不可能為所有的業(yè)務類、數(shù)據類定義服務契約、數(shù)據契約。因此,開發(fā) WCF服務時要確定一個范圍,Silverlight客戶端只能訪問/傳遞該范圍內的業(yè)務類、數(shù)據類。當要訪問/傳遞的業(yè)務類、數(shù)據類在該范圍之外時,則必須修改WCF服務端、WCF客戶端以增加相應的服務契約、數(shù)據契約,導致系統(tǒng)的可擴展性差。為了增加系統(tǒng)的穩(wěn)定性和可擴展性,需要一種基于WCF服務的交互技術。

發(fā)明內容
本發(fā)明關于基于WCF服務的交互技術,可以適用于以WCF服務為交互基礎的各種系統(tǒng)。在此描述的一個方面提供一種基于WCF服務的服務端與客戶端之間的交互方法, 包括步驟302,客戶端代理接收來自客戶端的調用信息和參數(shù)集合,調用客戶端序列化器將參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF客戶端,WCF客戶端通過WCF服務將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF服務端,其中,調用信息為標準數(shù)據類型格式的數(shù)據;步驟304,當服務端代理接收到來自WCF服務端的經過序列化處理的參數(shù)集合和調用信息時,服務端代理通過反射技術獲取被調用的業(yè)務類方法的參數(shù)類型列表,并根據參數(shù)類型列表調用服務端序列化器將經過序列化處理的參數(shù)集合進行反序列化處理為參數(shù)集合,以及根據調用信息通過反射技術調用服務端的業(yè)務類方法,將參數(shù)集合傳遞至業(yè)務類方法,獲取執(zhí)行業(yè)務類方法的返回值并將返回值發(fā)送至WCF服務端;以及步驟306,WCF服務端將返回值通過WCF服務發(fā)送至 WCF客戶端,WCF客戶端將返回值發(fā)送至客戶端代理,客戶端代理將返回值傳送至客戶端。通過此方法,可以將原本不可以直接通過WCF服務傳輸?shù)臄?shù)據類序列化為可以直接傳輸?shù)臄?shù)據格式,利用反射技術來調用業(yè)務類方法,這樣就不用預先在WCF服務中為數(shù)據類定義數(shù)據契約,為業(yè)務類定義服務契約,服務端業(yè)務類的任何變化都無需修改WCF服務的代碼,數(shù)據類的任何變化都不需修改WCF服務的代碼。在上述技術方案中,優(yōu)選地,步驟302還可以包括客戶端代理保存來自客戶端的返回值類型定義;步驟304還可以包括當判斷返回值是數(shù)據類時,所述服務端代理調用服務端序列化器序列化返回值,并將經過序列化處理的返回值發(fā)送至WCF服務端;步驟306還可以包括客戶端代理將返回值類型定義和經過序列化的返回值發(fā)送至客戶端序列化器進行反序列化處理,客戶端代理將經過反序列化處理的返回值傳遞至客戶端。執(zhí)行業(yè)務類方法的執(zhí)行結果如果是數(shù)據類對象,那么也可以通過序列化的方法來將其序列化為WCF服務可以直接傳輸?shù)男问?,實現(xiàn)了 WCF與數(shù)據類的分離。在上述技術方案中,優(yōu)選地,客戶端可以包括Silverlight客戶端。在上述技術方案中,優(yōu)選地,服務端可以包括.net服務端。 在上述技術方案中,優(yōu)選地,標準數(shù)據類型格式可以包括字符串和整型。
在此描述的另一方面提供一種基于WCF服務的服務端與客戶端之間的交互系統(tǒng), 包括服務端和客戶端,還包括客戶端代理,連接至客戶端,接收來自客戶端的調用信息和參數(shù)集合并將參數(shù)信息傳遞至客戶端序列化器,將來自客戶端序列化器的經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF客戶端以及將來自WCF客戶端的返回值發(fā)送至客戶端, 其中,調用信息為標準數(shù)據類型格式的數(shù)據;客戶端序列化器,連接至客戶端代理,用于將來自客戶端代理的參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的參數(shù)集合傳遞至客戶端代理;WCF客戶端,連接至客戶端代理,通過WCF服務將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF服務端以及將來自WCF服務端的返回值發(fā)送至客戶端代理;WCF服務端,連接至服務端代理,用于將經過序列化處理的參數(shù)集合和調用信息傳遞至服務端代理以及將來服務端代理的返回值發(fā)送至WCF客戶端;服務端代理,連接至服務端,當接收到來自WCF服務端的經過序列化處理的參數(shù)集合和調用信息時,根據調用信息通過反射技術獲取被調用的業(yè)務類方法的參數(shù)類型列表,將參數(shù)類型列表和經過序列化處理的參數(shù)集合傳遞至服務端序列化器,以及根據調用信息通過反射技術調用服務端的業(yè)務類方法,將來自服務端序列化器的經過反序列化處理的參數(shù)集合傳遞至業(yè)務類方法,獲取執(zhí)行業(yè)務類方法的返回值并將返回值發(fā)送至WCF服務端;以及服務端序列化器,連接至服務端代理,用于根據參數(shù)類型列表將經過序列化處理的參數(shù)集合進行反序列化為參數(shù)集合,并將參數(shù)集合傳遞至服務端代理。通過此系統(tǒng),可以將原本不可以直接通過WCF服務傳輸?shù)臄?shù)據類序列化為可以直接傳輸?shù)臄?shù)據格式,利用反射技術來調用業(yè)務類方法,這樣就不用預先在WCF服務中為數(shù)據類定義數(shù)據契約,為業(yè)務類定義服務契約,服務端業(yè)務類的任何變化都無需修改WCF服務的代碼,數(shù)據類的任何變化都不需修改WCF服務的代碼。在上述技術方案中,優(yōu)選地,客戶端代理還保存來自客戶端的返回值類型定義;當判斷返回值是數(shù)據類時,服務端代理調用服務端序列化器序列化返回值,并將經過序列化處理的返回值發(fā)送至WCF服務端;客戶端代理將返回值類型定義和經過序列化的返回值發(fā)送至客戶端序列化器進行反序列化處理,客戶端代理將經過反序列化處理的返回值傳遞至客戶端。執(zhí)行業(yè)務類方法的執(zhí)行結果如果是數(shù)據類對象,那么也可以通過序列化的方法來將其序列化為WCF服務可以直接傳輸?shù)男问?,實現(xiàn)了 WCF與數(shù)據類的分離。在上述技術方案中,優(yōu)選地,客戶端可以包括Silverlight客戶端。在上述技術方案中,優(yōu)選地,服務端可以包括.net服務端。在上述技術方案中,優(yōu)選地,標準數(shù)據類型格式可以包括字符串和整型。


圖1示出了相關技術中的WCF服務的示意圖;圖2示出了相關技術中的WCF服務中的服務契約和數(shù)據契約聲明的示意圖;圖3示出了根據本發(fā)明的實施例的基于WCF服務的服務端與客戶端之間的交互方法的流程圖;圖4示出了根據本發(fā)明的實施例的基于WCF服務的服務端與客戶端之間的交互系統(tǒng)的框圖;以及圖5示出了根據本發(fā)明的實施例的WCF服務與業(yè)務類、數(shù)據類分離的示意圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結合附圖和具體實施方式
對本發(fā)明進行進一步的詳細描述。在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明并不限于下面公開的具體實施例的限制。為了增加系統(tǒng)的穩(wěn)定性、可擴展性,需要解決兩個問題1、如何實現(xiàn)WCF服務與業(yè)務類的分離——Silverlight客戶端通過WCF服務調用.net服務端的業(yè)務類時,不需要事先為該業(yè)務類定義服務契約;.net服務端業(yè)務類的任何變化都不必修改WCF服務的代碼。2、如何實現(xiàn)WCF服務與數(shù)據類的分離——不需要事先為數(shù)據類定義數(shù)據契約,就能夠通過WCF服務傳輸該數(shù)據類的對象;數(shù)據類的任何變化都不必修改WCF服務的代碼。因此,本發(fā)明提出了一種基于WCF服務的服務端與客戶端之間的交互方法和系統(tǒng),可以實現(xiàn)WCF服務與業(yè)務類、數(shù)據類分離。在詳細說明本發(fā)明的實施例之前對一些名詞進行解釋。各實施例中出現(xiàn)的序列化、反序列化以及反射的解釋為如下序列化將對象轉換為可保存或傳輸?shù)母袷降倪^程。舉例來說,將對象的信息(例如字段值、類名等)抽取出來,將抽取出例如類名的對象按照某種格式統(tǒng)一存儲在一個字符串中(也可以存儲在二進制數(shù)組或其他格式中),以便于存入數(shù)據庫或在網絡間傳輸。標準數(shù)據類型也可以被序列化,例如一個整型變量可以被序列化為一個字符串。反序列化反序列化是與序列化相對的過程,是指將序列化的結果(例如一個字符串)還原為對象的過程。在反序列化過程之前必須給其提供如下兩部分內容序列化的結果、反序列化的類型定義(也就是序列化之前對象的類型定義)。反射簡單來說,通過反射可以實現(xiàn)如下內容指定程序集名稱及路徑、命名空間、類名,(1)可以獲得類型的定義(如該類的方法、屬性等信息),(2)可以創(chuàng)建該類型的實例(即創(chuàng)建該類型的對象);指定程序集名稱及路徑、命名空間、類名、方法名,(1)可以調用方法名對應的方法,( 可以獲得該方法的參數(shù)列表、每一個參數(shù)的類型定義、方法返回值的類型定義等信肩、ο需要注意的是反射不能在服務端與客戶端之間執(zhí)行,也就是說,客戶端代碼不能直接反射調用服務端方法,服務端代碼也不能直接反射調用客戶端代碼。圖3示出了根據本發(fā)明的實施例的基于WCF服務的服務端與客戶端之間的交互方法的流程圖。如圖3所示,根據本發(fā)明的實施例的基于WCF服務的服務端與客戶端之間的交互方法,包括步驟302,客戶端代理接收來自客戶端的調用信息和參數(shù)集合,調用客戶端序列化器將參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF客戶端,WCF客戶端通過WCF服務將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF服務端,其中,調用信息為標準數(shù)據類型格式的數(shù)據;步驟304,當服務端代理接收到來自WCF服務端的經過序列化處理的參數(shù)集合和調用信息時,服務端代理通過反射技術獲取被調用的業(yè)務類方法的參數(shù)類型列表,并根據參數(shù)類型列表調用服務端序列化器將經過序列化處理的參數(shù)集合進行反序列化處理為參數(shù)集合,以及根據調用信息通過反射技術調用服務端的業(yè)務類方法,將參數(shù)集合傳遞至業(yè)務類方法,獲取執(zhí)行業(yè)務類方法的返回值并將返回值發(fā)送至WCF服務端;以及步驟306,WCF服務端將返回值通過WCF服務發(fā)送至WCF客戶端,WCF客戶端將返回值發(fā)送至客戶端代理,客戶端代理將返回值傳送至客戶端。通過此方法,可以將原本不可以直接通過WCF服務傳輸?shù)臄?shù)據類序列化為可以直接傳輸?shù)臄?shù)據格式,利用反射技術來調用業(yè)務類方法,這樣就不用預先在WCF服務中為數(shù)據類定義數(shù)據契約,為業(yè)務類定義服務契約,服務端業(yè)務類的任何變化都無需修改WCF服務的代碼,數(shù)據類的任何變化都不需修改WCF服務的代碼。在上述技術方案中,優(yōu)選地,步驟302還可以包括客戶端代理保存來自客戶端的返回值類型定義;步驟304還可以包括當判斷返回值是數(shù)據類時,所述服務端代理調用服務端序列化器序列化返回值,并將經過序列化處理的返回值發(fā)送至WCF服務端;步驟306還可以包括客戶端代理將返回值類型定義和經過序列化的返回值發(fā)送至客戶端序列化器進行反序列化處理,客戶端代理將經過反序列化處理的返回值傳遞至客戶端。執(zhí)行業(yè)務類方法的執(zhí)行結果如果是數(shù)據類對象,那么也可以通過序列化的方法來將其序列化為WCF服務可以直接傳輸?shù)男问?,實現(xiàn)了 WCF與數(shù)據類的分離。在上述技術方案中,優(yōu)選地,客戶端可以包括Silverlight客戶端。在上述技術方案中,優(yōu)選地,服務端可以包括.net服務端。在上述技術方案中,優(yōu)選地,標準數(shù)據類型格式可以包括字符串和整型。為了實現(xiàn)WCF服務于業(yè)務類、數(shù)據類的分離,增加了服務端代理、客戶端代理、服務端序列化器以及客戶端序列化器四個部分。創(chuàng)建一個WCF服務(以及WCF客戶端、WCF 服務端),用于實現(xiàn)客戶端與服務端之間最基本的通信。服務端的業(yè)務類、數(shù)據類不需要在 WCF服務端、WCF客戶端中聲明為服務契約和數(shù)據契約。圖4示出了根據本發(fā)明的實施例的基于WCF服務的服務端與客戶端之間的交互系統(tǒng)的框圖。如圖4所示,根據本發(fā)明的實施例的基于WCF服務的服務端與客戶端之間的交互系統(tǒng)400,包括服務端416和客戶端402,還包括客戶端代理404,連接至客戶端402,接收來自客戶端402的調用信息和參數(shù)集合并將參數(shù)信息傳遞至客戶端序列化器406,將來自客戶端序列化器406的經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF客戶端408以及將來自WCF客戶端408的返回值發(fā)送至客戶端,其中,調用信息為標準數(shù)據類型格式的數(shù)據;客戶端序列化器406,連接至客戶端代理404,用于將來自客戶端代理404的參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的參數(shù)集合傳遞至客戶端代理404 ; WCF客戶端408,連接至客戶端代理404,通過WCF服務將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF服務端410以及將來自WCF服務端410的返回值發(fā)送至客戶端代理404 ; WCF服務端410,連接至服務端代理412,用于將經過序列化處理的參數(shù)集合和調用信息傳遞至服務端代理412以及將來服務端代理412的返回值發(fā)送至WCF客戶端408 ;服務端代理412,連接至服務端416,當接收到來自WCF服務端410的經過序列化處理的參數(shù)集合和調用信息時,根據調用信息通過反射技術獲取被調用的業(yè)務類方法的參數(shù)類型列表,將參數(shù)類型列表和經過序列化處理的參數(shù)集合傳遞至服務端序列化器414,以及根據調用信息通過反射技術調用服務端的業(yè)務類方法,將來自服務端序列化器414的經過反序列化處理的參數(shù)集合傳遞至業(yè)務類方法,獲取執(zhí)行業(yè)務類方法的返回值并將返回值發(fā)送至WCF服務端410 ;以及服務端序列化器414,連接至服務端代理412,用于根據參數(shù)類型列表將經過序列化處理的參數(shù)集合進行反序列化為參數(shù)集合,并將參數(shù)集合傳遞至服務端代理412。通過此系統(tǒng),可以將原本不可以直接通過WCF服務傳輸?shù)臄?shù)據類序列化為可以直接傳輸?shù)臄?shù)據格式,利用反射技術來調用業(yè)務類方法,這樣就不用預先在WCF服務中為數(shù)據類定義數(shù)據契約,為業(yè)務類定義服務契約,服務端業(yè)務類的任何變化都無需修改WCF服務的代碼,數(shù)據類的任何變化都不需修改WCF服務的代碼。在上述技術方案中,優(yōu)選地,客戶端代理404還保存來自客戶端402的返回值類型定義;當判斷返回值是數(shù)據類時,服務端代理412調用服務端序列化器414序列化返回值, 并將經過序列化處理的返回值發(fā)送至WCF服務端410 ;客戶端代理404將返回值類型定義和經過序列化的返回值發(fā)送至客戶端序列化器406進行反序列化處理,客戶端代理404將經過反序列化處理的返回值傳遞至客戶端402。執(zhí)行業(yè)務類方法的執(zhí)行結果如果是數(shù)據類對象,那么也可以通過序列化的方法來將其序列化為WCF服務可以直接傳輸?shù)男问?,實現(xiàn)了 WCF與數(shù)據類的分離。在上述技術方案中,優(yōu)選地,客戶端402可以包括Silverlight客戶端。在上述技術方案中,優(yōu)選地,服務端416可以包括.net服務端。在上述技術方案中,優(yōu)選地,標準數(shù)據類型格式可以包括字符串和整型。接下來繼續(xù)結合圖5來說明本發(fā)明的又一實施例,在實施例中,將本發(fā)明的基于WCF服務的客戶端與服務端之間的交互系統(tǒng)中的服務端作為.net服務端,客戶端作為 Silverligh客戶端,在此,本領域技術人員應該理解,本發(fā)明的技術方案可以應用于以WCF 服務為基礎的各種系統(tǒng)中,不僅限于實施例中的實施方式。圖5示出了根據本發(fā)明的實施例的WCF服務與業(yè)務類、數(shù)據類分離的示意圖。增加的兩個序列化器506和514的作用是(1)將數(shù)據類對象序列化為可以通過 WCF服務傳輸?shù)母袷?例如字符串);(2)將序列化的結果(例如字符串)反序列化為數(shù)據類對象。增加的客戶端代理504的作用是(1)調用開始時,接收Silverlight客戶端502 傳遞的參數(shù)集合,并調用客戶端序列化器506將參數(shù)集合中的數(shù)據類對象進行序列化,然后將處理過的參數(shù)集合傳遞給WCF客戶端508 ; (2)調用結束時,從WCF客戶端508接收返回值,并傳送至Silverlight客戶端502 ;如果返回值是被序列化的數(shù)據類對象,則首先調用客戶端序列化器506,對其進行反序列化,得到數(shù)據類對象,然后將數(shù)據類對象傳送至 Silverlight 客戶端 502。增加的服務端代理512的作用是(1)調用過程中,接收WCF服務端510傳遞過來的參數(shù)集合,如果參數(shù)集合中有被序列化的數(shù)據類對象,則調用服務端序列化器514將其反序列化;(2)反射調用服務端516業(yè)務類的方法,將參數(shù)集合傳遞給該方法;(3)獲取業(yè)務類方法的執(zhí)行結果,并返回給WCF服務端510 ;如果返回結果是數(shù)據類對象,則先調用服務端序列化器514將其序列化,然后再返回給WCF服務端510。
9
由于.net與Silverlight之間不能相互引用程序集(數(shù)據類定義在程序集中), 因此,將定義數(shù)據類的代碼編譯為.net與Silverlight兩個程序集,分別部署在服務端與客戶端。也就是說,不同類型的兩個程序集使用同一套代碼文件(數(shù)據類定義代碼)。系統(tǒng)中各模塊之間的工作原理如下Silverlight客戶端502將下列信息傳遞給客戶端代理504 方法的調用信息(程序集名稱及路徑、命名空間、類名、方法名等)、參數(shù)集合、返回值的類型定義,其中,返回值的類型定義保存在客戶端代理504中,而方法的調用信息的數(shù)據本身是字符串形式的數(shù)據,因此不需將其進行序列化;客戶端代理504調用客戶端序列化器506,將參數(shù)集合中的數(shù)據類對象序列化為標準數(shù)據類型(簡化實現(xiàn)將所有的參數(shù)全部序列化為標準數(shù)據類型)。然后將處理過的參數(shù)集合與調用信息一起傳遞給WCF客戶端508 ;WCF客戶端508將調用信息、參數(shù)集合傳遞給WCF服務端510 ;WCF服務端510又將調用信息、參數(shù)集合傳遞給服務端代理512 ;服務端代理512根據調用信息,利用反射技術得到被調用方法的參數(shù)類型列表, 根據參數(shù)類型列表服務端代理512能夠判斷出參數(shù)集合中哪些參數(shù)需要進行反序列化操作,并調用服務端序列化器514對其進行反序列化操作(簡化實現(xiàn)反序列化參數(shù)集合中的所有參數(shù)),使參數(shù)集合中的參數(shù)與相應的參數(shù)類型對應;根據調用信息通過反射技術調用.net服務端516的業(yè)務類方法,將反序列化處理后的參數(shù)集合傳遞給該方法,獲取執(zhí)行業(yè)務類方法的返回值;如果返回值是數(shù)據類對象,服務端代理512會調用服務端序列化器514對其進行序列化操作(簡化實現(xiàn)不論返回值為何種類型,都對其進行序列化操作);服務端代理512將返回值傳送給WCF服務端510,WCF服務端510又將返回值傳遞給WCF客戶端508,WCF客戶端508最后將返回值傳遞給客戶端代理504 ;客戶端代理504根據保存的返回值的類型定義,判斷返回值是否是序列化的結果。如果返回值是序列化的結果,則將返回值及其類型定義一起傳遞給客戶端序列化器 506,對返回值進行反序列化操作(簡化實現(xiàn)不論返回值為何種類型,都對其進行反序列化操作);客戶端代理504接收來自客戶端序列化器506的反序列化后的返回值,并將該返回值返回給Silverlight客戶端502,這樣就完成Silverlight客戶端502與.net服務端 516之間的一次交互。通過上述技術方案,Silverlight客戶端將方法的調用信息與參數(shù)集合一起,通過 WCF服務傳遞到WCF服務端,再傳遞給服務端代理。服務端代理獲得方法的調用信息(程序集名稱及路徑、命名空間、類名、方法名等)后,利用反射技術可以調用.net服務端內任意程序集的任意業(yè)務類的任意方法,實現(xiàn)了 WCF服務與業(yè)務類分離。這種方式不需要為業(yè)務類聲明服務契約。當業(yè)務類或其方法發(fā)生變化時,只需修改方法的調用信息或參數(shù)集合,而不需要修改WCF服務。因此,WCF服務是穩(wěn)定的,是與業(yè)務類無關的,從而實現(xiàn)了 WCF服務與業(yè)務類的分離。本發(fā)明還實現(xiàn)了 WCF服務與數(shù)據類分離一方面,字符串等標準數(shù)據類型無需注冊為數(shù)據契約,可直接通過WCF服務傳遞;另一方面,序列化技術能夠將數(shù)據類對象轉換為標準數(shù)據類型。因此,本發(fā)明通過序列化技術實現(xiàn)WCF服務與數(shù)據類的分離。具體方法如下(1)數(shù)據類對象作為參數(shù)通過WCF服務進行傳遞??蛻舳舜硎盏絊ilverlight客戶端傳遞的參數(shù)集合后,調用客戶端序列化器將其中的數(shù)據類對象序列化為標準數(shù)據類型(簡化實現(xiàn)將所有的參數(shù)全部序列化),然后通過WCF服務傳輸給服務端代理。服務端代理調用服務端序列化器,將被序列化的參數(shù)集合反序列化為數(shù)據類對象(簡化實現(xiàn)將所有參數(shù)全部反序列化),再將經過反序列化處理后的參數(shù)集合傳遞給業(yè)務類的方法。(2)數(shù)據類對象作為返回值通過WCF服務進行傳遞。業(yè)務類方法執(zhí)行完畢,將返回值傳遞給服務端代理。如果返回值是數(shù)據類對象,服務端代理將調用服務端序列化器,對其進行序列化操作(簡化實現(xiàn)不判斷返回值類型,直接序列化),這樣返回值就可以通過WCF服務傳遞給客戶端代理。如果客戶端代理收到的是序列化的返回值,則調用客戶端序列化器將其反序列化為數(shù)據類對象(簡化實現(xiàn)不判斷返回值類型,直接反序列化)。如前所述,反序列化過程不但要提供序列化的結果,還要提供對象被序列化前的類型定義。這樣,服務端方向與客戶端方向的反序列化方法如下服務端方向的反序列化方法服務端代理使用反射技術可以得到方法的每一個參數(shù)的類型定義(得到參數(shù)類型列表)。也就是說,可以知道每個參數(shù)是標準數(shù)據類型還是數(shù)據類對象。由于標準數(shù)據類型不必序列化,而數(shù)據類對象必須序列化,據此可以判斷出參數(shù)集合中哪個參數(shù)是序列化的結果。將序列化的參數(shù)與其對應的類型定義一起提供給服務端序列化器,對其進行反序列化操作(簡化實現(xiàn)將每個參數(shù)及其對應的類型定義一起提供給服務端序列化器,反序列化參數(shù)集合中的所有參數(shù))??蛻舳朔较虻姆葱蛄谢椒?Silverlight客戶端將方法返回值(執(zhí)行方法的執(zhí)行結果)的類型定義傳遞給客戶端代理??蛻舳舜砼袛嗥漕愋?,如果返回值的類型是數(shù)據類,則將接收到來自WCF客戶端的返回值與類型定義一起提供給客戶端序列化器,進行反序列化操作(簡化實現(xiàn)無論方法的返回值為何種類型,都對其進行反序列化操作)。以上結合附圖詳細說明了本發(fā)明的實施例的技術方案,實施本發(fā)明的技術方案可以達到以下技術效果1、實現(xiàn)了 WCF服務與業(yè)務類的分離。不需要將業(yè)務類聲明為服務契約,即可通過WCF服務對其進行調用,業(yè)務類的任何變化都不需要修改WCF服務。2、實現(xiàn)了 WCF服務與數(shù)據類的分離。不需要將數(shù)據類聲明為數(shù)據契約,即可通過WCF服務對其進行傳輸,數(shù)據類的任何變化都不需要修改WCF服務。3、有效的提高系統(tǒng)的穩(wěn)定性。由于業(yè)務類、數(shù)據類的任何變化都不需要修改WCF服務,因此作為系統(tǒng)交互基礎的WCF服務具有很高的穩(wěn)定性,從而提高了整個系統(tǒng)的穩(wěn)定性。4、有效的提高系統(tǒng)的可擴展性。只需調整調用信息,客戶端例如Silverlight客戶端就可以調用服務端例如.net
11服務端的任意業(yè)務類的任意方法,而無需修改WCF服務,有效的提高了系統(tǒng)的可擴展性。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種服務端與客戶端之間的交互方法,其特征在于,包括步驟302,客戶端代理接收來自客戶端的調用信息和參數(shù)集合,調用客戶端序列化器將所述參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的所述參數(shù)集合和所述調用信息發(fā)送至WCF客戶端,所述WCF客戶端通過WCF服務將經過序列化處理的所述參數(shù)集合和所述調用信息發(fā)送至WCF服務端,其中,所述調用信息為標準數(shù)據類型格式的數(shù)據;步驟304,當服務端代理接收到來自所述WCF服務端的經過序列化處理的所述參數(shù)集合和所述調用信息時,所述服務端代理通過反射技術獲取被調用的業(yè)務類方法的參數(shù)類型列表,并根據所述參數(shù)類型列表調用服務端序列化器將經過序列化處理的所述參數(shù)集合進行反序列化處理為所述參數(shù)集合,以及根據所述調用信息通過所述反射技術調用服務端的所述業(yè)務類方法,將所述參數(shù)集合傳遞至所述業(yè)務類方法,獲取執(zhí)行所述業(yè)務類方法的返回值并將所述返回值發(fā)送至所述WCF服務端;以及步驟306,所述WCF服務端將所述返回值通過WCF服務發(fā)送至所述WCF客戶端,所述WCF 客戶端將所述返回值發(fā)送至所述客戶端代理,所述客戶端代理將所述返回值傳送至所述客戶端。
2.根據權利要求1所述的服務端與客戶端之間的交互方法,其特征在于,所述步驟302 還包括所述客戶端代理保存來自所述客戶端的返回值類型定義;所述步驟304還包括當判斷所述返回值是數(shù)據類時,所述服務端代理調用所述服務端序列化器序列化所述返回值,并將經過序列化處理的所述返回值發(fā)送至所述WCF服務端;所述步驟306還包括所述客戶端代理將所述返回值類型定義和經過序列化的所述返回值發(fā)送至所述客戶端序列化器進行反序列化處理,所述客戶端代理將經過反序列化處理的所述返回值傳遞至所述客戶端。
3.根據權利要求1所述的服務端與客戶端之間的交互方法,其特征在于,所述客戶端包括Silverlight客戶端。
4.根據權利要求1所述的服務端與客戶端之間的交互方法,其特征在于,所述服務端包括.net服務端。
5.根據權利要求1至4中任一項所述的服務端與客戶端之間的交互方法,其特征在于, 所述標準數(shù)據類型格式包括字符串和整型。
6.一種服務端與客戶端之間的交互系統(tǒng),包括服務端和客戶端,其特征在于,還包括客戶端代理,連接至所述客戶端,接收來自所述客戶端的調用信息和參數(shù)集合并將所述參數(shù)信息傳遞至客戶端序列化器,將來自客戶端序列化器的經過序列化處理的所述參數(shù)集合和所述調用信息發(fā)送至WCF客戶端以及將來自WCF客戶端的返回值發(fā)送至所述客戶端,其中,所述調用信息為標準數(shù)據類型格式的數(shù)據;所述客戶端序列化器,連接至所述客戶端代理,用于將來自所述客戶端代理的所述參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的所述參數(shù)集合傳遞至所述客戶端代理;所述WCF客戶端,連接至所述客戶端代理,通過WCF服務將經過序列化處理的所述參數(shù)集合和所述調用信息發(fā)送至WCF服務端以及將來自所述WCF服務端的返回值發(fā)送至所述客戶端代理;所述WCF服務端,連接至服務端代理,用于將經過序列化處理的所述參數(shù)集合和所述調用信息傳遞至所述服務端代理以及將來所述服務端代理的所述返回值發(fā)送至所述WCF 客戶端;所述服務端代理,連接至所述服務端,當接收到來自所述WCF服務端的經過序列化處理的所述參數(shù)集合和所述調用信息時,根據所述調用信息通過反射技術獲取被調用的業(yè)務類方法的參數(shù)類型列表,將所述參數(shù)類型列表和經過序列化處理的所述參數(shù)集合傳遞至服務端序列化器,以及根據所述調用信息通過反射技術調用所述服務端的所述業(yè)務類方法, 將來自服務端序列化器的經過反序列化處理的所述參數(shù)集合傳遞至所述業(yè)務類方法,獲取執(zhí)行所述業(yè)務類方法的所述返回值并將所述返回值發(fā)送至所述WCF服務端;以及所述服務端序列化器,連接至所述服務端代理,用于根據所述參數(shù)類型列表將經過序列化處理的所述參數(shù)集合進行反序列化為所述參數(shù)集合,并將所述參數(shù)集合傳遞至所述服務端代理。
7.根據權利要求6所述的服務端與客戶端之間的交互系統(tǒng),其特征在于,所述客戶端代理還保存來自所述客戶端的返回值類型定義;當判斷所述返回值是數(shù)據類時,所述服務端代理調用所述服務端序列化器序列化所述返回值,并將經過序列化處理的所述返回值發(fā)送至所述WCF服務端;所述客戶端代理將所述返回值類型定義和經過序列化的所述返回值發(fā)送至所述客戶端序列化器進行反序列化處理,所述客戶端代理將經過反序列化處理的所述返回值傳遞至所述客戶端。
8.根據權利要求6所述的服務端與客戶端之間的交互系統(tǒng),其特征在于,所述客戶端包括Silverlight客戶端。
9.根據權利要求6所述的服務端與客戶端之間的交互系統(tǒng),其特征在于,所述服務端包括.net服務端。
10.根據權利要求6至9中任一項所述的服務端與客戶端之間的交互系統(tǒng),其特征在于,所述標準數(shù)據類型格式包括字符串和整型。
全文摘要
本發(fā)明提供了一種交互方法和系統(tǒng),方法包括客戶端代理接收調用信息和參數(shù)集合,客戶端序列化器將參數(shù)集合序列化為標準數(shù)據類型格式的數(shù)據,并將經過序列化處理的參數(shù)集合和調用信息發(fā)送至WCF客戶端,其將參數(shù)集合和調用信息發(fā)送至WCF服務端;當服務端代理接收到參數(shù)集合和調用信息時,其獲取業(yè)務類方法的參數(shù)類型列表,并調用服務端序列化器將經過序列化處理的參數(shù)集合進行反序列化處理為參數(shù)集合,通過反射技術調用業(yè)務類方法,將參數(shù)集合傳遞至業(yè)務類方法,獲取執(zhí)行業(yè)務類方法的返回值并將返回值發(fā)送至WCF服務端;WCF服務端將返回值發(fā)送至WCF客戶端,其將返回值發(fā)送至客戶端代理,最后將返回值傳送至客戶端。實現(xiàn)了WCF服務與數(shù)據類、業(yè)務類的分離。
文檔編號H04L29/06GK102209076SQ20111014967
公開日2011年10月5日 申請日期2011年6月3日 優(yōu)先權日2011年6月3日
發(fā)明者滕石松 申請人:用友軟件股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
邹平县| 新干县| 通城县| 新乡县| 大同市| 章丘市| 洪洞县| 滨海县| 清水河县| 霍邱县| 延寿县| 西乌| 武宣县| 潢川县| 安平县| 澄城县| 岱山县| 北宁市| 宜昌市| 中牟县| 托克逊县| 京山县| 大连市| 芒康县| 博湖县| 泸西县| 龙川县| 九台市| 临澧县| 锦州市| 乐至县| 罗山县| 封开县| 盐山县| 陆川县| 仁化县| 武川县| 马山县| 长岭县| 临朐县| 襄汾县|