專利名稱:用于在計算機設(shè)備之間傳送數(shù)據(jù)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在多個計算機設(shè)備之間傳送數(shù)據(jù)的方法和設(shè)備,具體地,涉及一種用于允許多個后端服務(wù)按高效的方式發(fā)起與使用這些后端服務(wù)的多個應(yīng)用之間的通信的方法和設(shè)備,這些后端服務(wù)由諸如移動無線網(wǎng)絡(luò)的單個后端系統(tǒng)提供,并且這些后端服務(wù)使得(內(nèi)部或外部)應(yīng)用開發(fā)者可以對后端系統(tǒng)的一個或更多個特征進行受控訪問。
背景技術(shù):
本發(fā)明人開發(fā)了一種系統(tǒng)(以下稱為網(wǎng)關(guān)或平臺),通過該系統(tǒng),移動網(wǎng)絡(luò)(或其他類似的“后端”系統(tǒng))可以向第三方應(yīng)用開發(fā)者提供許多(基本成批的)服務(wù),這些第三方應(yīng)用開發(fā)者接著可以容易地開發(fā)并向最終客戶部署新的(零售)服務(wù)。這為移動網(wǎng)絡(luò)操作者和第三方應(yīng)用開發(fā)者均提供了商業(yè)機會。
例如,大部分GSM移動電話網(wǎng)絡(luò)都具有對連接到該網(wǎng)絡(luò)的移動手機(即,用戶單元)(即,當開機并且位于合適基站的范圍內(nèi)時)進行定位的能力。然而,大部分這種網(wǎng)絡(luò)目前并不向最終用戶提供該服務(wù)。這是因為,網(wǎng)絡(luò)不能簡單地以不受控制的方式向第三方提供該服務(wù),因為例如存在拒絕服務(wù)型攻擊的可能性(在該服務(wù)型攻擊中,第三方可以不斷地請求用戶單元的位置,直到由網(wǎng)絡(luò)提供的服務(wù)水平由于過大負荷而劣化到可能降低其他用戶單元執(zhí)行和接收電話呼叫的能力的程度)。另一方面,開發(fā)(在或大或小的程度上)包括了這種設(shè)施的受到良好控制具有完整功能并且有利可圖的服務(wù),是通常由專業(yè)的第三方應(yīng)用開發(fā)者更高效地完成的活動。然而,這仍然要求網(wǎng)絡(luò)運營商控制對這種設(shè)施的訪問,并且針對每個新提出的應(yīng)用逐個地進行這種控制是相對緩慢和低效的事情。
因此本發(fā)明人開發(fā)了一種無線應(yīng)用程序接口(API)服務(wù)網(wǎng)關(guān)以提供用于在應(yīng)用開發(fā)者與網(wǎng)絡(luò)運營商的需求之間架設(shè)橋梁的基礎(chǔ)設(shè)施。該網(wǎng)關(guān)使得運營商可以向開發(fā)者的廣大市場提供商業(yè)無線API服務(wù)(如定位、消息傳遞以及計費),而這又使得可以開發(fā)并在成本上高效地推廣新應(yīng)用。該網(wǎng)關(guān)向開發(fā)者提供了寬范圍的容易使用、可靠并且安全的服務(wù)。
該網(wǎng)關(guān)的一個重要特征在于,它包括服務(wù)暴露引擎(SEE),其上運行有各應(yīng)用的遠程設(shè)備可以在諸如因特網(wǎng)的標準網(wǎng)絡(luò)上聯(lián)系該SEE。這向各許可應(yīng)用提供了對由網(wǎng)絡(luò)運營商提供的服務(wù)的受限訪問。該SEE包括許多公共特征,這些公共特征確保了在應(yīng)用與網(wǎng)關(guān)之間的連接是安全的和經(jīng)認證的,并且網(wǎng)關(guān)還包括如下機制,該機制使得在任何時候都可以對應(yīng)用可以導致施加于網(wǎng)絡(luò)上的最大負荷進行控制。
為了通過網(wǎng)關(guān)訪問網(wǎng)絡(luò)服務(wù),應(yīng)用發(fā)起與網(wǎng)關(guān)的安全連接。注意,總是由應(yīng)用而不是由網(wǎng)關(guān)發(fā)起該連接。其原因是,非發(fā)起方需要執(zhí)行一定量的處理,以尤其確保發(fā)起方是它所要求的(即,確保正確的認證)。這是通過向網(wǎng)關(guān)提供所謂的“web服務(wù)器”功能來實現(xiàn)的。如果每個應(yīng)用還必須具有處理建立由網(wǎng)關(guān)使用web服務(wù)器功能發(fā)起的連接的能力,那么所有應(yīng)用的復雜性必定會顯著增大。如果網(wǎng)關(guān)開發(fā)者帶來了額外的復雜性,那么這將為網(wǎng)關(guān)管理員帶來額外的維護問題(優(yōu)選地,總是避免需要遠程支持安裝在遠程第三方機器上的軟件的情況)。另選地,這將給應(yīng)用開發(fā)者/管理員帶來相當大的額外負擔,因此只要有可能就應(yīng)當使該復雜性理想地最小化。
因此,目前,應(yīng)用為了在某個未知時刻從服務(wù)接收數(shù)據(jù),它必須按等時間間隔不斷地聯(lián)系服務(wù)并詢問所述服務(wù)是否有要提供給該應(yīng)用的任何新數(shù)據(jù)。該間歇式通信方法被廣泛用于數(shù)據(jù)通信系統(tǒng)中,并且通常工作良好,只要在以下兩種情況之間找到了正確的平衡頻繁聯(lián)系網(wǎng)關(guān),以至于導致網(wǎng)關(guān)上的過大負荷;和不頻繁聯(lián)系網(wǎng)關(guān),以至于在某個數(shù)據(jù)到達網(wǎng)關(guān)服務(wù)與它被傳送到相應(yīng)應(yīng)用之間可能存在不希望的長延遲。不幸的是,在目前的情況下網(wǎng)關(guān)運營商與應(yīng)用運營商(它們的需求是完全不相一致的,因為輪詢越不頻繁網(wǎng)關(guān)上的負荷就越小,但是應(yīng)用就越可能必須等待某個數(shù)據(jù))是分離的商業(yè)實體,因此就任何一方而言都根本沒有試圖犧牲其需求的動機。
發(fā)明內(nèi)容
本發(fā)明試圖提供這樣一種方法,其在不明顯偏離上述網(wǎng)關(guān)的設(shè)計特征的情況下至少在某種程度上解決了上述沖突。
注意,對這種網(wǎng)關(guān)的使用并不限于移動電話網(wǎng)絡(luò)的情況,可以將相同類型的網(wǎng)關(guān)應(yīng)用于具有可用于生成許多不同端用戶應(yīng)用的某些基本功能的任何大系統(tǒng),只要可以按直接、簡單、安全并且可靠的方式將這些功能提供給第三方應(yīng)用開發(fā)者即可。
根據(jù)本發(fā)明的第一方面,提供了一種通過網(wǎng)關(guān)設(shè)備向一個或更多個應(yīng)用宿主子系統(tǒng)提供由第一子系統(tǒng)提供的服務(wù),將所述網(wǎng)關(guān)和所述或每個應(yīng)用宿主子系統(tǒng)配置成使得允許所述或每個應(yīng)用宿主子系統(tǒng)通過非安全數(shù)據(jù)網(wǎng)絡(luò)連接發(fā)起到所述網(wǎng)關(guān)的安全并且經(jīng)認證的連接,并且在邏輯上將所述網(wǎng)關(guān)連接到第一子系統(tǒng),以使得可以將由第一子系統(tǒng)提供的服務(wù)提供給所述或每個應(yīng)用宿主子系統(tǒng),所述網(wǎng)關(guān)包括通知裝置,該通知裝置用于通知所述多個應(yīng)用宿主子系統(tǒng)中的一個或更多個它或它們應(yīng)當發(fā)起與所述網(wǎng)關(guān)的安全的經(jīng)認證的連接。
優(yōu)選地,由所述通知服務(wù)器提供的所述多個通知不包括任何敏感或有價值的數(shù)據(jù)(這是為了如果在非安全數(shù)據(jù)網(wǎng)絡(luò)上惡意的第三方攔截了該信息或者無意地將該信息無寄送給惡意的第三方,那么不能誤用該信息,使得給對該系統(tǒng)的任一方感興趣的多方中的任一方帶來損害或不便)。優(yōu)選地,在所述多個通知不包括任何可執(zhí)行代碼的意義上,所述多個通知是完全被動的。優(yōu)選地,所述多個通知是簡單文本文件,優(yōu)選地,具有所述簡單文本文件具有可擴展標記語言(XML)文件的具體形式。
該形式的系統(tǒng)與其中應(yīng)用宿主子系統(tǒng)必須不斷地對網(wǎng)關(guān)進行輪詢以查看它們是否有任何新消息(等,等待這些新消息)的上述系統(tǒng)相比具有所述多個應(yīng)用宿主子系統(tǒng)所需的額外復雜性最低的優(yōu)點,并且還在不增大在第一子系統(tǒng)上的服務(wù)接收到應(yīng)用的某個信息與所述應(yīng)用接收到該數(shù)據(jù)之間的最大延遲的情況下避免了對所述網(wǎng)關(guān)的過大負荷。
優(yōu)選地,所述多個通知精確地指定哪個服務(wù)希望聯(lián)系所述應(yīng)用宿主子系統(tǒng)(或者更精確地說,希望由所述應(yīng)用宿主子系統(tǒng)來聯(lián)系哪個服務(wù))。優(yōu)選地,在所述通知服務(wù)器與由第一子系統(tǒng)提供的所有服務(wù)之間存在公共接口,并且在所述通知服務(wù)器與所述多個應(yīng)用宿主子系統(tǒng)中的每一個之間存在公共接口,使得所述通知服務(wù)器能夠?qū)νㄖ獔?zhí)行與源無關(guān)并且與接受者無關(guān)的操縱、擇路以及分派。
優(yōu)選地,由第一子系統(tǒng)提供的在所述通知服務(wù)器與所述多個服務(wù)中的每一個之間的公共接口允許一服務(wù)針對單個通知指定標識了所述目的地應(yīng)用的標識符、標識了所述請求服務(wù)的標識符以及一個或更多個操縱行為參數(shù)。優(yōu)選地,所述多個操縱行為參數(shù)可以包括以下兩者中的一個或兩個在發(fā)生了一次或更多次對所述通知的發(fā)送的不成功嘗試的情況下應(yīng)當嘗試發(fā)送所述通知的嘗試次數(shù);和在發(fā)生了一次或更多次對所述通知的發(fā)送的不成功嘗試的情況下在再次嘗試發(fā)送所述通知之間的延遲。
優(yōu)選地,所述通知服務(wù)器可進行操作以生成用于控制在所述不安全數(shù)據(jù)網(wǎng)絡(luò)上對各個不同的通知的發(fā)送的不同執(zhí)行線程。這具有如下優(yōu)點如果使用不同的線程來發(fā)送許多不同的通知,由于可以“并行地”發(fā)送它們,因此使得所述通知服務(wù)器為多個通知生成服務(wù)提供對通知的足夠的吞吐量,盡管存在每個通知都可能耗費大量時間來穿過網(wǎng)絡(luò)的可能性。
優(yōu)選地,所述通知服務(wù)器保留對其的傳送失敗了的多個通知,并在達到了服務(wù)指定或默認次數(shù)的嘗試的服務(wù)指定或默認延遲之后重新試圖傳送它們。
本發(fā)明還提供了一種用于本發(fā)明的上述第一方面的系統(tǒng)的通知服務(wù)器,及其相對應(yīng)的方法、計算機程序以及計算機程序產(chǎn)品。
為了可以更好地理解本發(fā)明,以下僅以示例的方式參照附圖對本發(fā)明的多個實施例進行描述,在附圖中
圖1是根據(jù)本發(fā)明一實施例的系統(tǒng)的示意性例示圖;圖2是使用圖1的系統(tǒng)來提供端用戶定位服務(wù)的示例應(yīng)用的示意性例示圖;圖3是示出在提供上述端用戶定位服務(wù)時在圖1和2的系統(tǒng)的各種要素之間交換的信號的信號圖;圖4是例示由與端用戶和在客戶機應(yīng)用與后端系統(tǒng)之間的網(wǎng)關(guān)相交互的客戶機應(yīng)用執(zhí)行的步驟的流程圖;圖5是例示由在客戶機應(yīng)用與后端系統(tǒng)之間的網(wǎng)關(guān)中的服務(wù)插件執(zhí)行的步驟的流程圖;圖6是圖1的通知服務(wù)器的原理功能結(jié)構(gòu)的示意性例示圖;以及圖7(a)到7(e)是由圖1和6的通知服務(wù)器的5個重要模塊/對象執(zhí)行的步驟的流程圖。
具體實施例方式
參照圖1,優(yōu)選實施例的系統(tǒng)具有3個域客戶機應(yīng)用域100、網(wǎng)關(guān)域200以及后端系統(tǒng)域300。通過不安全數(shù)據(jù)網(wǎng)絡(luò)將客戶機應(yīng)用域100與網(wǎng)關(guān)域200連接起來。在本實施例中,還通過不安全網(wǎng)絡(luò)將網(wǎng)關(guān)域200與后端系統(tǒng)域300連接起來,然而,在另選實施例中該不安全網(wǎng)絡(luò)通??梢允前踩W(wǎng)絡(luò)連接。
客戶機應(yīng)用域100包括以各種第三方服務(wù)器機器(未示出)為宿主的多個客戶機應(yīng)用110、120、130、140、150(注意,客戶機應(yīng)用通常既充當客戶機應(yīng)用又充當服務(wù)器應(yīng)用,因為對于與它們進行聯(lián)系的端用戶客戶機它們將充當服務(wù)器應(yīng)用,而當它們與網(wǎng)關(guān)域200進行聯(lián)系時它們將充當客戶機應(yīng)用)。在圖1所示的這些具體示例中,由包圍框101表示的單個組織通過網(wǎng)關(guān)域200的操作員使用單個顧客賬號來操作所有應(yīng)用110、120、130,以下將對其意義進行更詳細的說明。此外,如圖1所示,某些應(yīng)用(如應(yīng)用150)可以訪問諸如數(shù)據(jù)庫152的不同資源,所有這些應(yīng)用都被視為落在當前應(yīng)用域100內(nèi)。
網(wǎng)關(guān)域200包括以下主要組件主入口205和平臺操作員入口210;Java消息傳遞服務(wù)器(JMS)隊列軟件組件215;通知服務(wù)器軟件組件220(以下待更詳細描述)和服務(wù)暴露引擎(SEE)250。SEE 250包括一組分級服務(wù)層252和一組服務(wù)插件模塊254到257。所述一組分級服務(wù)層252向所有服務(wù)插件254到257提供多個基本服務(wù),包括對在不安全網(wǎng)絡(luò)上傳送的數(shù)據(jù)進行加密和解密處理、對在不安全網(wǎng)絡(luò)上相互進行通信的多方進行認證等。多個服務(wù)插件254中的一個是完整性管理器服務(wù)器站插件(IMSS)254,其執(zhí)行對如何允許各客戶機應(yīng)用110到150與SEE 250相通信進行調(diào)控的特殊功能。
在相關(guān)專利申請EP01308317.5中可以找到包含在各客戶機應(yīng)用110到215內(nèi)的IMSS和相對應(yīng)的完整性管理器客戶機端(IMCS)組件的全部詳情,通過引用將該專利申請并入于此。簡言之,IMSS 254與多個客戶機應(yīng)用中的每一個中的對應(yīng)的IMCS進行通信,以對各客戶機應(yīng)用可以與SEE 250進行聯(lián)系的頻度進行調(diào)控;網(wǎng)關(guān)平臺操作員可以利用該機制來“遏制”任何特定應(yīng)用可以與SEE進行聯(lián)系的頻度,以減小在使用強度高時SEE上的負荷。該機制包括所謂的“心跳(heart beat)”,在該“心跳”中,各客戶機應(yīng)用IMCS聯(lián)系IMSS,并從IMSS更新一組當前參數(shù),該組當前參數(shù)指定了當前應(yīng)用可以與SEE內(nèi)的指定服務(wù)插件進行聯(lián)系的頻度(或者,在另選實施例中,它們那可以簡單地(即,與它希望聯(lián)系的實際服務(wù)插件無關(guān)地)指定該應(yīng)用可以與SEE進行聯(lián)系的頻度)。
在本實施例中,所示出的其他服務(wù)插件是GSM定位服務(wù)插件255、GPS定位服務(wù)插件255、GPS定位服務(wù)插件256以及短信服務(wù)(SMS服務(wù)插件257)。以下對這些服務(wù)插件的功能進行更詳細的描述。
在本實施例中,由網(wǎng)關(guān)平臺操作員和網(wǎng)關(guān)的客戶均可以瀏覽的網(wǎng)站服務(wù)提供主入口205和平臺操作員入口210,并且,在合適的情況下,對在網(wǎng)關(guān)操作員與客戶機應(yīng)用設(shè)備之間的商業(yè)關(guān)系的詳情進行更改。例如,特定客戶機應(yīng)用可以與網(wǎng)關(guān)平臺操作員進行協(xié)商,以訪問特定服務(wù)并且按商定的價格在特定時段內(nèi)對該服務(wù)進行最大次數(shù)的請求。如果當前應(yīng)用操作員接著要求增加他希望能夠在特定時段中對SEE內(nèi)的特定服務(wù)插件進行的請求的最大次數(shù),那么可以使用主入口來改變它,只要存在用于允許相應(yīng)地提高對當前應(yīng)用計費的價格的合適的配置即可。類似地,如果客戶通過某種另選機制(例如,通過電子郵件)與網(wǎng)關(guān)操作員進行聯(lián)系以請求對在多方之間的契約關(guān)系的這種改變,那么可以使用平臺操作員入口來標識并修改各客戶賬戶的所有詳情。
在本實施例中,后端系統(tǒng)域300是GSM移動電話網(wǎng)絡(luò)310,該GSM移動電話網(wǎng)絡(luò)310包括移動定位中心312和SMS中心314(以下將參照圖2和3對其功能進行更詳細的描述),還包括通常與諸如基站的移動網(wǎng)絡(luò)基礎(chǔ)設(shè)施相關(guān)聯(lián)的各種特征和通過數(shù)據(jù)網(wǎng)絡(luò)互連并與各種其他電信和數(shù)據(jù)網(wǎng)絡(luò)相連接的關(guān)聯(lián)廣播天線桿305。
作為圖1所示的系統(tǒng)的操作的示例,以下參照圖2對圖1的客戶機應(yīng)用110的操作進行描述。以下將當前應(yīng)用110稱為iLocate。iLocate應(yīng)用110使得用戶(例如“爸爸”)9可以使用他的經(jīng)由因特網(wǎng)連接到iLocate應(yīng)用110的個人計算機10通過另一用戶(例如“爸爸”的女兒“凱特”)19的GSM移動電話20來確定她的位置。為此,客戶機應(yīng)用iLocate 110將使用GSM定位服務(wù)插件255和/或GPS定位服務(wù)256來搜索凱特的手機20的位置,并且還可以使用SMS服務(wù)插件257,以向凱特的手機20發(fā)送SMS和從該手機20接收SMS。服務(wù)插件255、256以及257接著與后端系統(tǒng)300進行通信,后端系統(tǒng)300通過基站天線桿305向凱特的手機20發(fā)送數(shù)據(jù)并從該手機20獲得數(shù)據(jù)。
為了確定移動手機裝置的位置,GSM定位服務(wù)插件255和GPS定位服務(wù)插件256實質(zhì)上簡單地與移動定位中心312進行聯(lián)系并詢問它以獲得所述信息。移動定位中心獲得該信息的方式與本發(fā)明并不相關(guān),因此不對它進行詳細描述。簡言之,如由這些服務(wù)的名稱表示的,對于GSM服務(wù),移動定位中心確定用戶在哪個小區(qū)中,并通過將其與該小區(qū)覆蓋的地理區(qū)域相關(guān)聯(lián)來給出該移動站的大致位置;對于GPS服務(wù)(僅當待定位手機包括GPS接收器時才可用該服務(wù)),移動定位中心發(fā)送一SMS消息,該SMS消息使得手機使用它的機載GPS接收器自動查找它的位置,然后向移動定位中心發(fā)送回帶有所確定的位置的詳情的SMS。其意義在于對移動定位系統(tǒng)進行操作的后端系統(tǒng)信任網(wǎng)關(guān),以確保該網(wǎng)關(guān)既不會使移動定位中心過載也不會不恰當?shù)厥褂盟姆?wù)。
下面參照圖3,對為了允許用戶9(爸爸)向用戶19(他的女兒凱特)發(fā)送SMS并從用戶19接收SMS而在圖2所例示的各種組件之間交換的信號進行描述。
為了使得可以對SMS進行這種交換,iLocate應(yīng)用110發(fā)起與網(wǎng)關(guān)200的連接。它通過首先從iLocate應(yīng)用111的開發(fā)者控制部分向由平臺操作員提供的完整性管理器客戶機端(IMCS)模塊114發(fā)送請求發(fā)起信號405,來執(zhí)行所述發(fā)起。IMCS 114在接收到發(fā)起請求信號405時生成另一發(fā)起信號410,該發(fā)起信號410被發(fā)送給位于網(wǎng)關(guān)域200內(nèi)的完整性管理器服務(wù)器端(IMSS)服務(wù)插件模塊254。信號410是在IMCS 114與IMSS 254(其具有被設(shè)置為服務(wù)暴露引擎250的一部分的一組分級服務(wù)層252的優(yōu)點)之間經(jīng)完全認證并加密的通信。在該通信過程中,IMCS114向IMSS提供與iLocate應(yīng)用110有關(guān)的各種詳情,在本實施例中,這些詳情包括與監(jiān)聽器地址(即,服務(wù)器的網(wǎng)際協(xié)議(IP)地址和端口號)有關(guān)的詳情,iLocate應(yīng)用110針對由通知服務(wù)器220提供的通知消息對該監(jiān)聽器地址進行監(jiān)聽。此外,作為通信410的一部分,IMSS 254向IMCS 114傳送與IMCS 114應(yīng)當發(fā)起心跳通信的頻度有關(guān)的詳情。
當完成了通信410時,IMCS 114發(fā)起心跳通信415a。這同樣是利用了所述一組分級服務(wù)層252的安全的經(jīng)認證的通信,所述一組分級服務(wù)層252確保呼叫方確實是iLocate應(yīng)用110而不是假冒者并且此時IMCS確實是經(jīng)授權(quán)而與IMSS 254進行聯(lián)系的。通信415a(以及隨后的心跳通信415n)的規(guī)則心跳的主要功能是為了指定iLocate應(yīng)用110可以從服務(wù)插件255到257(應(yīng)用110被適時地與它們注冊在一起)中的任一個請求服務(wù)的頻度。(由主入口205或平臺操作員入口210執(zhí)行注冊)。隨后的心跳通信415按等時間間隔發(fā)生,并被用作遏制應(yīng)用110可以與服務(wù)暴露引擎250進行聯(lián)系的頻率的機制,而且提供了用于確保服務(wù)暴露引擎250和應(yīng)用110(以及互連數(shù)據(jù)網(wǎng)絡(luò))均仍然正在正確地運行的機制。在相關(guān)歐洲專利申請EP01308317.5中可以找到心跳通信的全部詳情。
按此方式在應(yīng)用110與網(wǎng)關(guān)200之間建立了通信線路之后,然后應(yīng)用110等待用戶請求。由此,當接收到來自PC 10的登錄請求通信420時,應(yīng)用110將向PC 10提供到它的網(wǎng)站的接入口,從該網(wǎng)站向PC 10的用戶(“爸爸”)提供各種服務(wù)。在登錄之后,PC 10的用戶從由應(yīng)用110提供的網(wǎng)站中選擇發(fā)送帶有用戶指定的插入文本“你好嗎?”的SMS信號,希望將該SMS信號發(fā)送給由其移動電話號碼標識的移動電話,這使得將已發(fā)送SMS信號425從PC 10發(fā)送到iLocate應(yīng)用110。
當完成了發(fā)送SMS通信425時,應(yīng)用110試圖使用SMS插件257發(fā)起發(fā)送SMS通信430。為了實現(xiàn)該目的,執(zhí)行許多較低層活動(對于其詳情,請讀者參見相關(guān)歐洲專利申請EP01308317.5),但是這些活動包括使用IMCS 114檢查應(yīng)用110當前有權(quán)利發(fā)起這種連接以及在服務(wù)暴露引擎250內(nèi)與分級服務(wù)層組252進行協(xié)商。一旦已經(jīng)成功地完成了通信430,SMS服務(wù)插件257(通過包括SMS中心314和移動網(wǎng)絡(luò)基礎(chǔ)設(shè)施305在內(nèi)的各種中間體)發(fā)起向手機20的又一發(fā)送SMS通信435。
在本示例中,當接收到SMS時,手機20的用戶(“凱特”)希望發(fā)送響應(yīng)SMS。注意,在本實施例中,SMS服務(wù)插件257只具有與其相關(guān)聯(lián)的單個電話號碼,必須將所有來達SMS文本消息都定址到該電話號碼。在本實施例中,SMS服務(wù)插件257保持有它先前已向其發(fā)送了文本消息的目的地電話號碼的記錄,并使用在該文本消息中包括的呼叫者ID來確定應(yīng)當將所接收到的SMS傳送給哪個應(yīng)用。在另選實施例中,SMS服務(wù)插件257可以具有任意大數(shù)量個移動電話號碼,可以將來達SMS寄給這些移動電話號碼;或者SMS服務(wù)插件257可以包括一種用于更明確地指定應(yīng)當將來達SMS傳送給誰的另選標識機制。
由此,在本示例中,手機20生成回復SMS(“很好”),將該回復SMS從手機20通過與在發(fā)送SMS通信435中使用的中間體相同的中間體發(fā)送到SMS服務(wù)插件257。
當接收到回復SMS 440時,服務(wù)插件257向JMS隊列215“投入”一“事件”,該事件指定要向應(yīng)用110發(fā)送請求它與SMS服務(wù)插件257進行聯(lián)系的通知。隨后,通知服務(wù)器220從該JMS隊列取出該事件并(按以下待更詳細地描述的方式)對其進行處理。將事件投入JMS隊列與隨后由通知服務(wù)器220從JMS隊列獲取該事件的組合構(gòu)成了如圖3所例示的事件通信445。
作為由通知服務(wù)器220執(zhí)行的處理的結(jié)果,通知服務(wù)器220發(fā)起與監(jiān)聽器112的簡單(未認證并且未加密的)TCP/IP連接450,并通過該連接向監(jiān)聽器112發(fā)送一通知(以下對該通知的本質(zhì)進行更詳細的描述)。
當接收到該通知時,監(jiān)聽器112通過轉(zhuǎn)發(fā)通知通信455將該通知轉(zhuǎn)發(fā)給位于應(yīng)用110的主(客戶機應(yīng)用專用)部分111內(nèi)的通知處理模塊(未示出),應(yīng)用110對該通知進行處理,從而確定它應(yīng)當試圖與SMS服務(wù)插件257進行聯(lián)系。
因此應(yīng)用110試圖(按與建立發(fā)送SMS通信430相對應(yīng)的方式)建立收集SMS通信460;注意,在本實施例中,該通知并不具體指定應(yīng)用110應(yīng)當與SMS服務(wù)插件257進行聯(lián)系的目的,而僅僅是回調(diào)型通知,該通知使得應(yīng)用110與服務(wù)插件257進行聯(lián)系,并通知該服務(wù)插件它是由于接收到通知而進行該聯(lián)系的。當建立了收集SMS通信460時,服務(wù)插件257將它具有的針對應(yīng)用110的任何數(shù)據(jù)(包括它已從手機20接收到的SMS)傳遞給應(yīng)用110。
作為接收到該回復SMS的結(jié)果,應(yīng)用110對信息進行更新(在其網(wǎng)站上將該信息顯示給PC 10),當PC 10接著刷新(即,重新加載)來自應(yīng)用110的網(wǎng)頁時,將通知該PC 10有一SMS正在等待它,并且可以通過按常規(guī)方式從該網(wǎng)頁選擇合適的鏈接來收集該SMS。由iLocate應(yīng)用110執(zhí)行的方法在參照圖3對在圖1和2所示的系統(tǒng)的各種要素之間的交互示例組進行了描述之后,以下參照圖4對當應(yīng)用110在圖1的系統(tǒng)內(nèi)正常地操作時由應(yīng)用110執(zhí)行的多個步驟進行更一般性的描述。由此,在該方法開始時,流程進行到步驟405,在步驟405處該應(yīng)用執(zhí)行任何初始化過程,重要的是,這些初始化過程包括建立監(jiān)聽器112。如上所述,監(jiān)聽器112是這樣一種簡單的編程結(jié)構(gòu)只要給出了正確的IP地址和端口號,該編程結(jié)構(gòu)就使得第三方可以建立與該監(jiān)聽器的TCP連接。本領(lǐng)域的技術(shù)人員很好理解,通過指定只可以按此方式向監(jiān)聽器發(fā)送簡單的文本文件,即使在相當強有力的防火墻(如希望針對經(jīng)由因特網(wǎng)的未授權(quán)訪問來保護其內(nèi)部網(wǎng)絡(luò)的組織經(jīng)常使用的防火墻)的背后也可以建立這種監(jiān)聽器。
在步驟405完成后,本方法進行到步驟410,在步驟410處,IMCS 114建立與IMSS 254的通信,以按上述并且在相關(guān)申請EP 01308317.5中更詳細地描述的方式將所述應(yīng)用與網(wǎng)關(guān)200注冊在一起。
在步驟410完成后,本方法進行到步驟415,在步驟415中,確定該應(yīng)用是否已接收到從應(yīng)用110請求服務(wù)的用戶請求。如果接收到了請求,則處理進行到步驟420,在步驟420處對該請求進行及時的處理;為了完成該請求,如果有必要,則該處理包括與服務(wù)暴露引擎250中的一個或更多個服務(wù)進行聯(lián)系。在步驟420完成之后,本方法回到步驟415。
如果在步驟415中確定不存在等待處理的已接收請求,則本方法進行到步驟425,在步驟425中,確定應(yīng)用是否已通過其監(jiān)聽器112接收到來自通知服務(wù)器220的通知。如果沒有接收到這種通知,則本方法返回到步驟415并繼續(xù)下去,然后等待新用戶請求或新通知。
如果在步驟425中確定已接收到新通知,則本方法進行到步驟430,在步驟430中對該通知進行處理以識別出服務(wù)插件255到257中的哪個服務(wù)插件發(fā)起了對該通知的發(fā)送。
在步驟430完成后,本方法進行到步驟435,在步驟435中與在步驟430中識別出的服務(wù)插件進行聯(lián)系。在與有關(guān)服務(wù)插件進行聯(lián)系時,所述應(yīng)用接著對它從服務(wù)插件接收到的信息執(zhí)行任何必要的后續(xù)步驟。例如,在SMS插件257的情況下,可能已接收到新的SMS文本消息,以由應(yīng)用110將該新SMS文本消息向前發(fā)送給它的多個用戶中的一個。類似地,如果有關(guān)服務(wù)插件是GPS定位插件256,則可能GPS定位插件256最近已接收到如先前由應(yīng)用110的用戶所請求的關(guān)于一移動裝置的所在之處的信息。
在步驟435完成后,本方法返回到步驟415,在步驟415中,等待其他用戶請求或通知以進行合適的處理。
由服務(wù)插件255到257執(zhí)行的方法下面參照圖5,以下對服務(wù)插件(如服務(wù)插件255到257中的任何一個)的基本操作方法進行描述。當啟動服務(wù)插件時,本方法進行到步驟505,在步驟505中確定是否已從一應(yīng)用(如該服務(wù)插件被與其注冊在一起的應(yīng)用110)接收到新服務(wù)請求。若是,則本方法進行到步驟510,在步驟510中對該請求進行處理。該處理包括檢查該請求是否合法,并且,為了完成該請求,如果有必要,服務(wù)插件與遠程服務(wù)(如由后端系統(tǒng)310提供的服務(wù)312、314中的一個)進行聯(lián)系。在510完成后,本方法返回到步驟505。
如果在步驟505中確定尚未從應(yīng)用接收到新請求,則本方法進行到步驟515,在步驟515中,確定服務(wù)插件是否已接收到針對與該服務(wù)插件注冊在一起的多個應(yīng)用中的一個(如應(yīng)用110)的任何數(shù)據(jù)(注意,這里“數(shù)據(jù)”是指如下任何種類的事件服務(wù)插件注意到該事件,并且,對于該事件,該插件服務(wù)認為應(yīng)當通知與該插件服務(wù)注冊在一起的多個應(yīng)用中的一個)。如果確定尚未接收到這種數(shù)據(jù),則本方法返回到步驟505。否則,本方法進行到步驟520,在步驟520中,確定待向其通知新接收到的數(shù)據(jù)的應(yīng)用是否具有與服務(wù)暴露引擎250注冊在一起的監(jiān)聽器,如果所關(guān)注的應(yīng)用沒有合適的監(jiān)聽器,則本方法返回到步驟505。在此情況下,服務(wù)插件僅僅進行等待,直到所討論的應(yīng)用下一次試圖與服務(wù)插件進行聯(lián)系,此時服務(wù)插件會自動將數(shù)據(jù)或其他事件通知給該應(yīng)用。
然而,如果在步驟520中確定所關(guān)注的應(yīng)用確實具有合適的監(jiān)聽器,則本方法進行到步驟525,在步驟525中,該應(yīng)用生成一通知請求。在本實施例中,該通知請求具有如在公知的Java消息傳遞服務(wù)(JMS)中使用的消息對象的形式。
接著本方法進行到步驟525,在步驟525中,使用Java消息傳遞服務(wù)將所生成的通知請求消息發(fā)送給通知服務(wù)器。具體地,在本實施例中,通過服務(wù)插件將該通知請求消息置于JMS隊列215上來執(zhí)行該發(fā)送,隨后通知服務(wù)器220從該JMS隊列215消耗通知請求消息。在由通知服務(wù)器消耗通知消息時,通知服務(wù)器對請求進行處理并生成具有XML文檔的形式的通知并將該通知發(fā)送給合適的應(yīng)用監(jiān)聽器。在圖5中通過子例程700例示了由通知服務(wù)器執(zhí)行的操作。由圖5中的點線例示了在服務(wù)插件與通知服務(wù)器之間的間接(解耦)連接,這表示該連接是經(jīng)由JMS隊列215的異步連接。
在步驟525完成后,服務(wù)插件的方法返回到步驟505。注意,以下參照圖7a到7d對在子例程700中執(zhí)行的步驟進行更詳細的描述。通知服務(wù)器220下面參照圖6,對本實施例中的通知服務(wù)器220的構(gòu)架軟件特征或模塊進行描述。
監(jiān)聽器模塊610執(zhí)行從JMS隊列215取出尋址到通知服務(wù)器220的消息的功能,并將它們作為事件(可以根據(jù)如從JMS隊列215接收到的消息在格式上對這些事件進行修改)存儲在先入先出(FIFO)事件存儲部620中。
假脫機程序(spooler)模塊625取出存儲在FIFO事件存儲部620中的事件,并將它們提供給“調(diào)度器”,該調(diào)度器定期地調(diào)用假脫機程序以使用假脫機程序625查看是否存在任何未處理事件。該假脫機程序與高速緩存模塊630進行通信,該高速緩存模塊630又與地址映射存儲部635進行通信,以使得假脫機程序可以找出作為待派發(fā)事件的目的地的應(yīng)用的監(jiān)聽器的IP地址和端口號(高速緩存630和地址映射635按常規(guī)方式進行操作,使得如果在高速緩存中不存在希望的地址詳情,則該高速緩存從地址映射中請求這些地址詳情,將這些詳情傳遞給假脫機程序625并將這些詳情的拷貝存儲預定時段,以使得可以在不必與地址映射635進行聯(lián)系的情況下直接由高速緩存回答對同一詳情的隨后查詢)。假脫機程序625還與重試控制器模塊640進行通信,該重試控制器模塊640接收調(diào)度器未成功地嘗試派發(fā)的多個事件,并確定是否應(yīng)當在某個隨后時間點重試派發(fā)它們;若是,則存儲它們直到這種時間點,然后將它們再提交給FIFO事件存儲部620。
通知服務(wù)器220還包括調(diào)度器工廠模塊670,該調(diào)度器工廠模塊670對FIFO事件存儲部620進行監(jiān)測,如果它檢測到在FIFO事件存儲部中存在需要派發(fā)的新事件,則它生成新調(diào)度器對象671、672。每個調(diào)度器對象671、672都按它自己的執(zhí)行線程運行,并且在任何一個時刻都只負責單個通知,使得網(wǎng)絡(luò)延遲不會累積增加到使隨后的通知延遲得不被發(fā)送,直到已成功發(fā)送先前的通知(或者對先前的通知進行了嘗試然后失敗)為止。一旦調(diào)度器671、672完成了對通知的處理(要么通過成功地發(fā)送它,要么通過將其報告回假脫機程序625),它就使用假脫機程序625進行檢查以查看是否存在待派發(fā)的未處理通知,若是,則它取出該通知并嘗試派發(fā)該通知,否則它自我銷毀;該自動池大小確定行為針對當前需求使派發(fā)容量均衡化。
在圖6中示出的還有這樣的機制諸如iLocate Live應(yīng)用111的應(yīng)用通過該機制可以將它們的監(jiān)聽器112套接字ID(即,IP地址和端口號)與通知服務(wù)器注冊在一起。如圖6所示,在本實施例中,通過以下兩者中的任一個可以執(zhí)行該注冊應(yīng)用直接通知服務(wù)插件(例如SMS服務(wù)插件257),然后該服務(wù)插件將地址詳情傳遞給地址映射635本身;或者另選地,應(yīng)用使用它的監(jiān)聽器地址詳情與訪問控制模塊680的公共點進行聯(lián)系,然后由控制部680將該監(jiān)聽器地址詳情傳遞給地址映射635。
通知服務(wù)器操作概要由此可以對通知服務(wù)器的總體操作進行如下描述。調(diào)度器工廠670對FIFO事件存儲部620進行監(jiān)測,當它確定存在過多等待派發(fā)的事件時,它啟動新調(diào)度器671、672。如上所述,調(diào)度器671、672按它們自己的執(zhí)行線程運行;這是有必要的,因為網(wǎng)絡(luò)延遲會使各派發(fā)操作延遲極其長的時段(幾秒)。調(diào)度器671、672調(diào)用假脫機程序625以給予它們待派發(fā)事件;如果假脫機程序625報告不存在等待事件,則調(diào)度器671、672自我銷毀。
客戶機應(yīng)用開發(fā)者從提供XML-感知監(jiān)聽器的許多提供者中的一個尋找這種組件,并將其與應(yīng)用的其余部分相集成。開發(fā)者理解來自服務(wù)平臺的所有事件將遵循一個標準形式(例如,服務(wù)ID、事件類型、事件參數(shù))。
在操作中,執(zhí)行以下步驟1)客戶機(對于服務(wù)平臺,通過唯一ID對該客戶機進行了認證)通過接入部680的公共點或通過任何服務(wù)256、257報告它的監(jiān)聽器地址(IP地址和端口)。
2)將客戶機監(jiān)聽器的[ID+地址]提交給地址映射635。
3)客戶機通過它們的API使用多個服務(wù)256、257。
4)出現(xiàn)了一事件,有關(guān)服務(wù)256、257生成被發(fā)送給通知服務(wù)器事件隊列215的事件。該事件包括它所尋址到的客戶機110的ID。
5)監(jiān)聽器610獲取該事件并將它置于FIFO(先入先出)事件存儲部620中。
6)調(diào)度器671、672調(diào)用假脫機程序625以向它供應(yīng)一事件。
7)假脫機程序625從FIFO事件存儲部620中取出下一事件。
8)假脫機程序625提取客戶機ID并針對一地址對高速緩存630進行查詢。如果有必要,高速緩存630對地址映射存儲部635進行查詢。假脫機程序625將該事件和傳送地址提供給調(diào)度器671、672。調(diào)度器將該事件轉(zhuǎn)換成XML文件并試圖將它傳送給客戶機監(jiān)聽器112。
9)假設(shè)第一次傳送嘗試失敗了,則調(diào)度器671、672報告?zhèn)魉鸵咽 ?br>
10)假脫機程序625將該事件提交給重試控制器640,該重試控制器640丟棄該事件(如果它已達到它的重試極限)或?qū)⒃撌录3忠欢〞r段(重試時段)。
11)一旦已經(jīng)過了該事件的重試時段,則重試控制器640將它提交給FIFO事件存儲部620。
12)調(diào)度器671、672調(diào)用假脫機程序以向它供應(yīng)一事件。
13)假脫機程序625從FIFO事件存儲部620中取出下一事件。
14)假脫機程序625提取客戶機ID并針對一地址對高速緩存630進行查詢。如果有必要,高速緩存630對地址映射存儲部635進行查詢。假脫機程序625將該事件和傳送地址供應(yīng)給調(diào)度器671、672。
15)調(diào)度器671、672將該事件轉(zhuǎn)換成XML文件并將它傳送給客戶機監(jiān)聽器112。
16)調(diào)度器671、672調(diào)用假脫機程序625以向它供應(yīng)一事件。如果假脫機程序作出表示不存在其他入隊事件的響應(yīng),則調(diào)度器671、672自我銷毀。
對該處理的更改允許通知服務(wù)器220為事件設(shè)置不同的重試嘗試極限、重試時段、持久性等。在本實施例中由服務(wù)用于提交事件(以上步驟4)的事件記錄的形式包括用于表示所需事件處理行為的占位符。
通知服務(wù)器220可以對傳送失敗進行檢測并通過另選方式(例如,電子郵件)向客戶機所有者告警。
當接收到該通知時,監(jiān)聽器112與客戶機應(yīng)用111相交互,該客戶機應(yīng)用111采取合適的動作(典型地,引起到服務(wù)器中對合適的服務(wù)API的調(diào)用,以例如獲取來達SMS消息)。
在本實施例中還根據(jù)接入部680的公共點或通過任何服務(wù)255、256、257提供了測試方法。在請求時,生成一測試事件。按照任何其他事件來處理該測試事件,并將其傳送給合適的已注冊監(jiān)聽器。如果未傳送測試事件通知,則客戶機111能夠檢測到事件傳送機制的故障。對通知服務(wù)器220的具體模塊的詳細考察下面參照圖7a到7e,對由通知服務(wù)器220內(nèi)的5個主要模塊/對象執(zhí)行的具體步驟進行描述。
監(jiān)聽器模塊610的方法首先參照圖7a,在步驟705處在啟動本方法之后,由監(jiān)聽器模塊610執(zhí)行的方法啟動了,在步驟705中,確定在JMS隊列215中是否存在尋址到通知服務(wù)器220的新消息。如果不存在這種等待消息,則本方法繼續(xù)返回到步驟705,直到檢測到這種消息為止。
如果在步驟705處檢測到尋址到通知服務(wù)器220的消息,則本方法進行到步驟710,在步驟710中,從JMS隊列獲取該消息。在步驟710完成后,本方法進行到步驟715,在步驟715中將所獲取的事件存儲在FIFO事件存儲部620中。在本實施例中,通過簡單地獲得如從JMS隊列215獲取的消息對象并按不修改方式存儲它,將它存儲在FIFO事件存儲部620中。然而,在另選實施例中,可以讀取該消息的主要內(nèi)容并將其調(diào)整為另選格式(例如不同的Java對象),然后按該修改的格式存儲在FIFO事件存儲部中。在步驟715完成后,本方法返回到步驟705,并等待其他待處理消息。
調(diào)度器工廠模塊670的方法下面參照圖7b,在調(diào)度器工廠670執(zhí)行的方法啟動之后,該方法進行到步驟720,在步驟720中,確定在FIFO存儲部620中是否存在等待派發(fā)的任何事件。如果不存在這種等待派發(fā)的事件,則本方法繼續(xù)返回到步驟720,直到在FIFO存儲部620中檢測到這種待處理的事件為止。
如果在FIFO存儲部620中檢測到事件,則本方法進行到步驟725,在步驟725中,生成新調(diào)度器對象。在本實施例中,在步驟725完成后,本方法返回到步驟720,并再次查看是否存在等待派發(fā)的事件。這意味著在本實施例中,如果在本方法回到步驟720之前假脫機程序仍然未從FIFO存儲部中獲得事件,那么即使實際上只需要一個調(diào)度器對象,也可能會生成一個或更多個其他調(diào)度器對象。這不會帶來問題,因為這種過多的調(diào)度器對象會在適當?shù)臅r候自我銷毀。然而,可以使用更復雜的方法來避免發(fā)生該情況,如在生成調(diào)度器之后在返回步驟720之前引入小的延遲,或者針對特定事件檢查是否已生成了調(diào)度器,等等。在圖7b的步驟725與圖7d的開始步驟之間的點線表示對新調(diào)度器對象(圖7d例示了其操作方法)的實例化。
假脫機程序模塊625的方法下面參照圖7c,由假脫機程序模塊625執(zhí)行的方法在它啟動之后進行到步驟730,在步驟730中,確定是否一調(diào)度器已請求一新事件以將其派發(fā)給客戶機應(yīng)用(如應(yīng)用110)。如果未檢測到調(diào)度器對象的這種請求,則本方法進行到步驟735,在步驟735中,確定調(diào)度器是否試圖返回失敗事件(即,調(diào)度器已嘗試并且未能成功地派發(fā)給合適的監(jiān)聽器的事件)。若是,則在步驟740中假脫機程序625獲取該失敗事件并將其傳遞給重試控制器640。否則,本方法返回到步驟730,并等待調(diào)度器與其進行聯(lián)系以接收待派發(fā)的新事件或返回失敗事件。
如果在步驟745處確定存在等待要派發(fā)的新事件的空閑調(diào)度器,則本方法進行到步驟745,在步驟745中,從FIFO存儲部620中取出待派發(fā)的下一事件(注意,即使在圖7c中未明確示出,但是如果在FIFO存儲部中不存在等待派發(fā)的事件,則跳過步驟750,并且在步驟735處,通知調(diào)度器不存在等待事件,于是調(diào)度器簡單終止)。
在步驟745完成后,本方法進行到步驟750,在步驟750中,從高速緩存中(或者,如果必要的話,通過高速緩存從地址映射中)查找作為所述事件待發(fā)送到的目的地的監(jiān)聽器地址,然后本方法進行到步驟755,在步驟755中,將該事件傳遞給調(diào)度器,然后調(diào)度器試圖適當?shù)嘏砂l(fā)該事件。在步驟755完成后,本方法返回到步驟730,并再次等待調(diào)度器與其進行聯(lián)系以接收待派發(fā)的新事件或返回失敗事件。
調(diào)度器對象671、672的方法下面參照圖7d,由各調(diào)度器對象671、672執(zhí)行的方法在(在步驟725處由調(diào)度器工廠模塊670)實例化了之后進行到步驟760,在步驟760中,調(diào)度器671、672與假脫機程序625進行聯(lián)系以請求待派發(fā)的新事件。在步驟765處,調(diào)度器確定它是否從假脫機程序625接收到了待派發(fā)的新事件,或者確定假脫機程序是否已報告它當前沒有等待派發(fā)的事件。如果后者是本情況(即不存在等待派發(fā)的事件),則調(diào)度器對象自我終止(該自我終止的能力是在Java和其他面向?qū)ο笳Z言中的標準特征,其防止了不被使用的對象占用計算資源)。
然而,如果在步驟765中確定向調(diào)度器給予了待派發(fā)的新事件,則本方法進行到步驟770,在步驟770中,調(diào)度器根據(jù)在由假脫機程序傳遞給它的事件中包含的信息生成形成了待傳送給客戶機應(yīng)用的通知的內(nèi)容的XML文件;在生成了該XML文件之后,調(diào)度器接著使用在假脫機程序向它傳遞事件時由假脫機程序傳遞給調(diào)度器的地址詳情,試圖將該通知發(fā)送給監(jiān)聽器。
在步驟770完成后,本方法進行到步驟775,在步驟775中確定傳送是否成功。如果傳送成功了,則本方法返回到步驟760,以請求其他待派發(fā)事件。然而,如果由于某種原因而傳送不成功,則本方法進行到步驟780,在步驟780中將未成功傳送(即,失敗)的事件傳遞回假脫機程序(該假脫機程序又將該失敗事件傳遞給重試控制器640)。在步驟780完成后,本方法再次返回到步驟760。
重試控制器模塊640的方法下面參照圖7e,由重試控制器模塊640執(zhí)行的方法在啟動之后進行到步驟782,在步驟782中,確定是否已從假脫機程序625向它傳遞了失敗事件。若是,則本方法進行到步驟784,在步驟784中,確定該事件是否為待重試的事件。在本實施例中,通過讀取與該事件相關(guān)聯(lián)的重試參數(shù)以查看它是否具有零值,確定該事件是否為待重試的事件。重試參數(shù)指定了在對事件的傳送失敗的情況下待對其進行重試的次數(shù),并且可以具有在表示根本不重試的零與某個預定最大值之間的任何整數(shù)值;首先由最初生成該事件(其被置于JMS隊列215上)的服務(wù)插件來設(shè)置該重試參數(shù)。
如果在步驟784中確定不對事件進行重試,則本方法進行到步驟786,在步驟786中由重試控制器簡單地刪除該事件并且本方法返回到步驟782。另選地,如果在步驟784中確定要對事件進行重試,則本方法進行到步驟788,在步驟788中,由重試控制器存儲該事件并對重試該事件的時間進行計算和監(jiān)測。在本實施例中,通過讀取重試時間間隔參數(shù)并將其加上由系統(tǒng)時鐘(未示出)給出的當前時間來計算重試該時間的時間。在計算了該重試時間之后,本方法回到步驟782。
如果在步驟782處確定未接收到失敗事件,則本方法不進行到步驟784,而是進行到步驟790,在步驟790中,確定是否已達到或經(jīng)過所述(多個)事件等待重試的(最早)重試時間。若否,則本方法返回到步驟782。否則,本方法進行到步驟792,在步驟792中使已達到或超過了其重試時間的事件的重試參數(shù)遞減1。在步驟792完成后,本方法進行到步驟794,在步驟794中接著將該事件置于FIFO存儲部620中,隨后將按前述方式再從FIFO存儲部620中拾取出該事件并由假脫機程序625來重試。在步驟794完成后,重試控制器640的方法返回到步驟782。
通知格式在本實施例中,如在網(wǎng)關(guān)域200與應(yīng)用域100之間的不安全網(wǎng)絡(luò)上發(fā)送的每個通知都具有可由以下文件類型定義(DTD)文件來驗證的可擴展標記語言(XML)文件的形式<!ELEMENT event(parameter*)><!ATTLIST eventappAccID CDATA #REQUREDserviceID CDATA #REQUREDtype CDATA #REQURED><!ELEMENT parameter(#PCDATA)><!ATTLIST parametername CDATA #REQURED>
該形式實質(zhì)上規(guī)定按可由該DTD驗證的XML文件的形式提供的通知是可以包含零個或更多個“參數(shù)”(它們構(gòu)成了“事件”的子“元素”)的“事件”。事件必須具有被稱為“appAccID”(其為作為該通知的目的地的客戶機應(yīng)用的標識)、“serviceID”(其為發(fā)送通知的服務(wù)插件的標識)以及“type”(其指定了通知的類型(例如測試通知或回調(diào)通知))的三個屬性。它還規(guī)定每個參數(shù)必須具有被稱為“name”(其給出了參數(shù)的名稱)并含有可解析的字符數(shù)據(jù)(即幾乎是任何事情)的屬性。
例如,以下XML文件可由該DTD來驗證。< xml version=”1.0” ><!DOCTYPE event SYSTEM“event.dtd”><event appAccID=”iLocate”serviceID=”SMS”type=”callBack”><parameter name=”Event_Number”>1</parameter><parameter name=”Param2”>Val2</parameter><parameter name=”Param3”>Val3</parameter></event>
該XML文件實質(zhì)上表明該通知是針對iLocate應(yīng)用110的,它發(fā)自SMS服務(wù)插件257并且其類型是回調(diào)型。此外,它含有3個參數(shù),第一個參數(shù)被稱為Event Number并具有值1(即,這是一個序列號,它使得接收應(yīng)用可以將該通知與隨后的類似通知區(qū)分開,還使得應(yīng)用可以在網(wǎng)絡(luò)錯誤地對該通知發(fā)送了一次以上的情況下避免對同一通知作用一次以上)。它還含有被稱為Param2和Param3的分別具有值Val2和Val3的兩個其他參數(shù),在本示例中這些參數(shù)是冗余的,但是可用于指定例如各方9、19(在它們之間正在發(fā)送由客戶機應(yīng)用拾取的文本消息)的標識等。
監(jiān)聽器112在本實施例中,使用XML(SAX)工具箱(其為用于對XML進行解析的工具箱)的Simple API并將XML類事件推發(fā)到應(yīng)用中,來形成監(jiān)聽器112。Java以及諸如Microsoft的其他環(huán)境提供了該監(jiān)聽器。在本實施例中,采用Java編寫iLocate應(yīng)用110。
在本實施例中,通過使用SAX工具箱形成監(jiān)聽器112,如本領(lǐng)域的技術(shù)人員很好地理解的,SAX工具箱要求注冊內(nèi)容處理程序,該內(nèi)容處理程序是客戶機應(yīng)用110內(nèi)的(Java)方法(對象),其知道在XML內(nèi)預期會有什么元素并且在傳送這些元素時如何處理它們(以及它們的值)。同樣,本領(lǐng)域的技術(shù)人員很好理解,按如下方式使用SAX工具箱通過DTD來建立監(jiān)聽器112監(jiān)聽器112將針對DTD對來達XML進行驗證,并且在XML中存在任何錯誤的情況下將調(diào)用(同樣在客戶機110內(nèi)的)錯誤處理器方法??蛻魴C應(yīng)用110接著在網(wǎng)絡(luò)上打開一套接字,當它從服務(wù)器得到連接時它打開該連接作為輸入流并將該XML傳遞給內(nèi)容處理程序(作為由SAX工具箱提供的parse()方法上的參數(shù))。在它對XML進行解析時,由SAX工具箱提供的繼承方法使得該內(nèi)容處理程序方法可以在對XML進行解析的過程中注意任何重要點(起始文件、起始元素等)。按此方式(這是對SAX的所有標準使用),內(nèi)容處理程序能夠建立來自XML內(nèi)的所有值(appAccID、serviceID、類型、參數(shù))的記錄。當使內(nèi)容處理程序知道已達到事件元素的末端時,內(nèi)容處理程序獲取它在對XML文件進行解析的過程中使用被傳遞給它的值填充后的事件對象,并將該事件對象傳遞給按合適的方式對該事件起反應(yīng)(例如,與所標識的服務(wù)插件進行聯(lián)系,由此,例如從服務(wù)器中取出SMS消息)的事件處理器。
出于如下幾個原因,客戶機端事件對象(即,在應(yīng)用域100中)與代表服務(wù)器端(即,在網(wǎng)關(guān)域200中)的事件的對象不同在服務(wù)器端的事件對象內(nèi)有在對事件進行傳送時使用的許多參數(shù)(例如,重試參數(shù)),因此不適合于客戶機看到。此外,使用XML的全部要義是將服務(wù)器端與客戶機端解耦開。同樣顯見的是,在SAX的外部定義客戶機端的事件對象。SAX僅僅告訴內(nèi)容處理程序它正在XML中尋找什么,而內(nèi)容處理程序使用該信息作為應(yīng)用所需的信息。
注意,可以采用任何希望的開發(fā)范式(如Java、Perl、Microsoft等)來開發(fā)諸如iLocate應(yīng)用110的客戶機應(yīng)用。Java開發(fā)者可以決定使用其他XML工具箱來開發(fā)諸如DOM或JDOM的監(jiān)聽器模塊(等同于監(jiān)聽器112)。Microsoft開發(fā)者可以使用SAX或Microsoft XML Parser(MSXML)。Perl開發(fā)者也可以使用SAX,或使用為Perl專門提供的某些其他工具箱。其他客戶機開發(fā)環(huán)境可以使用它們自己的XML工具箱。
權(quán)利要求
1.一種在不安全網(wǎng)絡(luò)上從服務(wù)器應(yīng)用向客戶機應(yīng)用提供數(shù)字服務(wù)的方法,其中,所述客戶機應(yīng)用能夠在所述不安全網(wǎng)絡(luò)上發(fā)起安全的客戶機到服務(wù)器連接,以請求服務(wù)并從所述服務(wù)器應(yīng)用接收所得輸出數(shù)據(jù),該方法包括以下步驟響應(yīng)于當在所述客戶機應(yīng)用與所述服務(wù)器應(yīng)用之間不存在安全連接時所述服務(wù)器應(yīng)用檢測到一事件的發(fā)生,生成標識了所述服務(wù)器應(yīng)用并定址到所述客戶機應(yīng)用的通知;將所述通知轉(zhuǎn)發(fā)給通知服務(wù)器應(yīng)用;將所述通知從所述通知服務(wù)器應(yīng)用轉(zhuǎn)發(fā)給所述客戶機應(yīng)用;以及,響應(yīng)于接收到所述通知,所述客戶機應(yīng)用發(fā)起在所述客戶機應(yīng)用與所述服務(wù)器應(yīng)用之間的所述不安全網(wǎng)絡(luò)上的安全連接。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述通知具有非可執(zhí)行數(shù)據(jù)文件的形式。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述通知具有含有可擴展標記語言文件的簡單文本文件的形式。
4.根據(jù)前述任一權(quán)利要求所述的方法,該方法還包括以下步驟在所述通知服務(wù)器應(yīng)用內(nèi)運行用于對將多個分立通知轉(zhuǎn)發(fā)到所述客戶機應(yīng)用的步驟進行控制的多個分立線程。
5.根據(jù)前述任一權(quán)利要求所述的方法,該方法還包括以下步驟如果對所述通知的傳送失敗,那么所述服務(wù)器應(yīng)用指定要重試傳送所述通知的次數(shù);如果在所述不安全網(wǎng)絡(luò)上對所述通知的傳送失敗,那么所述通知服務(wù)器重試傳送所述通知達指定的次數(shù)。
6.根據(jù)前述任一權(quán)利要求所述的方法,其中,單個通知服務(wù)器從多個服務(wù)器應(yīng)用接收多個通知,并將所述多個通知轉(zhuǎn)發(fā)給多個客戶機應(yīng)用。
7.一種客戶機服務(wù)器系統(tǒng),其包括客戶機子系統(tǒng)、服務(wù)器子系統(tǒng)以及互連數(shù)據(jù)網(wǎng)絡(luò),所述客戶機子系統(tǒng)包括可進行操作以發(fā)起在所述互連網(wǎng)絡(luò)上與所述服務(wù)器子系統(tǒng)的安全連接的客戶機應(yīng)用,所述服務(wù)器子系統(tǒng)包括服務(wù)器應(yīng)用,所述服務(wù)器應(yīng)用可進行操作以與所述客戶機應(yīng)用相協(xié)作,來在所述客戶機應(yīng)用發(fā)起所述連接時完成對與所述客戶機應(yīng)用的安全連接的建立,并且所述服務(wù)器應(yīng)用還可進行操作以響應(yīng)于對由所述客戶機應(yīng)用提供的服務(wù)的請求而在這種連接上傳送輸出數(shù)據(jù),其中,所述服務(wù)器子系統(tǒng)還包括通知服務(wù)器,并且其中所述服務(wù)器應(yīng)用還可進行操作以響應(yīng)于檢測到在所述服務(wù)器應(yīng)用與所述客戶機應(yīng)用之間當前尚未建立安全連接時發(fā)生了事件而生成一通知,并將所述通知發(fā)送給所述通知服務(wù)器,并且其中所述通知服務(wù)器可進行操作以在所述互連網(wǎng)絡(luò)上將所述通知轉(zhuǎn)發(fā)給所述客戶機應(yīng)用。
8.根據(jù)權(quán)利要求7所述的客戶機服務(wù)器系統(tǒng),該客戶機服務(wù)器系統(tǒng)還包括向所述服務(wù)器子系統(tǒng)提供服務(wù)的后端系統(tǒng),其中,所述服務(wù)器子系統(tǒng)充當在所述客戶機子系統(tǒng)與所述后端系統(tǒng)之間的受信中間體。
9.一種用于在權(quán)利要求7或權(quán)利要求8的系統(tǒng)中使用的通知服務(wù)器,該通知服務(wù)器包括用于從一個或更多個服務(wù)器應(yīng)用接收通知的裝置;用于處理所述通知以建立所述通知的目的地地址的裝置;以及用于將所述通知傳送給在所述通知中標識的相應(yīng)客戶機應(yīng)用的裝置。
10.一種用于在權(quán)利要求7或權(quán)利要求8的系統(tǒng)中使用的通知服務(wù)器,該通知服務(wù)器包括用于從一個或更多個服務(wù)器應(yīng)用接收通知的接收模塊;用于處理所述通知以建立所述通知的目的地地址的處理器;以及用于將所述通知傳送給在所述通知中標識的相應(yīng)客戶機應(yīng)用的傳送模塊。
11.一種用于在權(quán)利要求7或權(quán)利要求8的系統(tǒng)中使用的服務(wù)器應(yīng)用,該服務(wù)器應(yīng)用包括如下裝置,該裝置用于響應(yīng)于檢測到在所述服務(wù)器應(yīng)用與客戶機應(yīng)用之間當前尚未建立安全連接時發(fā)生了事件而生成一通知,并將所述通知發(fā)送給通知服務(wù)器,以將所述通知向前轉(zhuǎn)發(fā)給所述客戶機應(yīng)用。
12.一種用于在權(quán)利要求7或權(quán)利要求8的系統(tǒng)中使用的客戶機應(yīng)用,該客戶機應(yīng)用包括監(jiān)聽器模塊,所述監(jiān)聽器模塊用于通過通知服務(wù)器從服務(wù)器應(yīng)用接收通知,并用于使得所述客戶機應(yīng)用通過發(fā)起到所述服務(wù)器應(yīng)用的安全連接對所述通知進行響應(yīng)。
13.一種客戶機服務(wù)器系統(tǒng),該客戶機服務(wù)器系統(tǒng)包括客戶機子系統(tǒng)、服務(wù)器子系統(tǒng)以及互連數(shù)據(jù)網(wǎng)絡(luò),所述客戶機子系統(tǒng)包括客戶機應(yīng)用,所述客戶機應(yīng)用具有用于發(fā)起在所述互連網(wǎng)絡(luò)上與所述服務(wù)器子系統(tǒng)的安全連接的裝置,所述服務(wù)器子系統(tǒng)包括服務(wù)器應(yīng)用,所述服務(wù)器應(yīng)用具有用于與所述客戶機應(yīng)用相協(xié)作以在所述客戶機應(yīng)用發(fā)起所述連接時完成對與所述客戶機應(yīng)用的安全連接的建立的裝置;和用于響應(yīng)于對由所述客戶機應(yīng)用提供的服務(wù)的請求而在這種連接上傳送輸出數(shù)據(jù)的裝置,其中,所述服務(wù)器子系統(tǒng)還包括通知服務(wù)器,并且其中所述服務(wù)器應(yīng)用還包括用于響應(yīng)于檢測到在所述服務(wù)器應(yīng)用與所述客戶機應(yīng)用之間當前尚未建立安全連接時發(fā)生了事件而生成一通知的裝置,和用于將所述通知發(fā)送給所述通知服務(wù)器的裝置,并且其中所述通知服務(wù)器包括用于在所述互連網(wǎng)絡(luò)上將所述通知轉(zhuǎn)發(fā)給所述客戶機應(yīng)用的裝置。
14.一種計算機程序或計算機程序套件,其用于在執(zhí)行所述計算機程序或計算機程序套件的過程中對一個或更多個計算機處理器進行控制以執(zhí)行根據(jù)權(quán)利要求1到6中的任何一項所述的步驟。
15.承載有根據(jù)權(quán)利要求14所述的計算機程序或計算機程序套件的計算機可讀介質(zhì)。
全文摘要
本發(fā)明提供了用于在計算機設(shè)備之間傳送數(shù)據(jù)的方法和設(shè)備??蛻魴C服務(wù)器系統(tǒng)(100、200、300)包括客戶機子系統(tǒng)(100)、服務(wù)器子系統(tǒng)(200)以及互連數(shù)據(jù)網(wǎng)絡(luò)??蛻魴C子系統(tǒng)包括可進行操作以發(fā)起在互連網(wǎng)絡(luò)上與服務(wù)器子系統(tǒng)(200)的安全連接的客戶機應(yīng)用(110、120、130、140、150)。服務(wù)器子系統(tǒng)包括服務(wù)器應(yīng)用(254、255、256、257),該服務(wù)器應(yīng)用可進行操作以與客戶機應(yīng)用相協(xié)作,來在客戶機應(yīng)用發(fā)起連接時完成對與客戶機應(yīng)用的安全連接的建立,并且服務(wù)器應(yīng)用還可進行操作以響應(yīng)于對由客戶機應(yīng)用提供的服務(wù)的請求而在這種連接上傳送輸出數(shù)據(jù)。服務(wù)器子系統(tǒng)還包括通知服務(wù)器(220),并且服務(wù)器應(yīng)用還可進行操作以響應(yīng)于檢測到在服務(wù)器應(yīng)用與客戶機應(yīng)用之間當前尚未建立安全連接時發(fā)生了事件而生成一通知,并將該通知發(fā)送給通知服務(wù)器(220)。通知服務(wù)器(220)還可進行操作以在互連網(wǎng)絡(luò)上將通知轉(zhuǎn)發(fā)給客戶機應(yīng)用。
文檔編號H04L29/06GK1939035SQ200580010782
公開日2007年3月28日 申請日期2005年3月23日 優(yōu)先權(quán)日2004年3月31日
發(fā)明者大衛(wèi)·羅克斯巴勒, 西蒙·亞歷山大·貝德斯, 帕特里克·布賴恩·法利, 邁克爾·羅伯特·霍斯金 申請人:英國電訊有限公司