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

服務(wù)發(fā)現(xiàn)及發(fā)布的制作方法

文檔序號(hào):6475081閱讀:267來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):服務(wù)發(fā)現(xiàn)及發(fā)布的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)字計(jì)算,尤其涉及在計(jì)算設(shè)備和計(jì)算網(wǎng)絡(luò)中的服務(wù)發(fā)現(xiàn)(service discovery)。
(2)背景技術(shù)在計(jì)算設(shè)備和計(jì)算機(jī)網(wǎng)絡(luò)上運(yùn)行的應(yīng)用程序,有時(shí)會(huì)需要使用由其他與計(jì)算設(shè)備或網(wǎng)絡(luò)相連接的物理或邏輯設(shè)備所提供的服務(wù)。目前,應(yīng)用程序使用大范圍的應(yīng)用編程接口(API)、協(xié)議、和用于發(fā)現(xiàn)、列舉及描述服務(wù)和設(shè)備的對(duì)象模型,而這些服務(wù)和設(shè)備是在本地計(jì)算設(shè)備上或是在計(jì)算機(jī)網(wǎng)絡(luò)中的多個(gè)設(shè)備上。即使所涉及的服務(wù)和設(shè)備在概念上是相似的,但用來(lái)發(fā)現(xiàn)、列舉和描述服務(wù)和設(shè)備的機(jī)制相差很大。
例如,設(shè)想一個(gè)應(yīng)用程序試圖列舉可用的打印機(jī)的情形。當(dāng)程序運(yùn)行在一個(gè)被管理的、團(tuán)體環(huán)境下時(shí),應(yīng)用程序會(huì)需要使用簡(jiǎn)便目錄訪問(wèn)協(xié)議(LDAP)來(lái)與Microsoft(現(xiàn)用目錄)目錄服務(wù)存儲(chǔ)器通信以發(fā)現(xiàn)注冊(cè)的團(tuán)體打印機(jī)、或使用NetBT以發(fā)現(xiàn)打印隊(duì)列服務(wù)器、或使用藍(lán)牙以發(fā)現(xiàn)私人領(lǐng)域的網(wǎng)絡(luò)打印機(jī)。此外,應(yīng)用程序或許必須調(diào)用設(shè)備管理API以發(fā)現(xiàn)直接與本機(jī)相連的打印機(jī)、或調(diào)用UPnPTMAPI以發(fā)現(xiàn)UPnP打印機(jī)。這些機(jī)制中的每一個(gè)都要求對(duì)特定的API、協(xié)議和查詢語(yǔ)義的理解。
用于發(fā)現(xiàn)、列舉和描述服務(wù)的應(yīng)用程序所需的API和協(xié)議的數(shù)量之大使得軟件發(fā)展的任務(wù)復(fù)雜化了。
(3)發(fā)明內(nèi)容在說(shuō)明書(shū)和權(quán)利要求書(shū)中所描述的具體實(shí)現(xiàn)通過(guò)提供一種將發(fā)現(xiàn)和發(fā)布任務(wù)簡(jiǎn)化的統(tǒng)一接口而解決了上述和其他問(wèn)題。該統(tǒng)一接口允許發(fā)揮基礎(chǔ)協(xié)議的優(yōu)勢(shì),不再需要應(yīng)用程序開(kāi)發(fā)者去理解下層協(xié)議。該統(tǒng)一接口提供了一個(gè)對(duì)于服務(wù)以及以在大范圍的低級(jí)API、協(xié)議、存儲(chǔ)和網(wǎng)絡(luò)環(huán)境上發(fā)現(xiàn)和發(fā)布服務(wù)細(xì)節(jié)位目標(biāo)的相關(guān)聯(lián)操作的一致的、高度的抽象。
在一個(gè)示例實(shí)現(xiàn)中,提供了一種發(fā)現(xiàn)在計(jì)算環(huán)境中可用的服務(wù)的方法。該方法包括在一應(yīng)用程序中,定義一發(fā)現(xiàn)范圍,定義一發(fā)現(xiàn)過(guò)濾器,及向第一應(yīng)用編程接口發(fā)出一搜索請(qǐng)求;及在該第一應(yīng)用編程接口中解析該搜索請(qǐng)求,檢索與所請(qǐng)求的發(fā)現(xiàn)范圍和發(fā)現(xiàn)過(guò)濾器相對(duì)應(yīng)的服務(wù)信息,和將該服務(wù)信息返還給該應(yīng)用程序。
在另一個(gè)示例實(shí)現(xiàn)中,提供了一種發(fā)布計(jì)算環(huán)境中可用的服務(wù)的方法。該方法包括在一應(yīng)用程序中定義一服務(wù)條目對(duì)象,定義一發(fā)布范圍,分配給服務(wù)一個(gè)唯一的鍵,分配一服務(wù)類(lèi)型,定義服務(wù)的屬性,定義服務(wù)的端點(diǎn),及向第一應(yīng)用編程接口發(fā)出一發(fā)布請(qǐng)求;及在第一應(yīng)用編程接口中解析該搜索請(qǐng)求,和執(zhí)行至少一個(gè)低級(jí)API調(diào)用來(lái)發(fā)布該服務(wù)。
在另一個(gè)示例實(shí)現(xiàn)中,提供了一種刪除計(jì)算環(huán)境中的一個(gè)已發(fā)布的服務(wù)的方法。該方法包括在一應(yīng)用程序中定義服務(wù)條目對(duì)象,指定一個(gè)對(duì)應(yīng)于已發(fā)布的服務(wù)的鍵,定義刪除范圍,及向第一應(yīng)用編程接口發(fā)出一刪除請(qǐng)求;及在第一應(yīng)用編程接口中解析該搜索請(qǐng)求,執(zhí)行至少一個(gè)低級(jí)API調(diào)用來(lái)刪除服務(wù)。
在另一個(gè)示例實(shí)現(xiàn)中,提供了一種訂閱計(jì)算環(huán)境中服務(wù)事件的方法。該方法包括在一應(yīng)用程序中定義一范圍,定義一過(guò)濾器,定義一調(diào)回函數(shù)(callbackfunction),及向第一應(yīng)用編程接口發(fā)出一訂閱請(qǐng)求;及在第一應(yīng)用編程接口中解析該搜索請(qǐng)求,運(yùn)執(zhí)至少一個(gè)低級(jí)API調(diào)用來(lái)訂閱服務(wù)事件,及將服務(wù)事件的信息返還給該應(yīng)用程序。
在另一個(gè)示例實(shí)現(xiàn)中,提供了一種管理有關(guān)計(jì)算環(huán)境中可用的服務(wù)的信息的系統(tǒng)。該系統(tǒng)包括第一應(yīng)用編程接口,其配置成接受來(lái)自應(yīng)用程序的服務(wù)查詢,其中第一應(yīng)用編程接口以第一服務(wù)查詢協(xié)議接收服務(wù)查詢、處理該服務(wù)查詢、和向第二協(xié)議發(fā)出至少一個(gè)相應(yīng)服務(wù)查詢;與該第一應(yīng)用編程接口通信地相連的發(fā)現(xiàn)持續(xù)服務(wù),其中發(fā)現(xiàn)持續(xù)服務(wù)從第一應(yīng)用編程接口處接收服務(wù)信息,并將服務(wù)信息存儲(chǔ)在一個(gè)數(shù)據(jù)存儲(chǔ)器中。
(4)


圖1是一個(gè)示例計(jì)算設(shè)備的示意性說(shuō)明;圖2是一個(gè)說(shuō)明示例軟件體系結(jié)構(gòu)的結(jié)構(gòu)圖;圖3是闡明服務(wù)發(fā)現(xiàn)操作的流程圖;圖4是闡明服務(wù)發(fā)布操作的流程圖5是闡明服務(wù)刪除操作的流程圖;圖6是闡明訂閱服務(wù)事件操作的流程圖;圖7是闡明具體范圍和抽象范圍之間關(guān)系的結(jié)構(gòu)圖;圖8是闡明如何使用C#編程語(yǔ)言利用現(xiàn)用目錄協(xié)議上的SimpleFilter對(duì)象來(lái)定位那些每分鐘能打印50頁(yè)的彩色打印機(jī)的偽代碼;圖9是闡明如何使用C#編程語(yǔ)言來(lái)定位網(wǎng)絡(luò)服務(wù)的偽代碼;圖10是闡明如何使用C#編程語(yǔ)言利用SimpleFilter對(duì)象和UDDI協(xié)議來(lái)查找支持特定的tModel接口的偽代碼;圖11是闡明利用SimpleFilter對(duì)象和UDDI協(xié)議來(lái)查找支持特定的tModel接口Visual Basic.NET的使用方法的偽代碼;圖12是闡明利用現(xiàn)用目錄支持下的RichFilter來(lái)定位一個(gè)名如OfficePrinter的打印機(jī)的C#編程語(yǔ)言的使用方法的偽代碼;圖13是闡明利用現(xiàn)用目錄支持下的RichFilter來(lái)定位一個(gè)名如OfficePrinter的打印機(jī)的Visual Basic.NET的使用方法的偽代碼;圖14是闡明利用SSDP協(xié)議來(lái)發(fā)布一個(gè)由特定的唯一的標(biāo)識(shí)符所確定的特定類(lèi)型的服務(wù)的C#編程語(yǔ)言的使用方法的偽代碼;圖15是闡明利用SSDP協(xié)議來(lái)發(fā)布一個(gè)由特定的唯一的標(biāo)識(shí)符所確定的特定類(lèi)型的服務(wù)的Visual Basic.NET的使用方法的偽代碼;圖16是闡明來(lái)刪除一個(gè)來(lái)自SSDP協(xié)議的服務(wù)的C#編程語(yǔ)言的使用方法的偽代碼;圖17是闡明來(lái)刪除一個(gè)來(lái)自SSDP協(xié)議的服務(wù)的Visual Basic.NET的使用方法的偽代碼;圖18是闡明利用SimpleFilter來(lái)注冊(cè)那些使用SSDP協(xié)議的特定類(lèi)型的事件的C#編程語(yǔ)言的使用方法的偽代碼。這個(gè)注冊(cè)了的調(diào)回函數(shù)將為每個(gè)與過(guò)濾器相匹配的事件調(diào)用,且相應(yīng)的ServiceEntry對(duì)象將被提供給該處理器;和圖19是闡明利用SimpleFilter來(lái)注冊(cè)那些使用SSDP協(xié)議的特定類(lèi)型的事件的Visual Basic.NET的使用方法的偽代碼。
(5)具體實(shí)施方式
這里描述的是用于服務(wù)發(fā)現(xiàn)和發(fā)布的示例性方法和軟件體系結(jié)構(gòu)。這里描述的方法可被具體化為計(jì)算機(jī)可讀媒體上的邏輯指令。當(dāng)運(yùn)行在處理器上時(shí),這些邏輯指令使得通用計(jì)算設(shè)備被編程為執(zhí)行上述方法的專(zhuān)用機(jī)。當(dāng)處理器由邏輯指令配置成執(zhí)行這里所表述的方法時(shí),它就組成適于執(zhí)行上述方法的結(jié)構(gòu)。
示例性運(yùn)行環(huán)境圖1是可被用來(lái)實(shí)現(xiàn)根據(jù)所述具體實(shí)施方式
的一個(gè)或多個(gè)計(jì)算設(shè)備的示例性計(jì)算設(shè)備130的示意性說(shuō)明。計(jì)算設(shè)備130可被用來(lái)實(shí)現(xiàn)根據(jù)所述具體實(shí)施方式
的各種不同實(shí)現(xiàn)。
計(jì)算設(shè)備130包括一個(gè)或多個(gè)處理器或處理單元132、系統(tǒng)存儲(chǔ)器134、和耦合包括系統(tǒng)存儲(chǔ)器134和處理器132在內(nèi)的多個(gè)系統(tǒng)組件的總線136??偩€136表示若干類(lèi)型的總線結(jié)構(gòu)中任意的一種或多種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外部總線、圖形加速端口、以及采用多種總線結(jié)構(gòu)中任意一種的處理器或本地總線。系統(tǒng)存儲(chǔ)器134包括只讀存儲(chǔ)器(ROM)138和隨機(jī)存取存儲(chǔ)器(RAM)140?;据斎胼敵鱿到y(tǒng)(BIOS)142包含幫助在計(jì)算設(shè)備130內(nèi)的組件之間傳輸信息的基本例行程序,諸如在啟動(dòng)時(shí),BIOS被存儲(chǔ)在ROM 138中。
計(jì)算設(shè)備130還包括用來(lái)從硬盤(pán)(未示出)中讀取數(shù)據(jù)和向硬盤(pán)寫(xiě)入數(shù)據(jù)的硬盤(pán)驅(qū)動(dòng)器144、用來(lái)從可移動(dòng)式磁盤(pán)148(未示出)中讀取數(shù)據(jù)和向可移動(dòng)式磁盤(pán)148寫(xiě)入數(shù)據(jù)的磁盤(pán)驅(qū)動(dòng)器146、和用來(lái)從可移動(dòng)光盤(pán)152如CD ROM或其他光媒中讀取數(shù)據(jù)和向可移動(dòng)光盤(pán)152寫(xiě)入數(shù)據(jù)的光盤(pán)驅(qū)動(dòng)器150。硬盤(pán)驅(qū)動(dòng)器144、磁盤(pán)驅(qū)動(dòng)器146和光盤(pán)驅(qū)動(dòng)器150通過(guò)SCSI接口154或其他適合的接口與總線136相連接。這些驅(qū)動(dòng)器和及其相關(guān)聯(lián)計(jì)算機(jī)可讀媒體給計(jì)算設(shè)備130提供對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性存儲(chǔ)。盡管這里所述的示例性運(yùn)行環(huán)境使用了硬盤(pán)、可移動(dòng)磁盤(pán)148和可移動(dòng)光盤(pán)152,但本領(lǐng)域的技術(shù)人員應(yīng)認(rèn)識(shí)到其他類(lèi)型的能夠存儲(chǔ)計(jì)算機(jī)可存取數(shù)據(jù)的計(jì)算機(jī)可讀媒體,如磁帶、閃存卡、數(shù)字影碟、隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(ROM)等都可被用在該示例性運(yùn)行環(huán)境中。
眾多程序模塊可存儲(chǔ)在硬盤(pán)144、磁盤(pán)148、光盤(pán)152、ROM 138,和RAM 140上,包括操作系統(tǒng)158、一個(gè)或多個(gè)應(yīng)用程序160、其它程序模塊162和程序數(shù)據(jù)164。用戶可通過(guò)輸入設(shè)備,如鍵盤(pán)166和定位設(shè)備168向計(jì)算設(shè)備130輸入命令和信息。其它可用的輸入設(shè)備(未示出)可以是麥克風(fēng)、操縱桿、游戲手柄、圓盤(pán)式衛(wèi)星電視天線、掃描儀等。這些或其它輸入設(shè)備通過(guò)耦合至總線136上的接口170與處理單元132相連接。通過(guò)諸如視頻適配器174的接口,監(jiān)視172或其它顯示設(shè)備同樣與總線136相連接。除監(jiān)視器之外,個(gè)人計(jì)算機(jī)通常包括其他外部輸出設(shè)備(未示出),諸如揚(yáng)聲器和打印機(jī)。
計(jì)算設(shè)備130通常運(yùn)行在利用與一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)如遠(yuǎn)程計(jì)算機(jī)176的邏輯連接的網(wǎng)絡(luò)環(huán)境下。遠(yuǎn)程計(jì)算機(jī)176可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),而且遠(yuǎn)程計(jì)算機(jī)176通常包括上述與計(jì)算設(shè)備130相關(guān)所描述的元件中的多個(gè)或者全部,盡管在圖1中只示出了一個(gè)存儲(chǔ)器178。圖1中所描述的邏輯連接包括局域網(wǎng)(LAN)180和廣域網(wǎng)(WAN)182。這種網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)中都很常見(jiàn)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算設(shè)備130通過(guò)網(wǎng)絡(luò)接口或適配器184連接至本地網(wǎng)絡(luò)180接。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算設(shè)備130通常包括調(diào)制解調(diào)器186或其它手段,用于在廣域網(wǎng)182如因特網(wǎng)上建立通信。調(diào)制解調(diào)器186可以是內(nèi)置的或外置的,它通過(guò)串行接口156連接至總線136。在網(wǎng)絡(luò)環(huán)境中,與計(jì)算設(shè)備130相關(guān)描述的程序模塊或其中的部分,可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器設(shè)備中。將會(huì)認(rèn)識(shí)到,所示出的網(wǎng)絡(luò)連接是示例性的,其它在計(jì)算機(jī)間建立通信連接的方法也可以使用。
一般,計(jì)算設(shè)備130中的數(shù)據(jù)處理器通過(guò)在不同時(shí)期存儲(chǔ)在計(jì)算機(jī)的各種計(jì)算機(jī)可讀存儲(chǔ)媒體中的指令來(lái)編程。程序和操作系統(tǒng)通常是分布在在例如軟盤(pán)或CD-ROM中的。它們被從軟盤(pán)或光盤(pán)上安裝或裝載至計(jì)算機(jī)輔助存儲(chǔ)器。當(dāng)執(zhí)行時(shí),它們至少會(huì)被部分地裝入計(jì)算機(jī)主要電子存儲(chǔ)器中。這里所描述的發(fā)明包括這些或其它類(lèi)型的計(jì)算機(jī)可讀存儲(chǔ)媒體,如果這些媒體包含以下用于實(shí)現(xiàn)結(jié)合微處理器和其它數(shù)據(jù)處理器所描述步驟的指令或程序。當(dāng)計(jì)算機(jī)被根據(jù)下述方法和技術(shù)編程時(shí),本發(fā)明還包括計(jì)算機(jī)本身。
示例性軟件體系結(jié)構(gòu)概述圖2是在可以駐留在圖1的系統(tǒng)存儲(chǔ)器134中的用于服務(wù)發(fā)現(xiàn)的示例性軟件體系結(jié)構(gòu)200的結(jié)構(gòu)圖。在這種實(shí)現(xiàn)中,系統(tǒng)存儲(chǔ)器134可包含多個(gè)應(yīng)用程序210。在網(wǎng)絡(luò)化環(huán)境中,應(yīng)用程序可以是客戶程序的作用,而在PC環(huán)境中應(yīng)用程序可以是單機(jī)程序。應(yīng)用程序的特別性質(zhì)是無(wú)關(guān)緊要的。
應(yīng)用程序210調(diào)用服務(wù)發(fā)現(xiàn)API 214以發(fā)現(xiàn)在計(jì)算機(jī)環(huán)境中可用的服務(wù)。服務(wù)發(fā)現(xiàn)API 214提供高級(jí)文法來(lái)用于表達(dá)發(fā)現(xiàn)查詢。這種文法可以用Opath-一種用于表達(dá)發(fā)現(xiàn)查詢的自然查詢語(yǔ)言來(lái)實(shí)現(xiàn)。這種高級(jí)文法向軟件開(kāi)發(fā)者提供一種更概念化的機(jī)制來(lái)表達(dá)開(kāi)發(fā)者所尋找的服務(wù),而不是要求由協(xié)議220-234所要求的顆粒度更高的和協(xié)議特定的表達(dá)。開(kāi)發(fā)者可以用高級(jí)文法來(lái)構(gòu)建一個(gè)查詢,其可隨后或者被轉(zhuǎn)給一個(gè)特定的協(xié)議集,稱(chēng)之為眾多“具體的范圍”,或者給一個(gè)“抽象的范圍”,其為預(yù)定義的或配置的具體范圍的集合,。除了支持服務(wù)發(fā)現(xiàn),系統(tǒng)還支持服務(wù)發(fā)布/刪除和對(duì)事件的監(jiān)視。
服務(wù)發(fā)現(xiàn)API 214進(jìn)而調(diào)用在圖中用Protocol 1 220到Protocol 8 234所表示的一個(gè)或多個(gè)基礎(chǔ)協(xié)議(underlying protocol)?;A(chǔ)協(xié)議的確切數(shù)目是不重要的。協(xié)議220-234中的幾個(gè)是目錄支持協(xié)議,比如LDAP、通用描述(Universal Description)、發(fā)現(xiàn)和集成(UDDI)、和域名系統(tǒng)(DNS)服務(wù)器()。其它的協(xié)議可以是特殊的協(xié)議,諸如Bluetooth(藍(lán)牙)、UpnP、和NetBT。協(xié)議220-234中的一個(gè)或多個(gè)使用通信連接236來(lái)與計(jì)算環(huán)境中可用的其它組件或服務(wù)進(jìn)行通信。
響應(yīng)于發(fā)現(xiàn)請(qǐng)求,服務(wù)發(fā)現(xiàn)API返回一組表示在本地機(jī)器或網(wǎng)絡(luò)上發(fā)現(xiàn)的匹配服務(wù)的ServiceEntry對(duì)象。ServiceEntry對(duì)象是一個(gè)通用數(shù)據(jù)結(jié)構(gòu),它能夠代表許多由系統(tǒng)支持的協(xié)議所返回的相關(guān)細(xì)節(jié)。每個(gè)ServiceEntry對(duì)象對(duì)應(yīng)于一個(gè)單一的服務(wù)實(shí)例。在一種實(shí)現(xiàn)中,ServiceEntry對(duì)象提供描述性的和辨識(shí)性的屬性,包括(1)服務(wù)名稱(chēng);(2)服務(wù)描述;(3)端點(diǎn),其通常包含服務(wù)的網(wǎng)絡(luò)地址;(4)鍵值,其標(biāo)識(shí)該服務(wù)實(shí)例;(5)屬性,例如,服務(wù)或設(shè)備特性的名稱(chēng)-值對(duì)可擴(kuò)展表;和(6)供應(yīng)商,例如,一個(gè)標(biāo)識(shí)提供該服務(wù)的實(shí)體的標(biāo)識(shí)符。
發(fā)現(xiàn)持續(xù)服務(wù)212與服務(wù)發(fā)現(xiàn)API 214通信。其中,發(fā)現(xiàn)持續(xù)服務(wù)212登記在特別協(xié)議上的聲明事件。當(dāng)聲明事件被檢測(cè)到時(shí),即通知發(fā)現(xiàn)持續(xù)服務(wù),發(fā)現(xiàn)持續(xù)服務(wù)將服務(wù)聲明的相關(guān)信息復(fù)制到數(shù)據(jù)存儲(chǔ)240中的存儲(chǔ)單元。在存儲(chǔ)單元中存儲(chǔ)服務(wù)細(xì)節(jié)使得目前不可用的服務(wù)也能被發(fā)現(xiàn)。例如,即使一個(gè)打印機(jī)現(xiàn)在被關(guān)閉電源,打印機(jī)的有關(guān)細(xì)節(jié)可被登記在存儲(chǔ)單元內(nèi),且可被發(fā)現(xiàn)。除此之外,服務(wù)查詢不局限于與服務(wù)通信的協(xié)議。此外,查詢存儲(chǔ)單元的性能可遠(yuǎn)遠(yuǎn)好于處理一個(gè)廣泛的網(wǎng)絡(luò)發(fā)現(xiàn)查詢。
示例性操作在示例性實(shí)現(xiàn)中,服務(wù)發(fā)現(xiàn)API 214提供用于服務(wù)發(fā)現(xiàn)、服務(wù)發(fā)布和訂閱服務(wù)事件通知的方法。圖3是闡明服務(wù)發(fā)現(xiàn)的操作300的流程圖。在操作310處,應(yīng)用程序定義了一個(gè)范圍,在操作315處應(yīng)用程序定義了一個(gè)過(guò)濾器,在操作320處應(yīng)用程序發(fā)出搜索請(qǐng)求。服務(wù)發(fā)現(xiàn)API 214收到了搜索請(qǐng)求,在操作325處,服務(wù)發(fā)現(xiàn)API 214解析這個(gè)搜索請(qǐng)求。在可任選操作330處,服務(wù)發(fā)現(xiàn)API 214確定這個(gè)搜索請(qǐng)求是否可利用存儲(chǔ)在發(fā)現(xiàn)持續(xù)服務(wù)212中的信息解決。在一種實(shí)現(xiàn)中,由發(fā)現(xiàn)持續(xù)服務(wù)212所管理的信息包括一個(gè)生存時(shí)間指示器,其指定在發(fā)現(xiàn)持續(xù)服務(wù)212中的信息的生存期限。取決于控制和配置,服務(wù)發(fā)現(xiàn)API 214會(huì)查詢發(fā)現(xiàn)持續(xù)服務(wù)212來(lái)確定這個(gè)發(fā)現(xiàn)請(qǐng)求能否利用發(fā)現(xiàn)持續(xù)服務(wù)212在數(shù)據(jù)存儲(chǔ)器240上管理的那些信息去滿足。如果該發(fā)現(xiàn)請(qǐng)求可利用發(fā)現(xiàn)持續(xù)服務(wù)212解決,那么控制傳給操作350,且從發(fā)現(xiàn)持續(xù)服務(wù)212中檢索到的服務(wù)條目對(duì)象被返回給應(yīng)用程序。
相反,如果發(fā)現(xiàn)請(qǐng)求是利用發(fā)現(xiàn)持續(xù)服務(wù)212沒(méi)有解決或不能夠解決的,那么控制傳給操作335,服務(wù)發(fā)現(xiàn)API 214執(zhí)行為實(shí)現(xiàn)該發(fā)現(xiàn)請(qǐng)求所要求的低級(jí)API(一個(gè)或多個(gè))調(diào)用。在操作340處,從低級(jí)API調(diào)用中返回的服務(wù)信息被格式化成服務(wù)條目對(duì)象,在可任選操作345處,服務(wù)條目對(duì)象被傳給能夠在數(shù)據(jù)存儲(chǔ)器240上儲(chǔ)服務(wù)條目對(duì)象的發(fā)現(xiàn)保存服務(wù)。在可任選操作347處,可以執(zhí)行進(jìn)一步的對(duì)服務(wù)條目結(jié)果的處理和過(guò)濾,諸如冗余檢測(cè)和去除。在操作350處,服務(wù)條目對(duì)象被返回給應(yīng)用程序進(jìn)行在操作355處的進(jìn)一步處理。由應(yīng)用程序執(zhí)行的進(jìn)一步處理的精確細(xì)節(jié)是不重要的。
圖4是闡述服務(wù)發(fā)布操作的流程圖。在操作410處,應(yīng)用程序?yàn)榉?wù)發(fā)布定義服務(wù)條目對(duì)象。在操作415處,應(yīng)用程序給服務(wù)發(fā)布定義范圍。在操作420處,應(yīng)用程序給服務(wù)發(fā)布分配一個(gè)唯一的鍵,在操作425處,應(yīng)用程序給服務(wù)發(fā)布分配一個(gè)服務(wù)類(lèi)型。在操作430處,應(yīng)用程序給服務(wù)發(fā)布定義端點(diǎn),在操作432處,應(yīng)用程序?yàn)榉?wù)發(fā)布定義屬性,在操作435處,應(yīng)用程序生成一個(gè)發(fā)布請(qǐng)求。根據(jù)將要發(fā)布的信息的細(xì)節(jié)以及將會(huì)使用的低級(jí)API,所執(zhí)行的步驟可有所變化。
服務(wù)發(fā)現(xiàn)API 214接收到發(fā)布請(qǐng)求,并在操作440處,解析該發(fā)布請(qǐng)求。在操作450處,服務(wù)發(fā)現(xiàn)API 214執(zhí)行低級(jí)API調(diào)用來(lái)執(zhí)行服務(wù)發(fā)布請(qǐng)求。在可任選操作455處,服務(wù)發(fā)布被存儲(chǔ)在發(fā)現(xiàn)持續(xù)服務(wù)212中。
服務(wù)發(fā)現(xiàn)API 214的服務(wù)發(fā)布工具也可用來(lái)刪除一個(gè)已發(fā)布的服務(wù)。圖5是闡述服務(wù)刪除操作的流程圖。在操作510處,應(yīng)用程序定義服務(wù)發(fā)布的服務(wù)條目對(duì)象。在操作515處,應(yīng)用程序給服務(wù)指定一個(gè)唯一的鍵。在操作520處,應(yīng)用程序給服務(wù)刪除定義范圍。在操作530處,應(yīng)用程序生成一個(gè)服務(wù)刪除請(qǐng)求。
服務(wù)發(fā)現(xiàn)API 214接收刪除請(qǐng)求,并且在操作540處,解析該刪除請(qǐng)求。在操作550處,服務(wù)發(fā)現(xiàn)API 214執(zhí)行低級(jí)API調(diào)用來(lái)執(zhí)行服務(wù)刪除請(qǐng)求。在可任選操作555處,服務(wù)發(fā)布被從發(fā)現(xiàn)持續(xù)服務(wù)212中刪除。
服務(wù)發(fā)現(xiàn)API 214也可被用來(lái)允許向應(yīng)用程序通知服務(wù)事件,如一項(xiàng)新的服務(wù)或特定類(lèi)型的設(shè)備的到來(lái)和離去。圖6是闡述訂閱服務(wù)事件操作600的流程圖。在操作610處,應(yīng)用程序定義一個(gè)向監(jiān)視器指定特定低級(jí)協(xié)議的范圍。在操作615處,應(yīng)用程序定義一個(gè)指定事件類(lèi)型的過(guò)濾器。在操作620處,應(yīng)用程序定義一個(gè)調(diào)回函數(shù),它將在匹配事件發(fā)生時(shí)接收ServiceEntry細(xì)節(jié)。在操作625處,應(yīng)用程序生成一個(gè)訂閱請(qǐng)求,其被傳給服務(wù)發(fā)現(xiàn)API 214。
服務(wù)發(fā)現(xiàn)請(qǐng)求API 214接收該訂閱請(qǐng)求,并且在操作630處,解析該訂閱請(qǐng)求,在操作635處,服務(wù)發(fā)現(xiàn)請(qǐng)求執(zhí)行實(shí)現(xiàn)訂閱服務(wù)所要求的低級(jí)協(xié)議調(diào)用。當(dāng)服務(wù)事件發(fā)生時(shí),低級(jí)協(xié)議會(huì)向服務(wù)發(fā)現(xiàn)API提供事件的通知。在操作640處,事件的通知被格式化成服務(wù)條目對(duì)象。在可任選操作645處,服務(wù)條目對(duì)象可被存儲(chǔ)在發(fā)現(xiàn)持續(xù)服務(wù)212中,在操作650中,該服務(wù)條目對(duì)象利用先前指定的調(diào)回函數(shù)返回給應(yīng)用程序。在操作655處,應(yīng)用程序?qū)Ψ?wù)條目對(duì)象進(jìn)行進(jìn)一步的處理。應(yīng)用程序的進(jìn)一步處理的精確細(xì)節(jié)是不重要的。
系統(tǒng)的組件和操作在以下做更詳細(xì)的說(shuō)明。
API類(lèi)過(guò)濾器過(guò)濾器是借以評(píng)估服務(wù)描述的一組規(guī)則,得到的結(jié)果是真(即服務(wù)描述與過(guò)濾器相匹配)或假(即服務(wù)描述與過(guò)濾器不匹配)。一個(gè)過(guò)濾器可以表達(dá)成一個(gè)指定具體屬性的簡(jiǎn)單過(guò)濾器,或表達(dá)成一個(gè)利用更有表達(dá)力的文法的復(fù)雜過(guò)濾器。不論是表達(dá)為簡(jiǎn)單過(guò)濾器還是復(fù)雜過(guò)濾器,查詢能夠通過(guò)不止一個(gè)的協(xié)議遵從所用協(xié)議的能力來(lái)指定和執(zhí)行而不需修改。服務(wù)發(fā)現(xiàn)請(qǐng)求API 214將高層查詢重新表達(dá)成用于基礎(chǔ)低級(jí)協(xié)議的正確格式。例如,服務(wù)發(fā)現(xiàn)請(qǐng)求API214可以接收一個(gè)用于特定服務(wù)類(lèi)型的查詢,并且利用為現(xiàn)用目錄服務(wù)的LDAP和為UDDI Web服務(wù)注冊(cè)服務(wù)的UDDI協(xié)議來(lái)表達(dá)和評(píng)估該項(xiàng)查詢。不要求應(yīng)用程序開(kāi)發(fā)者直接處理個(gè)別的協(xié)議。
在一示例性的實(shí)現(xiàn)中,服務(wù)發(fā)現(xiàn)請(qǐng)求API 214要求發(fā)現(xiàn)模塊支持簡(jiǎn)單過(guò)濾器,提供給出標(biāo)準(zhǔn)的精確的匹配語(yǔ)義、和含有用OPath文法表達(dá)的查詢的復(fù)雜過(guò)濾器。將會(huì)理解,各自也會(huì)支持附加的“天生的”過(guò)濾器類(lèi)型。不同的發(fā)現(xiàn)模塊可能擁有協(xié)議專(zhuān)用的天生的過(guò)濾類(lèi)型,如,UPnP可使用XPath過(guò)濾器,現(xiàn)用目錄可以天生地使用LDAP過(guò)濾器,UDDI可以天生的使用UDDI過(guò)濾器。
模塊上的OPath過(guò)濾器功能的底層進(jìn)一步將應(yīng)用程序與基礎(chǔ)發(fā)現(xiàn)協(xié)議隔絕。過(guò)濾器類(lèi)用模塊間共享的方式展露了其他的解析和解釋過(guò)濾器的方法。
一個(gè)簡(jiǎn)單過(guò)濾器通過(guò)指定服務(wù)類(lèi)型、服務(wù)接口、和/或?qū)傩远?guī)定查詢的表達(dá)。這些設(shè)置的任意組合可在一個(gè)搜索查詢中提供,只有在每個(gè)標(biāo)準(zhǔn)都精確地匹配時(shí),服務(wù)才會(huì)被包括在所得服務(wù)條目集之中。
服務(wù)類(lèi)型可以被實(shí)現(xiàn)為一個(gè)指定必須與服務(wù)實(shí)例相匹配的類(lèi)型的串。一個(gè)常用的服務(wù)類(lèi)型集在服務(wù)發(fā)現(xiàn)請(qǐng)求API 214中被預(yù)定義。當(dāng)有在協(xié)議和存儲(chǔ)器中的鍵實(shí)體被標(biāo)識(shí)到時(shí),這個(gè)集合可以被擴(kuò)展。例如,對(duì)于現(xiàn)用目錄中的打印機(jī),其可指定為filter.ServiceType=CommonServiceTypes.Printer。
服務(wù)接口可被實(shí)現(xiàn)為一個(gè)指定用于服務(wù)必須匹配的接口的標(biāo)識(shí)符的串集合。作為一個(gè)例子,對(duì)于在UDDI中的web服務(wù),下述tModel標(biāo)識(shí)符可以被指定filter.ServiceInterfaces.Add(″uuidac104dcc-d623-452f-88a7-f8acd94d9b2b″);filter.ServiceInterfaces.Add(″uuid4d2aclca-e234-142f-e217-4d9b2f8acd9b″)
屬性可在指定服務(wù)必須匹配的服務(wù)特性的屬性字典中實(shí)現(xiàn)。作為一個(gè)例子,對(duì)于在現(xiàn)用目錄中的打印機(jī),下述屬性可被指定filter.Properties.Add(″printcolor″,″TRUE″);filter.Properties.Add(″pagesperminute″,″50″)通過(guò)設(shè)定Query串屬性,一個(gè)復(fù)雜過(guò)濾器提供一種利用例如OPath文法表達(dá)顯著復(fù)雜的查詢語(yǔ)義的機(jī)制。作為一個(gè)例子,對(duì)于UDDI中的web服務(wù),Query串會(huì)指定所需的名稱(chēng)和所需的支持的接口filter.Query=″WebService[name=’Fabrikam’andServiceInterface=’uuidac104dcc-d623-452f-88a7-f8acd94d9b2b’]″作為一個(gè)在沒(méi)有A4紙可用時(shí)查找現(xiàn)用目錄中有能力每分鐘打印25頁(yè)紙以上的打印機(jī)的更有表達(dá)力的例子filter.Query=″Printer[printPagesPerMinuter>20+5 and not(printmediaReady=’A4’)]″。
由于基礎(chǔ)協(xié)議和存儲(chǔ)器的能力很不相同,從基本的NetBT到復(fù)雜的現(xiàn)用目錄查詢語(yǔ)義,使用具有更強(qiáng)表達(dá)力的OPath結(jié)構(gòu)的能力將取決于所選擇的范圍(協(xié)議)。
范圍范圍標(biāo)識(shí)一個(gè)可以被搜索的查詢域,通常是粗略的且由網(wǎng)絡(luò)位置或管理權(quán)限所及給出。發(fā)現(xiàn)查詢被發(fā)往一個(gè)或多個(gè)范圍,且查詢結(jié)果包括這些范圍內(nèi)的服務(wù)的子集,即,查詢結(jié)果是所有在此范圍內(nèi)匹配給定過(guò)濾器的服務(wù)的子集。示例性的范圍包括工作組、本地機(jī)器和域。
服務(wù)發(fā)現(xiàn)API 214提供具體的范圍和抽象的范圍。具體的范圍以三個(gè)部分來(lái)指定查詢域一個(gè)標(biāo)識(shí)具體協(xié)議的協(xié)議(Protocol)標(biāo)識(shí)符,例如映射到單個(gè)發(fā)現(xiàn)模塊,諸如ConcreteScope.NetBtProtocol.或ConcreteScope.ADProtocol;一個(gè)地址(Address)(可任選)標(biāo)識(shí)符,其指定一個(gè)在此范圍上向其指引操作的服務(wù)器,諸如用于企業(yè)內(nèi)部互聯(lián)網(wǎng)UDDI服務(wù)器的″http//intrauddi/uddi/inquire.asmx″;和一個(gè)路徑標(biāo)識(shí)符(可任選),其標(biāo)識(shí)模塊名空間的分割,諸如一個(gè)LDAP搜索基,其可被設(shè)置成″CN=j(luò)oedev,CN=Computer,DC=corp,DC=fabrikam,DC=com″,或者一個(gè)UPnPv2范圍名。
服務(wù)發(fā)現(xiàn)請(qǐng)求API 214將具體范圍傳給模塊。服務(wù)發(fā)現(xiàn)請(qǐng)求API 214不排除模塊執(zhí)行其它在具體范圍上的間接操作,比如以有線方式傳輸具體范圍給另一臺(tái)機(jī)器和將具體范圍傳給該另一臺(tái)機(jī)器上的相應(yīng)的API。
抽象范圍是一個(gè)或多個(gè)具體范圍的別稱(chēng),也可以是其它抽象范圍的別稱(chēng)。抽象范圍提供一種在邏輯預(yù)定義的或配置了的具體范圍集上定標(biāo)查詢的機(jī)制。這提供了允許開(kāi)發(fā)者來(lái)定標(biāo)例如,“enterprise”范圍的附加抽象,不需要清楚的協(xié)議、地址和特定目錄服務(wù)器的連接細(xì)節(jié)。
將抽象范圍映射到具體范圍是全機(jī)器范圍的,且是可配置的。例如,抽象范圍AbstractScope.Enterprise可以映射以包括表1中兩個(gè)具體范圍。
表1圖7是闡明具體范圍和抽象范圍之間示例關(guān)系的結(jié)構(gòu)圖。具體范圍730-750給出在其上評(píng)估查詢的域的規(guī)格。具體范圍730-750包括協(xié)議標(biāo)識(shí)細(xì)節(jié),及所要求的要用的存儲(chǔ)器或服務(wù)器的具體情況,具有進(jìn)一步在該存儲(chǔ)器或服務(wù)器內(nèi)進(jìn)行范圍確定的潛能。在服務(wù)發(fā)現(xiàn)API 214中,這些分別在協(xié)議、地址和路徑屬性中指定。
抽象范圍710-725在具體范圍之上提供更高層次的分級(jí)抽象。抽象范圍被設(shè)置成包括組成它們的具體范圍或抽象范圍。這一范圍映射系統(tǒng)管理員可用的,他們能夠精確地配置如何解析例如AbstractScope.EnterpriseScope。
具體范圍和抽象范圍都能夠被服務(wù)發(fā)現(xiàn)API 214的用戶所使用。在提供了抽象范圍的場(chǎng)合,服務(wù)發(fā)現(xiàn)API 214會(huì)將其沿等級(jí)向下分解為一定數(shù)目的具體范圍。
抽象范圍允許應(yīng)用程序210的程序員能在較高層次上工作,并且在代碼中可以包含諸如“AbstractScope.Enterprise”的范圍標(biāo)識(shí)術(shù)語(yǔ)。這樣,例如,程序員就不必將特定UDDI服務(wù)器的具體情況硬代碼寫(xiě)入他的代碼中。這種抽象提供了更大是代碼重用性和可移殖性。同一代碼段可以不經(jīng)修改和重新編譯地用于各種各樣的企業(yè)環(huán)境中。只有抽象范圍的配置會(huì)在環(huán)境改變時(shí)改變。
在抽象范圍到具體范圍的映射中可以有多重等級(jí)。在圖7中,AbstractScope.LocalMachine不能映射進(jìn)AbstractScope.All,盡管它的所有組件都包括了。
在一個(gè)示例性實(shí)現(xiàn)中,范圍映射配置能由系統(tǒng)管理員通過(guò)組政策進(jìn)行操控以控制企業(yè)中服務(wù)發(fā)現(xiàn)API 214的使用。作為例子,一個(gè)管理員能定義一個(gè)或多個(gè)可用于企業(yè)計(jì)算環(huán)境中或部分的企業(yè)計(jì)算環(huán)境中的抽象范圍。這使得系統(tǒng)管理員能夠調(diào)控應(yīng)用程序的發(fā)現(xiàn)和對(duì)資源的使用。
ServiceEntry服務(wù)條目結(jié)果應(yīng)用程序員能夠選擇合適的范圍和過(guò)濾器表達(dá),這些可以設(shè)置成服務(wù)發(fā)現(xiàn)者對(duì)象的屬性。于是應(yīng)用程序就可用FindOne或FindAll方法來(lái)執(zhí)行發(fā)現(xiàn)請(qǐng)求。FindAll方法返回所有匹配所提供的標(biāo)準(zhǔn)的服務(wù),而FindOne方法只返回單個(gè)匹配的服務(wù)。這些方法可以應(yīng)用同步或異步的調(diào)用模式來(lái)執(zhí)行。
假定在指定的范圍內(nèi)有匹配所提供的過(guò)濾器的服務(wù),F(xiàn)indOne或FindAll方法會(huì)返回一個(gè)或一組服務(wù)條目對(duì)象。服務(wù)條目對(duì)象是對(duì)各種基礎(chǔ)協(xié)議可提供的服務(wù)的表示法的抽象。每個(gè)服務(wù)條目對(duì)象對(duì)應(yīng)于一個(gè)服務(wù)的單個(gè)實(shí)例,照此提供包括在表2中所述那些在內(nèi)的描述性和標(biāo)識(shí)性的屬性。
表2提供了一公共空白(public void)Save()函數(shù)來(lái)創(chuàng)建或更新在范圍集之中所指定的范圍內(nèi)的服務(wù)條目表示。
公共空白Delete()方法將ServiceEntry對(duì)象從在范圍屬性中所指定的范圍內(nèi)去除。如果服務(wù)尚未發(fā)布,則造成異常。
偽代碼圖8-19所示是用于各種服務(wù)發(fā)現(xiàn)、發(fā)布和訂閱函數(shù)的偽代碼。
圖8是闡述利用現(xiàn)用目錄協(xié)議上的SimpleFilter對(duì)象如何使用C#編程語(yǔ)言來(lái)查找每分鐘打印50頁(yè)的彩色打印機(jī)的偽代碼。
圖9是闡述利用UDDI協(xié)議上的RichFilter對(duì)象如何使用C#編程語(yǔ)言來(lái)查找實(shí)現(xiàn)uddi-orginquiry_v2接口且名稱(chēng)為Fabrikam的web服務(wù)的偽代碼。
圖10是闡述利用UDDI協(xié)議上和SimpleFilter對(duì)象使用C#編程語(yǔ)言來(lái)查找支持特定的tModel接口的服務(wù)的偽代碼。
圖11是闡述利用UDDI協(xié)議上和SimpleFilter對(duì)象使用Visual Basic.NET來(lái)查找支持特定的tModel接口的服務(wù)的偽代碼。
圖12是闡述利用現(xiàn)用目錄下的RichFilter使用C#編程語(yǔ)言來(lái)查找名字如Office Prihter的打印機(jī)的偽代碼。
圖13是闡述利用現(xiàn)用目錄下的RichFilter使用Visual Basic.NET來(lái)查找名字如Office Printer的打印機(jī)的偽代碼。
圖14是闡述利用SSDP協(xié)議使用C#編程語(yǔ)言來(lái)發(fā)布由特定的唯一的標(biāo)識(shí)符所標(biāo)識(shí)的特定類(lèi)型的服務(wù)的偽代碼。
圖15是闡述利用SSDP協(xié)議使用Visual Basic.NET來(lái)發(fā)布由特定的唯一的標(biāo)識(shí)符所標(biāo)識(shí)的特定類(lèi)型的服務(wù)的偽代碼。
圖16是闡述使用C#編程語(yǔ)言來(lái)刪除一個(gè)來(lái)自SSDP協(xié)議的服務(wù)的偽代碼。
圖17是闡述使用Visual Basic.NET來(lái)刪除一個(gè)來(lái)自SSDP協(xié)議的服務(wù)的偽代碼。
圖18是闡述利用SimpleFilter使用C#編程語(yǔ)言來(lái)登記使用SSDP協(xié)議的特定類(lèi)型事件的偽代碼。已登記的調(diào)回函數(shù)會(huì)為每一個(gè)匹配過(guò)濾器的事件而調(diào)用,且相應(yīng)的ServiceEntry對(duì)象會(huì)被提供給該處理者(handler)。
圖19是闡述利用SimpleFilter使用Visual Basic.NET來(lái)登記使用SSDP協(xié)議的特定類(lèi)型事件的偽代碼。
示例性的OPath語(yǔ)法標(biāo)3給各種發(fā)現(xiàn)函數(shù)提供了示例性的OPath語(yǔ)法。
表3表4包含可以在UDDI協(xié)議上使用的OPath語(yǔ)法的示例。
表4表5包含了可以在NetBT協(xié)議上使用的OPath語(yǔ)法的示例。
表5發(fā)現(xiàn)持續(xù)服務(wù)如上文概要描述,發(fā)現(xiàn)持續(xù)服務(wù)212為服務(wù)信息管理一個(gè)服務(wù)信息的持久數(shù)據(jù)存儲(chǔ)器。周期性地,或當(dāng)某些預(yù)定事件發(fā)生時(shí),比如啟動(dòng),發(fā)現(xiàn)持續(xù)服務(wù)會(huì)登記以接收特別的設(shè)備/服務(wù)通知。作為一個(gè)例子,當(dāng)一個(gè)新的UPnP設(shè)備被引入時(shí),它會(huì)生成一個(gè)會(huì)由UPnP協(xié)議模塊處理的設(shè)備通知。該UPnP協(xié)議模塊會(huì)將此事件(設(shè)備及其服務(wù))通過(guò)服務(wù)發(fā)現(xiàn)API 214傳給發(fā)現(xiàn)持續(xù)服務(wù)。
利用其持久數(shù)據(jù)存儲(chǔ)器,發(fā)現(xiàn)持續(xù)服務(wù)隨后確定這是一個(gè)新的設(shè)備/服務(wù)還是一個(gè)回歸的設(shè)備/服務(wù)。如果是新的設(shè)備/服務(wù),那么此設(shè)備及其服務(wù)的細(xì)節(jié)會(huì)被登記在持久數(shù)據(jù)存儲(chǔ)器中。當(dāng)另一個(gè)服務(wù)發(fā)現(xiàn)API 214的消費(fèi)者試圖查找服務(wù)時(shí),服務(wù)發(fā)現(xiàn)API 214將能夠返回特別的設(shè)備/服務(wù)的服務(wù),即使該設(shè)備當(dāng)前不可用。對(duì)于上述例子,在設(shè)備/服務(wù)當(dāng)前可用的情況中,根據(jù)所指定的范圍,UPnP協(xié)議模塊和持久數(shù)據(jù)存儲(chǔ)器模塊都會(huì)返回該設(shè)備的結(jié)果。除了UpnP之外,這種功能性也適用于其他特別的發(fā)現(xiàn)機(jī)制。
如此,發(fā)現(xiàn)持續(xù)服務(wù)212、服務(wù)發(fā)現(xiàn)API 214和本地?cái)?shù)據(jù)庫(kù)存儲(chǔ)器240給用于設(shè)備和服務(wù)發(fā)現(xiàn)的各種低級(jí)協(xié)議提供了一個(gè)抽象層。這個(gè)附加的抽象層建立了一個(gè)應(yīng)用程序員在開(kāi)發(fā)應(yīng)用程序時(shí)可使用的通用的、改進(jìn)了的搜索語(yǔ)義。
此外,發(fā)現(xiàn)抽象服務(wù)212、服務(wù)發(fā)現(xiàn)API 214和本地?cái)?shù)據(jù)庫(kù)存儲(chǔ)器240給本地機(jī)器、家庭網(wǎng)絡(luò)、企業(yè)網(wǎng)絡(luò)和因特網(wǎng)上的服務(wù)和設(shè)備提供了一個(gè)統(tǒng)一的發(fā)現(xiàn)模型。如此,通過(guò)編寫(xiě)一個(gè)統(tǒng)一的API,應(yīng)用程序開(kāi)發(fā)員能夠在范圍廣泛的位置中發(fā)現(xiàn)服務(wù)。
結(jié)論盡管所描述的內(nèi)容是用一種針對(duì)結(jié)構(gòu)特征和/或方法性操作的語(yǔ)言描述的,但應(yīng)該認(rèn)識(shí)到,在所附權(quán)利要求中定義的主題內(nèi)容不必局限于所描述的具體特征和操作。相反,這些具體特征和方法是作為實(shí)現(xiàn)權(quán)利要求中的本發(fā)明優(yōu)選形式來(lái)揭示的。
權(quán)利要求
1.一種用于發(fā)現(xiàn)在計(jì)算環(huán)境中可用的服務(wù)的方法,包括在一應(yīng)用程序中定義一發(fā)現(xiàn)范圍;定義一發(fā)現(xiàn)過(guò)濾器;和向第一應(yīng)用程序接口發(fā)出一搜索請(qǐng)求;在第一應(yīng)用程序接口中解析所述搜索請(qǐng)求;檢索對(duì)應(yīng)于所請(qǐng)求的發(fā)現(xiàn)范圍和發(fā)現(xiàn)過(guò)濾器的服務(wù)信息;和將所述服務(wù)信息返還給所述應(yīng)用程序。
2.如權(quán)利要求1所述的方法,其中檢索對(duì)應(yīng)于所請(qǐng)求的發(fā)現(xiàn)范圍和發(fā)現(xiàn)過(guò)濾器的服務(wù)信息包括執(zhí)行針對(duì)至少一個(gè)低級(jí)API或協(xié)議的調(diào)用。
3.如權(quán)利要求1所述的方法,其中檢索對(duì)應(yīng)于所請(qǐng)求的發(fā)現(xiàn)范圍和發(fā)現(xiàn)過(guò)濾器的服務(wù)信息包括查詢一個(gè)持續(xù)數(shù)據(jù)存儲(chǔ)服務(wù)。
4.如權(quán)利要求1所述的方法,還包括將所檢索的服務(wù)信息格式化成一個(gè)一致的服務(wù)條目對(duì)象數(shù)據(jù)格式。
5.如權(quán)利要求2所述的方法,還包括在持續(xù)數(shù)據(jù)存儲(chǔ)中保存從所述至少一個(gè)低級(jí)API或協(xié)議接收的信息。
6.一種用于發(fā)布在計(jì)算環(huán)境中可用的服務(wù)的方法,包括在一應(yīng)用程序中定義一服務(wù)條目對(duì)象;定義一發(fā)布范圍;給所述服務(wù)分配一個(gè)唯一的鍵;和分配一服務(wù)類(lèi)型;定義服務(wù)的屬性;定義服務(wù)的端點(diǎn);和向第一應(yīng)用程序接口發(fā)出一發(fā)布請(qǐng)求;在第一應(yīng)用程序接口中解析所述搜索請(qǐng)求;和執(zhí)行至少一個(gè)低級(jí)API調(diào)用以發(fā)布所述服務(wù)。
7.如權(quán)利要求6所述的方法,還包括將所述服務(wù)信息存儲(chǔ)在一個(gè)持續(xù)數(shù)據(jù)存儲(chǔ)器中。
8.一種用于刪除在計(jì)算環(huán)境中已發(fā)布的服務(wù)的方法,包括在一應(yīng)用程序中定義一服務(wù)條目對(duì)象;指定一對(duì)應(yīng)于所述已發(fā)布的服務(wù)的鍵;定義一刪除范圍;和對(duì)第一應(yīng)用程序接口發(fā)出一刪除請(qǐng)求;在第一應(yīng)用程序接口中解析所述搜索請(qǐng)求;和執(zhí)行至少一個(gè)低級(jí)API調(diào)用來(lái)刪除所述服務(wù)。
9.如權(quán)利要求8所述的方法,還包括從一個(gè)持續(xù)數(shù)據(jù)存儲(chǔ)器中刪除所述服務(wù)信息。
10.如權(quán)利要求8所述的方法,還包括在一個(gè)持續(xù)數(shù)據(jù)存儲(chǔ)器中登記所刪除的服務(wù)信息。
11.一種訂閱在計(jì)算環(huán)境中的服務(wù)事件的方法,包括在一應(yīng)用程序中定義一范圍;定義一過(guò)濾器;定義一調(diào)回函數(shù);和對(duì)第一應(yīng)用程序接口發(fā)出一訂閱請(qǐng)求;在第一應(yīng)用程序接口中解析所述搜索請(qǐng)求;和執(zhí)行至少一個(gè)低級(jí)API調(diào)用來(lái)訂閱服務(wù)事件;和將信息從服務(wù)事件返回給所述應(yīng)用程序。
12.如權(quán)利要求11所述的方法,還包括將所檢索的服務(wù)信息格式化成服務(wù)條目對(duì)象數(shù)據(jù)格式。
13.如權(quán)利要求12所述的方法,還包括在持續(xù)數(shù)據(jù)存儲(chǔ)器中保存從所述至少一個(gè)低級(jí)API接收的信息。
14.一種管理有關(guān)在計(jì)算環(huán)境中可用的服務(wù)的信息的系統(tǒng),包括第一應(yīng)用程序接口,用于接受來(lái)自應(yīng)用程序的服務(wù)查詢,其中所述第一應(yīng)用程序接口接收第一服務(wù)查詢協(xié)議中的服務(wù)查詢、處理所述服務(wù)查詢、且對(duì)第二協(xié)議至少發(fā)起一個(gè)相應(yīng)的服務(wù)查詢;發(fā)現(xiàn)持續(xù)服務(wù),通信地連接至所述第一應(yīng)用程序接口,其中所述發(fā)現(xiàn)持續(xù)服務(wù)從所述第一應(yīng)用程序接口處接收服務(wù)信息并將所述服務(wù)信息存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中。
15.如權(quán)利要求14所述的系統(tǒng),其中所述第一應(yīng)用程序接口提供接口給至少一個(gè)基于目錄的協(xié)議和至少一個(gè)特別協(xié)議。
16.如權(quán)利要求14所述的系統(tǒng),其中所述第一應(yīng)用程序接口發(fā)現(xiàn)在本地計(jì)算設(shè)備上可用的服務(wù)。
17.如權(quán)利要求14所述的系統(tǒng),其中所述第一應(yīng)用程序接口發(fā)現(xiàn)在遠(yuǎn)程計(jì)算設(shè)備上可用的服務(wù)。
18.如權(quán)利要求14所述的系統(tǒng),其中所述第一應(yīng)用程序接口實(shí)現(xiàn)一范圍映射,且其中所述范圍映射可由系統(tǒng)管理員配置。
全文摘要
本文內(nèi)容包括服務(wù)的發(fā)現(xiàn)和發(fā)布的系統(tǒng)和方法。應(yīng)用程序描述了服務(wù)發(fā)現(xiàn)、發(fā)布和訂閱(subscription)服務(wù)發(fā)現(xiàn)應(yīng)用編程接口的要求。服務(wù)發(fā)現(xiàn)應(yīng)用程序接口援用一個(gè)或多個(gè)低等級(jí)協(xié)議來(lái)滿足該發(fā)現(xiàn)、發(fā)布和/或訂閱的要求。從低級(jí)協(xié)議中得到的服務(wù)信息被編組成一個(gè)統(tǒng)一的數(shù)據(jù)模型,并返還給用戶應(yīng)用程序。此外,服務(wù)信息可被存儲(chǔ)在一個(gè)由與服務(wù)發(fā)現(xiàn)API通訊相連的發(fā)現(xiàn)持續(xù)服務(wù)所管理的一個(gè)長(zhǎng)期數(shù)據(jù)存儲(chǔ)器中。
文檔編號(hào)G06F17/00GK1705947SQ200480001324
公開(kāi)日2005年12月7日 申請(qǐng)日期2004年7月21日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者A·D·米利根, C·R·里夫斯, J·B·帕爾漢姆, G·K·R·卡其瓦亞, L·A·布爾克, A·米爾斯, R·L·哈薩 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
南汇区| 祥云县| 台南市| 忻州市| 白山市| 河北区| 温州市| 安宁市| 中山市| 塔城市| 兴和县| 云和县| 汶上县| 桦南县| 敖汉旗| 长泰县| 亳州市| 法库县| 喀什市| 东莞市| 增城市| 丰宁| 梁山县| 罗江县| 高碑店市| 连州市| 白玉县| 渭南市| 庄浪县| 白城市| 壶关县| 内丘县| 温泉县| 清远市| 连云港市| 梅河口市| 南木林县| 易门县| 晋宁县| 仁寿县| 华容县|