两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

靈活地傳輸類型化的應(yīng)用程序數(shù)據(jù)的制作方法

文檔序號:7627097閱讀:176來源:國知局
專利名稱:靈活地傳輸類型化的應(yīng)用程序數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及電子消息通信,尤其涉及靈活地傳輸類型化的應(yīng)用程序數(shù)據(jù)。
背景技術(shù)
計算機(jī)系統(tǒng)和相關(guān)技術(shù)影響著社會的許多方面。實際上,計算機(jī)系統(tǒng)處理信息的能力轉(zhuǎn)換了人們生活和工作的方式。計算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計算機(jī)系統(tǒng)出現(xiàn)之前手動執(zhí)行的許多任務(wù)(例如,文字處理、日程安排和數(shù)據(jù)庫管理)。最近,計算機(jī)系統(tǒng)被彼此耦合以及耦合到其它電子設(shè)備以形成有線和無線的計算機(jī)網(wǎng)絡(luò),通過該計算機(jī)網(wǎng)絡(luò),計算機(jī)系統(tǒng)和其它電子設(shè)備能夠傳輸電子數(shù)據(jù)。結(jié)果,在計算機(jī)系統(tǒng)上執(zhí)行的許多任務(wù)(例如,語音通信、訪問電子郵件、控制家用電器、web瀏覽以及打印文檔)包括多個計算機(jī)系統(tǒng)和/或其它電子設(shè)備之間經(jīng)由有線和/或無線計算機(jī)網(wǎng)絡(luò)的電子消息交換。
網(wǎng)絡(luò)實際上已變得如此大量增長,使得簡單的啟用網(wǎng)絡(luò)的計算系統(tǒng)可通過通常被稱為“因特網(wǎng)”的網(wǎng)絡(luò)集合體與遍及全球的上百萬個其它計算系統(tǒng)中的任何一個進(jìn)行通信。這樣的計算系統(tǒng)可包括臺式機(jī)、膝上型計算機(jī)或圖形輸入板個人計算機(jī);個人數(shù)字助理(PDA);電話機(jī);或能夠通過數(shù)字網(wǎng)絡(luò)進(jìn)行通信的任何其它計算機(jī)或設(shè)備。
為通過網(wǎng)絡(luò)通信,一個計算系統(tǒng)(被稱為“發(fā)送計算系統(tǒng)”)構(gòu)造或訪問電子消息,并通過網(wǎng)絡(luò)將該電子消息發(fā)送到另一計算系統(tǒng)(在此被稱為“接收計算系統(tǒng)”)。當(dāng)電子消息是電子郵件或即時消息時,電子消息可由人類用戶閱讀,或者可替代地由運(yùn)行在接收計算系統(tǒng)上的應(yīng)用程序讀取。電子消息可由運(yùn)行在發(fā)送計算系統(tǒng)上的應(yīng)用程序在人類用戶的可能協(xié)助下構(gòu)造。
由此,在某些環(huán)境中,消息是用極少(如果有的話)的直接用戶交互在分布式應(yīng)用程序之間交換的。用于在分布式應(yīng)用程序(例如,web服務(wù))之間交換消息的一種協(xié)議是簡單對象訪問協(xié)議(“SOAP”)。SOAP是預(yù)期用于在分散的、分布式的環(huán)境中交換信息的輕量級協(xié)議。SOAP使用可擴(kuò)展標(biāo)記語言(“XML”)技術(shù)來定義可擴(kuò)展消息通信框架,該框架提供了可通過諸如簡單郵件傳輸協(xié)議(“SMTP”)、超文本傳輸協(xié)議(“HTTP”)、用戶數(shù)據(jù)報協(xié)議(“UDP”)、傳輸控制協(xié)議(“TCP”)和命名管道等各種底層協(xié)議來交換的消息構(gòu)造。SOAP消息可在開放的意義上被定義為具有一組消息頭部和消息主體的SOAP信息集(infoset)(例如,XML元素)。
許多應(yīng)用程序是使用方法和/或面向?qū)ο蟮木幊棠P蛠碓O(shè)計的。這些編程模型通常使用類型數(shù)據(jù)格式(例如,整數(shù)、串、邏輯或用戶定義的數(shù)據(jù)格式)以在模塊之間交換對象。例如,方法可接收一個或多個類型化的對象(例如,各種不同數(shù)據(jù)類型格式的參數(shù))作為輸入。作為響應(yīng),方法可生成并輸出該類型化的對象的(可能不同的)值,或者可返回不同的數(shù)據(jù)類型(例如,該方法的數(shù)據(jù)類型)的類型化的對象。對類型化的數(shù)據(jù)格式的使用是有利的,因為它允許開發(fā)者基于應(yīng)用程序和/或模塊功能使用更適當(dāng)和/或更有效的數(shù)據(jù)類型來設(shè)計應(yīng)用程序和模塊。
由此,在分布式應(yīng)用程序環(huán)境中,類型化的對象可以在分布式應(yīng)用程序的不同部分之間交換。例如,為便于銀行交易,分布式銀行客戶機(jī)可與分布式銀行服務(wù)器交換類型化的銀行交易數(shù)據(jù)結(jié)構(gòu)。然而,可能很難設(shè)計同時利用類型化的數(shù)據(jù)格式的優(yōu)點(diǎn)以及SOAP消息的靈活性的分布式應(yīng)用程序。
SOAP是一種開放的協(xié)議,并由此實際上沒有對應(yīng)用程序和/或用戶數(shù)據(jù)對SOAP消息的映射和相反方向的映射施加任何要求。由此,只有有限的機(jī)制(如果有的話)用于將類型化的對象(例如,公共語言運(yùn)行時環(huán)境(“CLR”)類型)映射到對應(yīng)的SOAP消息以及用于將SOAP消息映射到對應(yīng)的類型化的對象。不能在類型化的對象和SOAP消息之間進(jìn)行有意義的映射使得分布式應(yīng)用程序更難或甚至不可能交換應(yīng)用程序和/或用戶數(shù)據(jù)。
此外,用于將SOAP消息編碼成原始八比特組的典型機(jī)制限制了SOAP消息的大小,并限制了可使用的編碼器的類型。因此,用于靈活地傳輸類型化的應(yīng)用程序數(shù)據(jù)的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品將是有利的。

發(fā)明內(nèi)容
本發(fā)明的原理克服了現(xiàn)有技術(shù)的上述問題,本發(fā)明針對用于靈活地傳輸類型化的應(yīng)用程序數(shù)據(jù)的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品。在某些實施例中,一種計算機(jī)系統(tǒng)配置SOAP消息以發(fā)送類型化的數(shù)據(jù)。應(yīng)用程序代碼(例如,客戶機(jī)代理)用類型化的對象參數(shù)(例如,方法調(diào)用的參數(shù))來調(diào)用類型化的對象(例如,方法)。該計算機(jī)系統(tǒng)訪問對應(yīng)于類型化的對象的類型化對象參數(shù)。類型化對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的。一個或多個消息協(xié)定屬性定義了類型化的對象參數(shù)和對應(yīng)的SOAP元素之間的映射。
該計算機(jī)系統(tǒng)依照一個或多個消息協(xié)定屬性將所訪問的類型化的對象參數(shù)映射到SOAP元素。計算機(jī)系統(tǒng)參考一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置(例如,消息頭部或消息主體)。該計算機(jī)系統(tǒng)將SOAP元素插入到SOAP信封內(nèi)所標(biāo)識的位置中。SOAP信封然后可被放置在通道內(nèi)、被編碼成對應(yīng)的原始八比特組、并且對應(yīng)的原始八比特組被傳輸?shù)搅硪挥嬎銠C(jī)系統(tǒng)。
在其它實施例中,一種計算機(jī)系統(tǒng)從SOAP消息中檢索類型化的數(shù)據(jù)。該計算機(jī)系統(tǒng)可從另一計算機(jī)系統(tǒng)接收原始的八比特組、將原始的八比特組解碼成對應(yīng)的SOAP信封、并將SOAP信封放置在通道中。該計算機(jī)系統(tǒng)訪問包括在SOAP信封中的SOAP元素。
該計算機(jī)系統(tǒng)標(biāo)識對應(yīng)于SOAP元素的類型化的對象。該類型化的對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的。一個或多個消息協(xié)定屬性定義了SOAP元素和對應(yīng)的類型化對象參數(shù)之間的映射。該計算機(jī)系統(tǒng)依照一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化的對象參數(shù)。類型化的對象參數(shù)被提交給包括所標(biāo)識的類型化對象的應(yīng)用程序代碼(例如,服務(wù))。
本發(fā)明的這些和其它目的和特征將從以下描述和所附權(quán)利要求書中變得完全清楚,或者可通過對如后文所述的對本發(fā)明的實踐中獲知。


為進(jìn)一步闡明本發(fā)明的上述以及其它優(yōu)點(diǎn)和特征,將參考附圖中所示出的其特定實施例來呈現(xiàn)對本發(fā)明的更具體描述??梢岳斫?,這些附圖僅描述了本發(fā)明的典型實施例,并且因此不被認(rèn)為是限制其范圍。本發(fā)明將通過使用附圖用附加的特殊性和細(xì)節(jié)來描述和解釋,附圖中圖1示出了便于對交換的類型化對象使用簡單對象訪問協(xié)議的計算機(jī)體系結(jié)構(gòu)的示例。
圖2示出了靈活地發(fā)送類型化的應(yīng)用程序數(shù)據(jù)的方法的示例流程圖。
圖3示出了靈活地接收類型化的應(yīng)用程序數(shù)據(jù)的方法的示例流程圖。
圖4示出了適用于本發(fā)明的原理的操作環(huán)境。
具體實施例方式
本發(fā)明的原理克服了現(xiàn)有技術(shù)的上述問題,本發(fā)明針對用于靈活地傳輸類型化的應(yīng)用程序數(shù)據(jù)的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品。在某些實施例中,一種計算機(jī)系統(tǒng)配置SOAP消息以發(fā)送類型化的數(shù)據(jù)。應(yīng)用程序代碼(例如,客戶機(jī)代理)用類型化的對象參數(shù)(例如,方法調(diào)用的參數(shù))來調(diào)用類型化的對象(例如,方法)。該計算機(jī)系統(tǒng)訪問對應(yīng)于該類型化的對象的類型化的對象參數(shù)。該類型化的對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的。該一個或多個消息協(xié)定屬性定義了類型化的對象參數(shù)和對應(yīng)的SOAP元素之間的映射。
該計算機(jī)系統(tǒng)依照一個或多個消息協(xié)定屬性將所訪問的類型化的對象參數(shù)映射到SOAP元素。該計算機(jī)系統(tǒng)參考一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置(例如,消息頭部或消息主體)。計算機(jī)系統(tǒng)將SOAP元素插入到SOAP信封內(nèi)所標(biāo)識的位置中。SOAP信封然后可被放置在通道中、被編碼成對應(yīng)的原始八比特組、并且對應(yīng)的原始八比特組被傳輸?shù)搅硪挥嬎銠C(jī)系統(tǒng)。
在其它實施例中,計算機(jī)系統(tǒng)從SOAP消息中檢索類型化的數(shù)據(jù)。計算機(jī)系統(tǒng)可從另一計算機(jī)系統(tǒng)中檢索原始八比特組、將該原始八比特組解碼成對應(yīng)的SOAP信封、并將SOAP信封放置在通道中。計算機(jī)系統(tǒng)訪問包括在SOAP信封中的SOAP元素。
該計算機(jī)系統(tǒng)標(biāo)識對應(yīng)于SOAP元素的類型化的對象。該類型化的對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的。一個或多個消息協(xié)定屬性定義了SOAP元素和對應(yīng)的類型化對象參數(shù)之間的映射。該計算機(jī)系統(tǒng)依照一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化的對象參數(shù)。類型化的對象參數(shù)被提交給包括所標(biāo)識的類型化對象的應(yīng)用程序代碼(例如,服務(wù))。
本發(fā)明范圍內(nèi)的實施例包括用于承載或在其上儲存計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計算機(jī)可讀介質(zhì)。這一計算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜嬎銠C(jī)系統(tǒng)訪問的任何可用介質(zhì)。作為示例而非局限,這類計算機(jī)可讀介質(zhì)可包括物理存儲介質(zhì),諸如RAM、ROM、EPROM、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或可用于以計算機(jī)可執(zhí)行指令、計算機(jī)可讀指令或數(shù)據(jù)結(jié)構(gòu)的形式承載或儲存所需的程序代碼裝置并可由通用或?qū)S糜嬎銠C(jī)系統(tǒng)訪問的任何其它介質(zhì)。
在本說明書以及所附權(quán)利要求書中,“網(wǎng)絡(luò)”被定義為啟用計算機(jī)系統(tǒng)和/或模塊之間的電子數(shù)據(jù)的傳輸?shù)囊粋€或多個數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一通信連接(硬布線、無線或硬布線和無線的組合)被傳輸或提供給計算機(jī)系統(tǒng)時,該連接被適當(dāng)?shù)匾暈橛嬎銠C(jī)可讀介質(zhì)。由此,任何這樣的連接可被適當(dāng)?shù)胤Q為計算機(jī)可讀介質(zhì)。上述的組合也應(yīng)當(dāng)被包括在計算機(jī)可讀介質(zhì)的范圍之內(nèi)。計算機(jī)可執(zhí)行指令包括,例如使通用計算機(jī)系統(tǒng)或?qū)S糜嬎銠C(jī)系統(tǒng)執(zhí)行一個或一組特定功能的指令和數(shù)據(jù)。計算機(jī)可執(zhí)行指令可以是,例如二進(jìn)制代碼、諸如匯編語言等中間格式指令,或甚至是源代碼。
在本說明書及所附權(quán)利要求書中,“計算機(jī)系統(tǒng)”被定義為一個或多個軟件模塊、一個或多個硬件模塊或其組合,它們共同工作以對電子數(shù)據(jù)執(zhí)行操作。例如,計算機(jī)系統(tǒng)的定義包括個人計算機(jī)的硬件組件,以及諸如個人計算機(jī)的操作系統(tǒng)等軟件模塊。模塊的物理布局不是重要的。計算機(jī)系統(tǒng)可包括通過網(wǎng)絡(luò)耦合的一個或多個計算機(jī)。同樣,計算機(jī)系統(tǒng)可包括單個物理設(shè)備(諸如移動電話或個人數(shù)字助理“PDA”),其中內(nèi)部模塊(諸如存儲器和處理器)共同工作以對電子數(shù)據(jù)執(zhí)行操作。
在本說明書以及所附權(quán)利要求書中,“對象”被定義為可個別地選擇和操縱的任何項。對象被定義成包括諸如方法等軟件對象,以及包括數(shù)據(jù)和操縱數(shù)據(jù)的過程的其它軟件對象。對象也被定義成包括可在軟件對象之間交換(例如,作為輸入或輸出提供)的參數(shù)和返回值(例如,方法參數(shù)和方法返回值)。
在本說明書以及所附權(quán)利要求書中,“消息協(xié)定”被定義為諸如聲明性編程模型等描述簡單對象訪問協(xié)議(“SOAP”)格式的協(xié)定。消息協(xié)定可以基于定義SOAP信封的動作、頭部和主體部分的公共語言運(yùn)行時(“CLR”)屬性。屬性可用于類型以控制從例如方法、方法參數(shù)和方法返回值構(gòu)造SOAP信封的方式。要包括在消息協(xié)定中的字段和/或特性可用例如[MessageHeader]或[MessageBody]來注釋。
本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以在具有多種類型的計算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中實施,這些計算機(jī)系統(tǒng)配置包括個人計算機(jī)、膝上型計算機(jī)、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型計算機(jī)、移動電話、PDA、尋呼機(jī)等等。本發(fā)明也可在分布式系統(tǒng)環(huán)境中實施,其中通過網(wǎng)絡(luò)連接(通過硬布線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路或通過硬布線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計算機(jī)系統(tǒng)都執(zhí)行任務(wù)。在分布式計算系統(tǒng)中,程序模塊可以位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。
如計算機(jī)體系結(jié)構(gòu)100中所描述的,計算機(jī)系統(tǒng)101和111連接到網(wǎng)絡(luò)161。網(wǎng)絡(luò)161可以是局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)或甚至是因特網(wǎng)。連接到網(wǎng)絡(luò)161的計算機(jī)系統(tǒng)可從連接到網(wǎng)絡(luò)161的其它計算機(jī)系統(tǒng)接收數(shù)據(jù)或向其發(fā)送數(shù)據(jù)。因此,計算機(jī)系統(tǒng)101和111以及其它連接的計算機(jī)系統(tǒng)(未示出)可創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)101交換消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”)數(shù)據(jù)報和其它使用IP數(shù)據(jù)報的更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”)、超文本傳輸協(xié)議(“HTTP”)、簡單郵件傳輸協(xié)議(“SMTP”)等)。例如,計算機(jī)系統(tǒng)101和111可創(chuàng)建SOAP信封并通過網(wǎng)絡(luò)161交換SOAP信封。
計算機(jī)系統(tǒng)101包括應(yīng)用程序代碼102、類型轉(zhuǎn)換器103、通道106、編碼器107和存儲163。應(yīng)用程序代碼102可以是分布式應(yīng)用程序的一部分,諸如對應(yīng)于應(yīng)用程序代碼112的客戶機(jī)代理。應(yīng)用程序代碼102可以是依照方法或面向?qū)ο蟮木幊棠P烷_發(fā)的代碼。由此,在應(yīng)用程序代碼102的模塊之間、應(yīng)用程序代碼102的模塊和應(yīng)用程序代碼112的模塊之間、以及應(yīng)用程序代碼102的模塊和其它應(yīng)用程序代碼(例如,分布式應(yīng)用程序的不同部分)之間交換的數(shù)據(jù)可以是類型化的數(shù)據(jù),諸如邏輯、布爾、二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制、整數(shù)、浮點(diǎn)、字符、字符串、用戶定義數(shù)據(jù)類型以及用于定義數(shù)據(jù)結(jié)構(gòu)的這些數(shù)據(jù)類型的組合。
類型轉(zhuǎn)換器103被配置成將對應(yīng)于例如方法調(diào)用參數(shù)等類型化對象的類型化的數(shù)據(jù)轉(zhuǎn)換(或序列化)成對應(yīng)的SOAP元素,以及將SOAP元素轉(zhuǎn)換(或反序列化)成對應(yīng)于類型化對象的對應(yīng)的類型數(shù)據(jù)。例如包括在應(yīng)用程序代碼120中的方法等(例如,類的)類型化對象可用諸如消息協(xié)定模型191等消息協(xié)定模型的一個或多個消息協(xié)定屬性(例如,公共語言運(yùn)行時環(huán)境(“CLR”)屬性)來注釋。類型轉(zhuǎn)換器103可處理消息協(xié)定屬性,以將類型化對象的類型化數(shù)據(jù)映射到對應(yīng)的SOAP元素,例如,映射到可擴(kuò)展標(biāo)記語言(“XML”)指令。在某些實施例中,類型轉(zhuǎn)換器103是被配置成依照消息協(xié)定模型將CLR方法的參數(shù)轉(zhuǎn)換成一個或多個SOAP元素以及將SOAP元素轉(zhuǎn)換成CLR方法的參數(shù)的運(yùn)行時組件。因此,類型轉(zhuǎn)換器103可利用消息協(xié)定模型191將類型化的CLR對象轉(zhuǎn)換成SOAP元素的CLR表示,以及將SOAP元素的CLR表示轉(zhuǎn)換成類型化的CLR對象。
通道106提供了用于發(fā)送和接收SOAP信封的I/O抽象。通道106可提供用于使用各種傳輸協(xié)議方案(包括HTTP、TCP和用戶數(shù)據(jù)報協(xié)議(“UDP”))、接口方案以及尋址方案中的任一種的抽象。一般而言,通道也可被稱為連接。
編碼器107包括用于將SOAP元素編碼成原始的八比特組以及用于將原始的八比特組解碼成SOAP元素的一個或多個編碼器。由此,盡管編碼器107被稱為編碼器,然而編碼器107也可被配置成解碼。在計算機(jī)體系結(jié)構(gòu)100中,編碼器107可包括編碼器127、128和129。編碼器127、128和129的每一個可不同地被配置成編碼/解碼。例如,編碼器127可被配置成支持通過文本XML的SOAP,編碼器128可被配置成通過二進(jìn)制XML的SOAP,而編碼器129可被配置成支持消息傳輸優(yōu)化機(jī)制(MTOM)。編碼器也可實施壓縮方案,包括但不限于諸如LZ或GZIP等一般壓縮方案,它們是分層的編碼器(構(gòu)建在其他更多基礎(chǔ)編碼器上的編碼器)。
基于文本的編碼提供了一種提高分布式應(yīng)用程序之間的互操作性的機(jī)制。例如,基于文本的編碼可支持UTF8、UTF16高位在前(Big-Endian)以及UTF 16低位在前(Little-Endian)字符集?;谖谋镜木幋a可支持各種內(nèi)容類型(ContentTypes),諸如“text/xml”(文本/xml)以及“application/soap+xml”(應(yīng)用程序/soap+xml)(例如,對應(yīng)于SOAP 1.1或SOAP 1.2)。
二進(jìn)制XML編碼提供了用于以二進(jìn)制表示對XML進(jìn)行編碼的機(jī)制,該二進(jìn)制表示可以更緊湊并且對語法分析更有效。基于二進(jìn)制的編碼可支持諸如“application/soap+msbinl“和“application/soap+msbinsessionl”等內(nèi)容類型。
MTOM編碼提供了一種有效地對SOAP信封中的上下文中的二進(jìn)制XML元素進(jìn)行編碼的機(jī)制。MTOM將SOAP信封表示為多部分MIME容器的一部分(例如,許多部分中的一個)。SOAP信封的位置可以變化,以使發(fā)送者或接收者緩沖任何對應(yīng)的附件。例如,具有SOAP信封作為第一元素(例如,一個或多個部分的第一個)的MIME容器可使編寫器緩沖任何后續(xù)的對應(yīng)附件。另一方面,具有SOAP作為最后一個元素(例如,一個或多個部分中的最后一個)的MIME容器可使讀取器緩沖任何先前的對應(yīng)附件。
MTOM邏輯上包括SOAP信封內(nèi)的二進(jìn)制附件。MTOM對于其他消息編碼器是多態(tài)的,并且不需要對終端用戶編程模型的任何改變。此外,MTOM便于二進(jìn)制數(shù)據(jù)的附件保持其本機(jī)格式(未編碼),由此對SOAP消息保存了空間(與編碼的格式相比),并釋放了將用于實現(xiàn)(潛在地在計算上是昂貴的)編碼算法的資源。
存儲163可以是遠(yuǎn)程或本地大容量存儲設(shè)備,諸如磁盤驅(qū)動器。存儲163存儲字典162。字典162可以包含一個或多個SOAP和/或XML項,以及對應(yīng)的減小長度的替換項。例如,字典162可儲存值“1”作為對“Envelope”或“http://www.w3.org/2003/05/soap-envelope”的替代。因此,替代可用于在編碼之前減小SOAP信封的大小用于通過網(wǎng)絡(luò)161傳輸。
字典162可包括靜態(tài)字典部分和動態(tài)字典部分。字典162的靜態(tài)部分可包括在不同和多樣的應(yīng)用程序之間具有高度的共同性的SOAP和/或XML項。例如,存在許多不同的應(yīng)用程序(與功能無關(guān))將使用項“Envelope”和“http://www.w3.org/2003/05/soap-envelope”的高度可能性。由此,這些項可被包括在字段162的靜態(tài)部分內(nèi)。
字典162的動態(tài)部分可包括在較少的多個應(yīng)用程序之間是共同的,但是不必要在所有應(yīng)用程序或較多的多個應(yīng)用程序之間共同的SOAP和/或XML。例如,對銀行應(yīng)用程序公用的項可被包括在利用銀行應(yīng)用程序的計算機(jī)系統(tǒng)處的字典的動態(tài)部分中。然而,銀行項可能不包括在不使用銀行應(yīng)用程序的計算機(jī)系統(tǒng)處的字典的動態(tài)部分中。當(dāng)項被表示為在應(yīng)用程序之間是共同的時候,項可被包括在字典的動態(tài)部分中。有時,項可從字典的動態(tài)部分中移除(如,當(dāng)空閑期到期時)。動態(tài)字典項與靜態(tài)字典項在以下方面是不同的動態(tài)字典項可以在連接上連同在該連接上發(fā)送的引用它們的第一消息一起遞增地發(fā)送。這一記號化的范圍可以被限制在可能重復(fù)的消息的部分上,諸如涉及特定的類型化數(shù)據(jù)結(jié)構(gòu)或方法、參數(shù)或返回值的XML名字和名字空間。
計算機(jī)系統(tǒng)111包括應(yīng)用程序代碼112、類型轉(zhuǎn)換器113、通道116、編碼器117和存儲143。應(yīng)用程序代碼112可以是分布式應(yīng)用程序的一部分,諸如對應(yīng)于應(yīng)用程序代碼102的服務(wù)。應(yīng)用程序代碼112可以是依照方法或面向?qū)ο蟮木幊棠P烷_發(fā)的代碼。由此,在應(yīng)用程序代碼112的模塊之間、在應(yīng)用程序代碼112的模塊和應(yīng)用程序代碼102的模塊之間、以及在應(yīng)用程序代碼112的模塊和其他應(yīng)用程序代碼(例如,分布式應(yīng)用程序的不同的一部分)之間交換的數(shù)據(jù)可以是類型化的數(shù)據(jù),諸如邏輯、二進(jìn)制、八比特組、十六進(jìn)制、整數(shù)、浮點(diǎn)、字符、字符串、用戶定義數(shù)據(jù)類型、以及用于定義數(shù)據(jù)結(jié)構(gòu)的這些數(shù)據(jù)類型的組合。
類型轉(zhuǎn)換器113被配置成將對應(yīng)于諸如方法調(diào)用的參數(shù)等類型化對象的類型化數(shù)據(jù)轉(zhuǎn)換(或序列化)成對應(yīng)的SOAP元素,以及將SOAP元素轉(zhuǎn)換(或反序列化)成對應(yīng)于類型化對象的類型數(shù)據(jù)。例如包括在應(yīng)用程序代碼112中的方法(例如,公共封裝類的)類型化對象可用諸如消息協(xié)定模型191等消息協(xié)定模型的一個或多個消息協(xié)定屬性(例如,公共語言運(yùn)行時環(huán)境(“CLR”)屬性)來注釋。類型轉(zhuǎn)換器113可處理消息協(xié)定屬性,以將類型化對象的類型化數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的SOAP元素,諸如轉(zhuǎn)換成XML元素。在某些實施例中,類型轉(zhuǎn)換器113是被配置成依照消息協(xié)定模型將CLR方法的參數(shù)轉(zhuǎn)換成SOAP元素以及將SOAP元素轉(zhuǎn)換成CLR方法的參數(shù)的運(yùn)行時組件。因此,類型轉(zhuǎn)換器113可利用消息協(xié)定模型191將類型化的CLR對象轉(zhuǎn)換成SOAP元素的CLR表示,以及將SOAP元素的CLR表示轉(zhuǎn)換成類型化的CLR對象。
分派器114接收SOAP元素(例如,從適當(dāng)?shù)耐ǖ?,并將SOAP元素分派到適當(dāng)?shù)念愋突瘜ο?例如,方法)。當(dāng)分派器114接收SOAP元素時,分派器114試圖將SOAP元素與適當(dāng)?shù)念愋突瘜ο筮M(jìn)行匹配。在某些實施例中,分派器114試圖將XML元素的各部分(在SOAP元素中)與適當(dāng)?shù)念愋突瘜ο筮M(jìn)行匹配。分派器114可將XML元素的各部分與注釋對象141中的對象的消息協(xié)定屬性進(jìn)行比較。當(dāng)標(biāo)識了匹配,分派器114將SOAP元素分派到匹配對象。消息可被分派到注釋匹配對象的消息協(xié)定屬性的Action特性的值上。當(dāng)沒有標(biāo)識到匹配,分派器114可將SOAP元素分派到默認(rèn)的對象。
通道116提供了用于發(fā)送和接收SOAP信封的I/O抽象。通道116可提供用于使用各種傳輸協(xié)議方案(包括HTTP、TCP和用戶數(shù)據(jù)報協(xié)議(“UDP”))、接口方案以及尋址方案中的任一種的抽象。通道116可提供對同樣在通道106處提供的傳輸協(xié)議方案、接口方案和定址方案的抽象。
編碼器177包括用于將SOAP元素編碼成原始的八比特組以及用于將原始的八比特組解碼成SOAP元素的一個或多個編碼器。由此,盡管編碼器117被稱為編碼器,然而編碼器117也可被配置成解碼。在計算機(jī)體系結(jié)構(gòu)100中,編碼器117包括編碼器137、138和139。編碼器137、138和139的每一個可被配置成不同地編碼/解碼。例如,編碼器137可被配置成支持通過文本XML的SOAP,編碼器138可被配置成通過二進(jìn)制XML的SOAP,而編碼器139可被配置成支持消息傳輸優(yōu)化機(jī)制(MTOM)。
存儲143可以是遠(yuǎn)程或本地大容量存儲設(shè)備,諸如磁盤驅(qū)動器。存儲143存儲字典162和對象141。字典162可以包含一個或多個SOAP和/或XML項,以及減小長度的對應(yīng)替代。例如,字典162可儲存值“2”作為對“wsa”的替代。因此,替代可用于在編碼之前減小SOAP信封的大小用于通過網(wǎng)絡(luò)161傳輸。
字典142可包括靜態(tài)字典部分和動態(tài)字典部分。靜態(tài)部分可包括在不同和多樣的應(yīng)用程序之間具有高度的共同性的SOAP和/或XML項。動態(tài)部分可包括在較少的多個應(yīng)用程序之間是共同的,但是不必要在所有應(yīng)用程序或較多的多個應(yīng)用程序之間共同的SOAP和/或XML。
圖2示出了靈活地發(fā)送類型化應(yīng)用程序數(shù)據(jù)的方法200的示例流程圖。方法200將參考計算機(jī)體系結(jié)構(gòu)100中的模塊和數(shù)據(jù)來描述。
應(yīng)用程序代碼102可生成類型化數(shù)據(jù)131,即,例如包括在類型化消息中。類型化消息可以依照消息協(xié)定模型191來配置,以將SOAP信封表示為類型化的(CLR)對象。類型化數(shù)據(jù)131可包括方法的參數(shù)和/或返回值。例如,應(yīng)用程序代碼102可用使得方法被調(diào)用的參數(shù)來調(diào)用方法。
方法200包括訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作(動作201)。例如,類型轉(zhuǎn)換器103可訪問類型化數(shù)據(jù)131。類型化數(shù)據(jù)131可包括對應(yīng)于類型化對象的參數(shù)(例如,用于調(diào)用方法的參數(shù))。類型化對象可用消息協(xié)定模型191的一個或多個消息協(xié)定屬性,諸如屬性171來注釋。因此,屬性171定義了類型化數(shù)據(jù)131和對應(yīng)的SOAP元素(例如,SOAP元素172)之間的映射。
方法200包括依照一個或多個消息協(xié)定屬性將訪問的類型化對象參數(shù)映射到SOAP元素的動作(動作202)。例如,類型轉(zhuǎn)換器103可依照屬性171將類型化數(shù)據(jù)131(例如,用于調(diào)用方法的參數(shù))映射到SOAP元素172(例如,XML元素)。
方法200包括參考一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置的動作(動作203)。例如,類型轉(zhuǎn)換器103可參考屬性171來標(biāo)識信封132A(在計算機(jī)系統(tǒng)101處創(chuàng)建)內(nèi)的位置。屬性171可標(biāo)識例如信封132A中的頭部或消息主體。此外,屬性171可標(biāo)識消息頭部或消息主體內(nèi)指定的位置。由此,對應(yīng)的SOAP元素可在消息頭部或消息主體內(nèi)排序。
方法200包括將SOAP元素插入到SOAP信封內(nèi)所標(biāo)識的位置中的動作(動作204)。例如,類型轉(zhuǎn)換器103可將SOAP元素172插入到信封132A的頭部部分或主體部分中(例如,其指定位置)。信封132A可以例如依照所選擇的傳輸、接口和尋址方案通過通道在通道106之間傳輸。例如,信封132A可以在傳輸133中封裝。
來自編碼器107的編碼器,諸如編碼器128可將封裝的信封132A編碼成原始的八比特組。在適當(dāng)時,編碼器128參考字典162來替代常用的項。計算機(jī)系統(tǒng)101通過網(wǎng)絡(luò)161向計算機(jī)系統(tǒng)111發(fā)送原始的八比特組。計算機(jī)系統(tǒng)111通過網(wǎng)絡(luò)161從計算機(jī)系統(tǒng)101接收原始的八比特組。
圖3示出了用于靈活地接收類型化應(yīng)用程序數(shù)據(jù)的方法300的示例流程圖。方法300將參考計算機(jī)體系結(jié)構(gòu)100中的模塊和數(shù)據(jù)來描述。
來自編碼器117的編碼器,諸如編碼器138可解碼原始的八比特組134以展示信封132B。在適當(dāng)時,編碼器138參考字典142以替換在編碼前替換的項。解碼原始的八比特組134可展示信封132B是例如依照所選擇的傳輸、接口和尋址方案來傳輸?shù)?。例如,解碼原始的八比特組134可展示信封132B是在傳輸133中封裝的。
基于傳輸、接口和/或?qū)ぶ贩桨?,封裝的信封132B可通過適當(dāng)?shù)耐ǖ纻鬏?。由于網(wǎng)絡(luò)161中的中介可能能夠在傳輸期間改變信封132A中的部分(例如,路由頭部),因此信封132A和信封132B可包括不同的數(shù)據(jù)。分派器114接收包括SOAP元素172的信封132B。
方法300包括訪問包括在SOAP信封中的SOAP元素的動作(動作301)。例如,分派器114可訪問SOAP元素172。
方法300包括標(biāo)識對應(yīng)于SOAP元素的類型化對象的動作(動作302)。例如,分派器114可從對象141中(例如,包括在計算機(jī)系統(tǒng)111處的各種分布式應(yīng)用程序組件中的對象的集合)標(biāo)識對象151。對象151可以是用消息協(xié)定模型191的屬性181來注釋的類型化對象(例如,應(yīng)用程序代碼112的方法)。屬性181可定義SOAP元素172和對應(yīng)的類型化對象參數(shù)(例如,用于調(diào)用方法的參數(shù))之間的映射。分派器114可將SOAP元素172各部分(例如,XML元素的各部分)與屬性181進(jìn)行匹配,以標(biāo)識SOAP元素172對應(yīng)于對象151。在某些實施例中,這包括利用URI(例如,WS尋址動作URI)將SOAP元素172映射到對象151。
方法300包括依照一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化對象參數(shù)的動作(動作303)。例如,類型轉(zhuǎn)換器113可將SOAP元素172映射到包括類型化數(shù)據(jù)131的類型化消息(依照屬性181)。類型化消息可以依照消息協(xié)定模型191來配置,用于將SOAP信封表示為類型化的(CLR)對象。類型化數(shù)據(jù)131可包括方法的參數(shù)和/或返回值。例如,應(yīng)用程序代碼112可接收用使得方法被調(diào)用的參數(shù)的方法調(diào)用(在應(yīng)用程序102處啟動)。
由此,本發(fā)明的實施例使得開發(fā)者能夠控制將方法參數(shù)和返回值序列化到消息頭部和消息主體的方式。同樣,開發(fā)者能夠控制將方法參數(shù)和返回值從消息頭部和消息主體中反序列化的方式。因此,開發(fā)的應(yīng)用程序能夠保留類型化數(shù)據(jù)(例如,CLR類型化對象)和SOAP消息通信的靈活性兩者的益處。
以下示例代碼指令描述了一個注釋的類,其中注釋的類的特性和字段是用消息協(xié)定屬性來注釋的第1行[MessageContract(Action=“http://createpersonrequest”,
Name=″CreatePersonRequest″)]第2行public class CreatePersonRequest {第3行[MessageBody(Namespace=“http://namespace”,Name=“MyData”,Position=2)]第4行public string OptionalData;第5行[MessageBody(Namespaceuri=“http://namespace”,Name=“TheList”)]第6行Public Ilist<int>Ids;第7行[MessageHeader(Namespaceuri=“http://namespace”,Name=“Request”)]第8行internal Guid RequestId;第9行[MessageHeader(Namespaceuri=“http://namespace”,Name=“Session”,MustUnderstand=true,Relay=false,Actor=http://actor)]第10行internal Guid SessionId;第一行處的[MessageContract]注釋了第2行處的公共類CreatePersonRequest,并定義了消息協(xié)定“CreatePersonRequest”(例如,消息協(xié)定模型191),用于控制SOAP信封的處理和創(chuàng)建。第3行和第5行分別用指示在SOAP信封的主體中的包括的[MessageBody]注釋了第4行和第6行。第7行和第8行分別用指示在SOAP信封中的包括的[MessageHeader]注釋了第9行和第10行。第3行上的“Position=2”屬性指示注釋的類型化數(shù)據(jù)要作為第二個元素被包括在消息主體內(nèi)。
諸如類型轉(zhuǎn)換器103或類型轉(zhuǎn)換器113等類型轉(zhuǎn)換器可利用諸如消息協(xié)定模型191等消息協(xié)定模型將示例代碼指令轉(zhuǎn)換成以下的示例SOAP信封<soapEnvelope>xmlnssoap=“http://schemas.xmlsoap.org/soap/envelope/”xmlnswsa=“http://schemas.xmlsoap.org/ws/2004/03/addressing”<soapHeader xmlnsx=“http://namespace”>
<xRequest>xc6gf83</Request>
<xSession MustUnderstand=“true”,Relay=“false”,Actor=“http://actor”>
gg57hjfg</xSession>
<wsaAction>http://createpersonrequest</wsaAction>
</soapHeader>
<soapBody xmlnsx=′http://namespace′>
<xTheList>
<xItem>5</xItem>
<xItem>10</xItem>
</xTheList>
<xMyData>some data here</xMyData>
</soapBody></soapEnvelope>
諸如類型轉(zhuǎn)換器103或類型轉(zhuǎn)換器113等類型轉(zhuǎn)換器也可利用諸如消息協(xié)定模型191等消息協(xié)定模型將示例SOAP信封轉(zhuǎn)換成示例代碼指令。在示例SOAP信封中,“MyData”元素在SOAP信封主體的第二個位置上。
在本發(fā)明的某些實施例中,傳輸流用于補(bǔ)償每次在一個時刻不能完全在存儲器中表示的較大的消息。即,傳輸流對于大于對處理消息的服務(wù)可用的存儲器(例如,由于物理或分配的存儲器限制)的消息是有利的。傳輸流可包括流傳送消息的專用傳輸連接(TCP套接字、命名管道、HTTP連接等)。要使用傳輸流的計算機(jī)系統(tǒng)可依照適當(dāng)?shù)膫鬏敼S的傳輸模式特性(例如,TcpChannelFactory/TcpListenerFactory、NamedPipeChannelFactory/NamedPipeListenerFactory、以及HttpChannelFactory/HttpListenerFactory)來配置。
傳輸流可以通過用于注釋類型化對象的對應(yīng)的傳輸綁定元素(例如,TransportBindingElement、NamedPipeTransportBindingElement以及HttpTransportBindingElement)來啟用。傳輸特性可基于通道類型而改變。例如,對于TCP或NamedPipe(命名管道),可使用IOutputChannel/IInputChannel或IDuplexSessionChannel(它使用一對IOutputChannel/IInputChannel)。對于HTTP,可使用IRequestChannel/IReplyChannel、IRequestSessionChannel/IReplySessionChannel、IOutputChannel/IInputChannel或IFullDuplexChannel。當(dāng)對給定的數(shù)據(jù)協(xié)定配置流傳送時,適當(dāng)?shù)耐ǖ?例如,在通道106和/或116中)可便于請求和創(chuàng)建正確的通道類型。
傳輸流對于消息的讀取器是透明的。即,應(yīng)用程序無需不同地編寫其本身以處理該消息。應(yīng)用程序只需使用公共XML元素API(例如,XmlReader)順序地讀取值。傳輸綁定元素可通過例示傳輸綁定元素并向該元素上的特性分配值來配置。傳輸綁定元素也可通過CLR配置(例如,myapp.config文件)來配置。
圖4示出了適用于本發(fā)明的原理的操作環(huán)境。圖4及以下討論提供了對適于在其中實現(xiàn)本發(fā)明的計算環(huán)境的簡要概括描述。盡管并非必須,但本發(fā)明將在諸如由計算機(jī)系統(tǒng)執(zhí)行的程序模塊等計算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。計算機(jī)可執(zhí)行指令、相關(guān)的數(shù)據(jù)結(jié)構(gòu)以及程序模塊表示了用于執(zhí)行這里揭示的方法的動作的程序代碼裝置的示例。
參考圖4,用于實現(xiàn)本發(fā)明的示例系統(tǒng)包括計算機(jī)420形式的通用計算設(shè)備,包括處理單元421、系統(tǒng)存儲器422以及將包括系統(tǒng)存儲器422的各類系統(tǒng)組件耦合至處理單元421的系統(tǒng)總線423。處理單元421可以執(zhí)行被設(shè)計成實現(xiàn)計算機(jī)420的特征,包括本發(fā)明的特征的計算機(jī)可執(zhí)行指令。系統(tǒng)總線423可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲器包括只讀存儲器(ROM)424和隨機(jī)存取存儲器(RAM)425。基本輸入/輸出系統(tǒng)(BIOS)426,包含如在啟動時協(xié)助在計算機(jī)420內(nèi)的元件之間傳輸信息的基本例程,可儲存在ROM 424中。
計算機(jī)420也可包括用于對磁硬盤439進(jìn)行讀寫的磁硬盤驅(qū)動器427、用于對可移動磁盤429進(jìn)行讀寫的磁盤驅(qū)動器428以及用于對可移動光盤431如CD-ROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動器430。磁硬盤驅(qū)動器427、磁盤驅(qū)動器428以及光盤驅(qū)動器430分別通過硬盤驅(qū)動器接口432、磁盤驅(qū)動器接口433和光盤驅(qū)動器接口434連接至系統(tǒng)總線423。驅(qū)動器及其相關(guān)的計算機(jī)可讀介質(zhì)為計算機(jī)420提供了計算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲。盡管這里描述的示例環(huán)境采用了磁硬盤439、可移動磁盤429以及可移動光盤431,然而也可以使用用于儲存數(shù)據(jù)的其它類型的計算機(jī)可讀介質(zhì),包括盒式磁帶、閃存卡、數(shù)字多功能盤、Bernoulli盒式磁盤、RAM、ROM等等。
包括一個或多個程序模塊的程序代碼裝置可儲存在硬盤439、磁盤429、光盤431、ROM424或RAM425中,包括操作系統(tǒng)435、一個或多個應(yīng)用程序436、其它程序模塊437以及程序數(shù)據(jù)438。用戶可以通過鍵盤440、定位設(shè)備442或其它輸入設(shè)備(未示出),如麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等向計算機(jī)420輸入命令和信息。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線423的輸入/輸出接口446連接到處理單元421。輸入/輸出接口446邏輯上表示各種各樣不同接口中的任一種,諸如串行端口接口、PS/2接口、并行端口接口、通用串行總線(USB)或電子與電氣工程師協(xié)會(“IEEE”)1394接口(即,火線接口),或甚至可以邏輯上表示不同接口的組合。
監(jiān)視器447或其他顯示設(shè)備也通視頻接口448連接到系統(tǒng)總線423。其它外圍輸出設(shè)備(未示出),如揚(yáng)聲器和打印機(jī),也可被連接到計算機(jī)系統(tǒng)420。
計算機(jī)系統(tǒng)420可連接到網(wǎng)絡(luò),諸如辦公室范圍或企業(yè)范圍計算機(jī)網(wǎng)絡(luò)、家庭網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和/或因特網(wǎng)。計算機(jī)系統(tǒng)420可通過這類網(wǎng)絡(luò)與諸如遠(yuǎn)程計算機(jī)系統(tǒng)、遠(yuǎn)程應(yīng)用程序和/或遠(yuǎn)程數(shù)據(jù)庫等外部源交換數(shù)據(jù)。
計算機(jī)系統(tǒng)420包括網(wǎng)絡(luò)接口453,通過該接口,計算機(jī)系統(tǒng)420從外部源接收數(shù)據(jù)和/或向外部源發(fā)送數(shù)據(jù)。如圖4中所示的,網(wǎng)絡(luò)接口453便于通過鏈路451與遠(yuǎn)程計算機(jī)系統(tǒng)483交換數(shù)據(jù)。網(wǎng)絡(luò)接口453可以邏輯上表示一個或多個軟件和/或硬件模塊,諸如網(wǎng)絡(luò)接口卡和對應(yīng)的網(wǎng)絡(luò)驅(qū)動器接口規(guī)范(“NDIS”)棧。鏈路451表示網(wǎng)絡(luò)的一部分(例如,以太網(wǎng)段),而遠(yuǎn)程計算機(jī)系統(tǒng)483表示網(wǎng)絡(luò)的節(jié)點(diǎn)。
同樣計算機(jī)系統(tǒng)420包括輸入/輸出接口446,通過該接口,計算機(jī)系統(tǒng)420可從外部源接收數(shù)據(jù)和/或向外部源發(fā)送數(shù)據(jù)。輸入/輸出接口446通過鏈路459被耦合到調(diào)制解調(diào)器454(例如,標(biāo)準(zhǔn)調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器或數(shù)字用戶線(“DSL”)調(diào)制解調(diào)器),通過該接口,計算機(jī)系統(tǒng)420從外部源接收數(shù)據(jù)和/或向外部源發(fā)送數(shù)據(jù)。如圖4中所示的,輸入/輸出接口446和調(diào)制解調(diào)器454便于通過鏈路452與遠(yuǎn)程計算機(jī)系統(tǒng)493交換數(shù)據(jù)。鏈路452表示網(wǎng)絡(luò)的一部分,而遠(yuǎn)程計算機(jī)系統(tǒng)493表示網(wǎng)絡(luò)的節(jié)點(diǎn)。
盡管圖4表示了適用于本發(fā)明的操作環(huán)境,然而,本發(fā)明的原理可用于能夠(如有必要在適當(dāng)?shù)男薷南?實現(xiàn)本發(fā)明的原理的任何系統(tǒng)。圖4所示的環(huán)境僅是說明性的,并且決不表示其中可實現(xiàn)本發(fā)明的各種各樣環(huán)境的甚至一小部分。
依照本發(fā)明,包括應(yīng)用程序代碼、客戶機(jī)代理、服務(wù)、類型轉(zhuǎn)換器、通道、消息編碼器/解碼器、以及分派器和相關(guān)聯(lián)的數(shù)據(jù),包括類型化數(shù)據(jù)SOAP元素、傳輸、原始的八比特組、字典以及對象的模塊可被儲存在與計算機(jī)系統(tǒng)420相關(guān)聯(lián)的任何計算機(jī)可讀介質(zhì)中并可從其中訪問。例如,這些模塊和相關(guān)聯(lián)的程序數(shù)據(jù)的各部分可以包括在操作系統(tǒng)435、應(yīng)用程序436、程序模塊437和/或程序數(shù)據(jù)438中,以儲存在系統(tǒng)存儲器422中。
當(dāng)諸如磁硬盤439等大容量存儲設(shè)備被耦合到計算機(jī)系統(tǒng)420,這些模塊和相關(guān)聯(lián)的程序數(shù)據(jù)也可被儲存在大容量存儲設(shè)備中。在網(wǎng)絡(luò)化環(huán)境中,相對于計算機(jī)420所描述的程序模塊或其部分可儲存在遠(yuǎn)程存儲器存儲設(shè)備中,諸如與遠(yuǎn)程計算機(jī)系統(tǒng)483和/或遠(yuǎn)程計算機(jī)系統(tǒng)493相關(guān)聯(lián)的系統(tǒng)存儲器和/或大容量存儲設(shè)備中。這些模塊的執(zhí)行可以在如上所述的分布式計算環(huán)境中進(jìn)行。
本發(fā)明可以用其它特定的形式來實施,而不脫離其精神或本質(zhì)特征。所描述的實施例在所有方面都被認(rèn)為是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非以上的描述來指示。落入權(quán)利要求書的等效技術(shù)方案的意義和范圍內(nèi)的所有改變都包含在其范圍之內(nèi)。
權(quán)利要求
1.在可連同一個或多個其它計算機(jī)一起網(wǎng)絡(luò)連接到網(wǎng)絡(luò)的計算機(jī)系統(tǒng)中,一種靈活地發(fā)送類型化應(yīng)用程序數(shù)據(jù)的方法,所述方法包括訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作,所述類型化對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的,所述一個或多個消息協(xié)定屬性定義了類型化對象參數(shù)和對應(yīng)的SOAP元素之間的映射;依照所述一個或多個消息協(xié)定屬性將所訪問的類型化對象參數(shù)映射到SOAP元素的動作;參考所述一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置的動作;以及將所述SOAP元素插入到所述SOAP信封中所標(biāo)識的位置中的動作。
2.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問表示方法的參數(shù)的類的動作。
3.如權(quán)利要求2所述的方法,其特征在于,訪問表示方法的參數(shù)的類的動作包括訪問表示公共語言運(yùn)行時環(huán)境方法的參數(shù)的公共類的動作。
4.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問用動作URI注釋的類型化對象的動作。
5.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問表示方法返回值的類的動作。
6.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問SOAP元素的公共語言運(yùn)行時環(huán)境表示的動作。
7.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問類型化消息的動作。
8.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問用消息協(xié)定屬性注釋的已注釋類型化對象參數(shù)的動作,所述消息協(xié)定屬性指示類型化對象參數(shù)的XML表示要包括在SOAP信封頭部中。
9.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問用消息協(xié)定屬性注釋的已注釋類型化對象參數(shù)的動作,所述消息協(xié)定屬性指示類型化對象參數(shù)的XML表示要包括在SOAP信封主體中。
10.如權(quán)利要求1所述的方法,其特征在于,訪問對應(yīng)于類型化對象的類型化對象參數(shù)的動作包括訪問已注釋類型化對象參數(shù)的動作,所述已注釋類型化對象參數(shù)是用一個或多個消息協(xié)定屬性來注釋的,所述一個或多個消息協(xié)定屬性是從指示SOAP信封內(nèi)的位置、名字、名字空間URI、類型化對象參數(shù)是否必須被理解、類型化對象參數(shù)是否可被中繼、以及類型化對象參數(shù)的行動者的屬性中選出的。
11.如權(quán)利要求1所述的方法,其特征在于,依照所述一個或多個消息協(xié)定屬性將所訪問的類型化對象參數(shù)映射到SOAP元素的動作包括將所訪問的類型化對象參數(shù)序列化到SOAP元素的動作。
12.如權(quán)利要求1所述的方法,其特征在于,依照所述一個或多個消息協(xié)定屬性將所訪問的類型化對象參數(shù)映射到SOAP元素的動作包括將所訪問的類型化對象參數(shù)映射到對應(yīng)的XML元素的動作。
13.如權(quán)利要求1所述的方法,其特征在于,參考所述一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置的動作包括參考標(biāo)識SOAP信封的頭部部分的消息協(xié)定屬性的動作。
14.如權(quán)利要求1所述的方法,其特征在于,參考所述一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置的動作包括參考標(biāo)識SOAP信封的主體部分的消息協(xié)定屬性的動作。
15.如權(quán)利要求1所述的方法,其特征在于,將所述SOAP元素插入到所述SOAP信封中所標(biāo)識的位置中的動作包括將對應(yīng)的XML指令插入到所述SOAP信封的頭部部分中的動作。
16.如權(quán)利要求1所述的方法,其特征在于,將所述SOAP元素插入到所述SOAP信封中所標(biāo)識的位置中的動作包括將對應(yīng)的XML指令插入到所述SOAP信封的主體部分中的動作。
17.如權(quán)利要求1所述的方法,其特征在于,還包括將所述SOAP信封編碼成原始的八比特組的動作;以及將所述原始的八比特組發(fā)送到接收計算機(jī)系統(tǒng)的動作。
18.如權(quán)利要求17所述的方法,其特征在于,將所述SOAP信封編碼成原始的八比特組的動作包括將所述SOAP信封編碼成其中原始八比特組的大小沒有預(yù)定義限制的八比特組的動作。
19.如權(quán)利要求17所述的方法,其特征在于,將所述SOAP信封編碼成原始的八比特組的動作包括生成所述SOAP信封的基于文本的編碼的動作。
20.如權(quán)利要求17所述的方法,其特征在于,將所述SOAP信封編碼成原始的八比特組的動作包括使用消息傳輸優(yōu)化機(jī)制來編碼所述SOAP信封的動作。
21.如權(quán)利要求17所述的方法,其特征在于,將所述SOAP信封編碼成原始的八比特組的動作包括生成所述SOAP信封的基于二進(jìn)制的編碼的動作。
22.如權(quán)利要求21所述的方法,其特征在于,生成所述SOAP信封的基于二進(jìn)制的編碼的動作包括用減小長度的替代項替代一個或多個SOAP項和/或XNL項,使得所述SOAP信封可被更有效地傳輸?shù)膭幼鳌?br> 23.如權(quán)利要求17所述的方法,其特征在于,將所述原始的八比特組發(fā)送到接收計算機(jī)系統(tǒng)的動作包括將所述原始的八比特組流傳送到所述接收計算機(jī)系統(tǒng)的動作。
24.在可連同一個或多個其它計算機(jī)一起網(wǎng)絡(luò)連接到網(wǎng)絡(luò)的計算機(jī)系統(tǒng)中,一種靈活地接收類型化應(yīng)用程序數(shù)據(jù)的方法,所述方法包括訪問包括在SOAP信封中的SOAP元素的動作;標(biāo)識對應(yīng)于所述SOAP元素的類型化對象的動作,所述類型化對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的,所述一個或多個消息協(xié)定屬性定義了SOAP元素和對應(yīng)的類型化對象參數(shù)之間的映射;以及依照所述一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化對象參數(shù)的動作,所述類型化對象參數(shù)用于提交給所標(biāo)識的類型化對象。
25.如權(quán)利要求24所述的方法,其特征在于,還包括從發(fā)送計算機(jī)系統(tǒng)接收原始的八比特組的動作;以及將所述原始的八比特組解碼成所述SOAP信封的動作。
26.如權(quán)利要求25所述的方法,其特征在于,從發(fā)送計算機(jī)系統(tǒng)接收原始的八比特組的動作包括接收流傳送的八比特組的動作。
27.如權(quán)利要求25所述的方法,其特征在于,將所述原始的八比特組解碼成所述SOAP信封的動作包括解碼所述SOAP信封的基于文本的編碼的動作。
28.如權(quán)利要求25所述的方法,其特征在于,將所述原始的八比特組解碼成所述SOAP信封的動作包括解碼所述SOAP信封的基于二進(jìn)制的編碼的動作。
29.如權(quán)利要求28所述的方法,其特征在于,解碼所述SOAP信封的基于二進(jìn)制的編碼的動作包括用原始的SOAP項和/或XML項來替代減小長度的替代項,使得所述SOAP信封被返回到先前的配置的動作。
30.如權(quán)利要求25所述的方法,其特征在于,將所述原始的八比特組解碼成所述SOAP信封的動作包括使用消息傳輸優(yōu)化機(jī)制來解碼所述原始的八比特組的動作。
31.如權(quán)利要求24所述的方法,其特征在于,訪問包括在SOAP信封中的SOAP元素的動作包括從所述SOAP信封的頭部部分中訪問XML元素的動作。
32.如權(quán)利要求24所述的方法,其特征在于,訪問包括在SOAP信封中的SOAP元素的動作包括從所述SOAP信封的主體部分中訪問XML元素的動作。
33.如權(quán)利要求24所述的方法,其特征在于,標(biāo)識對應(yīng)于所述SOAP元素的類型化對象的動作包括將所述SOAP信封中的XML元素與已注釋類的消息協(xié)定屬性進(jìn)行比較的動作。
34.如權(quán)利要求24所述的方法,其特征在于,標(biāo)識對應(yīng)于所述SOAP元素的類型化對象的動作包括訪問對應(yīng)于所述類型化對象的URI的動作。
35.如權(quán)利要求24所述的方法,其特征在于,標(biāo)識對應(yīng)于所述SOAP元素的類型化對象的動作包括標(biāo)識表示方法的參數(shù)的類的動作。
36.如權(quán)利要求35所述的方法,其特征在于標(biāo)識表示方法的參數(shù)的類的動作包括訪問表示公共語言運(yùn)行時環(huán)境方法的參數(shù)的公共類的動作。
37.如權(quán)利要求35所述的方法,其特征在于,標(biāo)識對應(yīng)于所述SOAP元素的類型化對象的動作包括將所述SOAP信封分派到適當(dāng)?shù)姆椒ǖ膭幼鳌?br> 38.如權(quán)利要求24所述的方法,其特征在于,依照所述一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化對象參數(shù)的動作包括將所述SOAP元素反序列化到類型化對象參數(shù)的動作。
39.如權(quán)利要求24所述的方法,其特征在于,依照所述一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化對象參數(shù)的動作包括將XML元素映射到對應(yīng)的類型化對象參數(shù)的動作。
40.如權(quán)利要求24所述的方法,其特征在于,還包括用所述類型化對象參數(shù)調(diào)用方法的動作。
41.一種在可連同一個或多個其它計算機(jī)一起網(wǎng)絡(luò)連接到網(wǎng)絡(luò)的計算機(jī)系統(tǒng)中使用的計算機(jī)程序產(chǎn)品,所述計算機(jī)程度產(chǎn)品用于實現(xiàn)一種靈活地發(fā)送類型化應(yīng)用程序數(shù)據(jù)的方法,所述計算機(jī)程序產(chǎn)品包括其上儲存有計算機(jī)可執(zhí)行指令的一個或多個計算機(jī)可讀介質(zhì),當(dāng)所述指令由處理器執(zhí)行時,使所述計算機(jī)系統(tǒng)執(zhí)行以下動作訪問對應(yīng)于類型化對象的類型化對象參數(shù),所述類型化對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的,所述一個或多個消息協(xié)定屬性定義了類型化對象參數(shù)和對應(yīng)的SOAP元素之間的映射;依照所述一個或多個消息協(xié)定屬性將所訪問的類型化對象參數(shù)映射到SOAP元素;參考所述一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置;以及將所述SOAP元素插入到所述SOAP信封中所標(biāo)識的位置中。
42.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問對應(yīng)于類型化對象的類型化對象參數(shù)的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問表示公共語言運(yùn)行時環(huán)境方法的參數(shù)的公共類的計算機(jī)可執(zhí)行指令。
43.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問對應(yīng)于類型化對象的類型化對象參數(shù)的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問表示公共語言運(yùn)行時環(huán)境方法的返回值的公共類的計算機(jī)可執(zhí)行指令。
44.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)依照所述一個或多個消息協(xié)定屬性將所訪問的類型化對象映射到SOAP元素的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)將所訪問的類型化對象參數(shù)序列化到SOAP元素的計算機(jī)可執(zhí)行指令。
45.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)參考所述一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)參考標(biāo)識SOAP信封的頭部部分的消息協(xié)定屬性的計算機(jī)可執(zhí)行指令。
46.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)參考所述一個或多個消息協(xié)定屬性來標(biāo)識SOAP信封內(nèi)的位置的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)參考標(biāo)識SOAP信封的主體部分的消息協(xié)定屬性的計算機(jī)可執(zhí)行指令。
47.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)將所述SOAP元素插入到所述SOAP信封內(nèi)所標(biāo)識的位置中的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)將所述SOAP元素插入到所述SOAP信封的頭部部分中的計算機(jī)可執(zhí)行指令。
48.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)將所述SOAP元素插入到所述SOAP信封內(nèi)所標(biāo)識的位置中的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)將所述SOAP元素插入到所述SOAP信封的主體部分中的計算機(jī)可執(zhí)行指令。
49.一種在可連同一個或多個其它計算機(jī)一起網(wǎng)絡(luò)連接到網(wǎng)絡(luò)的計算機(jī)系統(tǒng)中使用的計算機(jī)程序產(chǎn)品,所述計算機(jī)程度產(chǎn)品用于實現(xiàn)一種靈活地接收類型化應(yīng)用程序數(shù)據(jù)的方法,所述計算機(jī)程序產(chǎn)品包括其上儲存有計算機(jī)可執(zhí)行指令的一個或多個計算機(jī)可讀介質(zhì),當(dāng)所述指令由處理器執(zhí)行時,使所述計算機(jī)系統(tǒng)執(zhí)行以下動作訪問包括在SOAP信封中的SOAP元素;標(biāo)識對應(yīng)于所述SOAP元素的類型化對象,所述類型化對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的,所述一個或多個消息協(xié)定屬性定義了SOAP元素和對應(yīng)的類型化對象參數(shù)之間的映射;以及依照所述一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化對象參數(shù),所述類型化對象參數(shù)用于提交給所標(biāo)識的類型化對象。
50.如權(quán)利要求49所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問包括在SOAP信封中的SOAP元素的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)從所述SOAP信封的頭部部分中訪問XML元素的計算機(jī)可執(zhí)行指令。
51.如權(quán)利要求49所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問包括在SOAP信封中的SOAP元素的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)從所述SOAP信封的主體部分中訪問XML元素的計算機(jī)可執(zhí)行指令。
52.如權(quán)利要求49所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)標(biāo)識對應(yīng)于所述SOAP元素的類型化對象的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)訪問對應(yīng)于所述類型化對象的URI的計算機(jī)可執(zhí)行指令。
53.如權(quán)利要求49所述的計算機(jī)程序產(chǎn)品,其特征在于,當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)依照所述一個或多個消息協(xié)定屬性將所訪問的SOAP元素映射到類型化對象參數(shù)的所述計算機(jī)可執(zhí)行指令包括當(dāng)被執(zhí)行時使所述計算機(jī)系統(tǒng)將所述SOAP元素反序列化到類型化對象參數(shù)的計算機(jī)可執(zhí)行指令。
全文摘要
本發(fā)明涉及使用簡單對象訪問協(xié)議(“SOAP”)來交換類型化對象,諸如用于調(diào)用方法的參數(shù)。一種計算機(jī)系統(tǒng)訪問對應(yīng)于類型化對象的類型化對象參數(shù)。該類型化對象是用消息協(xié)定模型的一個或多個消息協(xié)定屬性來注釋的,該消息協(xié)定模型定義了類型化對象參數(shù)和對應(yīng)的SOAP元素之間的映射。該計算機(jī)系統(tǒng)利用消息協(xié)定屬性將類型化對象參數(shù)映射到SOAP元素,并將SOAP元素插入到SOAP信封中。接收計算機(jī)系統(tǒng)訪問該SOAP元素,并利用消息協(xié)定屬性將SOAP元素映射回類型化對象參數(shù)。
文檔編號H04L29/06GK1783882SQ20051011887
公開日2006年6月7日 申請日期2005年11月3日 優(yōu)先權(quán)日2004年12月3日
發(fā)明者D·沃滕代克, D·M·珀迪, E·B·克里斯滕森, K·D·沃爾夫, M·J·庫爾森, M·J·馬魯切克, M·S·威爾諾, N·H·杰塔南達(dá)尼, R·T·斯特戈爾, S·H·法瑞斯, V·B·巴拉約干 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
保亭| 耿马| 松滋市| 金川县| 嘉祥县| 雅安市| 奉新县| 桦甸市| 新建县| 巨野县| 吉木萨尔县| 肃宁县| 屯留县| 三门峡市| 新昌县| 康保县| 墨竹工卡县| 历史| 凤翔县| 临西县| 亳州市| 河北省| 句容市| 永川市| 托里县| 武山县| 讷河市| 达拉特旗| 邵武市| 三都| 武清区| 孟州市| 星座| 威远县| 读书| 南木林县| 鹤峰县| 滦南县| 澄城县| 镇远县| 邵东县|