本文描述了一種面向服務(wù)的方法,用于為普及設(shè)備提供公用接口。本文用財(cái)政案例演示了如何通過關(guān)鍵 Web 服務(wù)應(yīng)用程序類型,包括事務(wù)、通訊、基于位置的服務(wù)以及更多,將 Web 服務(wù)擴(kuò)展到普及環(huán)境中。
引言
普及運(yùn)算是信息技術(shù)的下一階段。業(yè)界分析家預(yù)言移動(dòng)設(shè)備將是下一個(gè)范例轉(zhuǎn)換,并且包括 IBM 在內(nèi)的供應(yīng)商都在為構(gòu)建普及運(yùn)算應(yīng)用程序大力投資,以開發(fā)最好的工具。象移動(dòng)電話、PDA、尋呼機(jī)這樣的普及設(shè)備在數(shù)量上已經(jīng)遠(yuǎn)遠(yuǎn)超過臺(tái)式機(jī)和膝上型電腦,而且趨勢正在擴(kuò)大。除此還正在用嚴(yán)格的運(yùn)算能力和通訊鏈接構(gòu)建各種各樣的裝置,例如空氣調(diào)節(jié)系統(tǒng)、吸油煙機(jī)、汽車監(jiān)控系統(tǒng),為了在除 PC 和工作站以外的設(shè)備上構(gòu)建應(yīng)用程序,首先要了解在新的運(yùn)算環(huán)境中的巨大投資。
在本文中,我們提出了一種面向服務(wù)的方法,用于提供獨(dú)立于設(shè)備的公用接口。該方法為普及運(yùn)算環(huán)境作出了很大的貢獻(xiàn)。我們的目的是指出用于各種應(yīng)用程序類型的獨(dú)特服務(wù)。我們將用一個(gè)財(cái)政案例來演示面向服務(wù)的體系結(jié)構(gòu) (SOA) 在普及環(huán)境中的擴(kuò)展。本文首先簡要介紹了 Web 服務(wù)和普及運(yùn)算環(huán)境。接著是概述部分,描述了如何通過關(guān)鍵 Web 服務(wù)應(yīng)用程序類型,包括事務(wù)、通訊、基于位置的服務(wù)、同步、設(shè)備管理、數(shù)據(jù)管理和媒體應(yīng)用程序,將 Web 服務(wù)擴(kuò)展到普及環(huán)境中。
SOA 概述
從概念上講,SOA 是一種實(shí)現(xiàn)動(dòng)態(tài)電子商務(wù)的體系結(jié)構(gòu)。它是一種軟件系統(tǒng)設(shè)計(jì)方法,通過已經(jīng)發(fā)布的和可發(fā)現(xiàn)的接口為終端用戶應(yīng)用程序或其它服務(wù)提供服務(wù)。服務(wù)為封裝離散的業(yè)務(wù)功能提供了一個(gè)更好的方法,因此,服務(wù)也是開發(fā)支持業(yè)務(wù)流程應(yīng)用程序的一個(gè)好方法。
圖 1. 通常的 SOA 環(huán)境
Web 服務(wù)組件
在任何面向服務(wù)的環(huán)境中都需要進(jìn)行一些基本操作:
- 需要?jiǎng)?chuàng)建 Web 服務(wù),并定義其接口和調(diào)用方法。
- 需要將 Web 服務(wù)發(fā)布到一個(gè)或更多的內(nèi)聯(lián)網(wǎng)(Intranet)或互聯(lián)網(wǎng)(Internet)儲(chǔ)存庫中,供潛在的用戶查找。
- 需要查找 Web 服務(wù)供潛在的用戶調(diào)用。
- 無論基于什么好處都要調(diào)用 Web 服務(wù)。
- 當(dāng) Web 服務(wù)不再可用或不再需要時(shí),需取消其發(fā)布。
圖 2. SOA 模型
服務(wù)是一個(gè)邏輯實(shí)體,其合約是由一個(gè)或多個(gè)已經(jīng)發(fā)布的接口定義的。
服務(wù)提供者是一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),它為處理一系列特定任務(wù)的軟件資源提供服務(wù)接口。服務(wù)提供者節(jié)點(diǎn)能代表商業(yè)實(shí)體的服務(wù),或者它甚至能代表可重用子系統(tǒng)(實(shí)現(xiàn)服務(wù)規(guī)范的軟件實(shí)體)的服務(wù)接口。
服務(wù)請(qǐng)求者是一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),它發(fā)現(xiàn)并調(diào)用其它的軟件服務(wù)來提供商業(yè)解決方案。服務(wù)請(qǐng)求者節(jié)點(diǎn)常常代表執(zhí)行遠(yuǎn)程過程調(diào)用分布式對(duì)象或者服務(wù)提供者的商業(yè)應(yīng)用程序組件。提供者節(jié)點(diǎn)可能就在本地的企業(yè)內(nèi)部網(wǎng)內(nèi),或者在遠(yuǎn)端的因特網(wǎng)上。從概念上來說,SOA 本質(zhì)上是將網(wǎng)絡(luò)、傳輸協(xié)議和安全細(xì)節(jié)留給特定的實(shí)現(xiàn)來處理。通常稱為 客戶端,但是,服務(wù)請(qǐng)求者也可以是終端用戶應(yīng)用程序或別的服務(wù)。
服務(wù)定位器是一類充當(dāng)注冊(cè)表的特定服務(wù)提供者,允許查找服務(wù)提供者接口和服務(wù)位置。
服務(wù)中介者是一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),作為儲(chǔ)存庫、電話黃頁或票據(jù)交換所,產(chǎn)生由服務(wù)提供者發(fā)布的軟件接口。商業(yè)實(shí)體或者獨(dú)立的運(yùn)營商能代表服務(wù)中介者。
這 3 種 SOA 參與者、服務(wù)提供者、服務(wù)中介者以及服務(wù)請(qǐng)求者通過 3 個(gè)基本操作: 發(fā)布、 查找、 綁定相互作用。服務(wù)提供者向服務(wù)中介者 發(fā)布服務(wù)。服務(wù)請(qǐng)求者通過服務(wù)中介者查找所需的服務(wù),并綁定到這些服務(wù)上。
SOA 實(shí)現(xiàn)技術(shù)
SOA 實(shí)現(xiàn)技術(shù)包括:
-
XML:可擴(kuò)充標(biāo)記語言 (Extensible Markup Language) 1.0 標(biāo)準(zhǔn)是一個(gè)基于文本的 World Wide Web 組織 (W3C) 規(guī)范的標(biāo)記語言。與 HTML 使用標(biāo)簽來描述外觀和數(shù)據(jù)不同,XML 嚴(yán)格地定義可移植的結(jié)構(gòu)化數(shù)據(jù)。它可以作為定義數(shù)據(jù)描述語言的語言,例如標(biāo)記語法或詞匯、交換格式和通訊協(xié)議。
-
SOAP:簡單對(duì)象訪問協(xié)議 (Simple Object Access Protocol) 是一個(gè)基于 XML 的,用于在分布式環(huán)境下交換信息的輕量級(jí)協(xié)議。SOAP 在請(qǐng)求者和提供者對(duì)象之間定義了一個(gè)通訊協(xié)議,這樣,在面向?qū)ο缶幊塘餍械沫h(huán)境中,該請(qǐng)求對(duì)象可以在提供的對(duì)象上執(zhí)行遠(yuǎn)程方法調(diào)用。SOAP 規(guī)范是由 Microsoft、IBM、Lotus、UserLand 和 DevelopMentor 聯(lián)合制訂的。該規(guī)范隨后發(fā)展并建立了 W3C XML 協(xié)議工作組,有超過三十家公司參與其中。在大多數(shù)廠商的 SOA 實(shí)現(xiàn)中,SOAP 為分布式對(duì)象通訊構(gòu)建了基礎(chǔ)。盡管 SOA 沒有定義通訊協(xié)議,但由于在 SOA 實(shí)現(xiàn)中的普遍使用,最近 SOAP 被稱為面向服務(wù)的架構(gòu)協(xié)議 (Services-Oriented Architecture Protocol)。SOAP 的優(yōu)點(diǎn)在于它完全和廠商無關(guān),相對(duì)于平臺(tái)、操作系統(tǒng)、目標(biāo)模型和編程語言可以獨(dú)立實(shí)現(xiàn)。另外,傳輸和語言綁定以及數(shù)據(jù)編碼的參數(shù)選擇都是由實(shí)現(xiàn)決定的。
-
WSDL:Web 服務(wù)描述語言 (Web Services Description Language) 是一個(gè)提供描述服務(wù) IDL 標(biāo)準(zhǔn)方法的 XML 詞匯。WSDL 是融合 NASSL (IBM) 和 SDL (Microsoft) 之間的活動(dòng)產(chǎn)物。它為服務(wù)提供者提供了一個(gè)簡單的方法,描述遠(yuǎn)程方法調(diào)用 (RMI) 的請(qǐng)求消息和響應(yīng)消息的格式。WSDL 不依賴于底層的協(xié)議和編碼要求來涉及服務(wù) IDL 這個(gè)主題。通常,WSDL 提供一種抽象的語言,利用各自的參數(shù)和數(shù)據(jù)類型來定義被發(fā)布的操作。該語言還涉及了服務(wù)的位置和綁定細(xì)節(jié)的定義。
-
UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成 (Universal Description, Discovery, and Integration) 規(guī)范提供了一組公用的 SOAP API,使得服務(wù)中介得以實(shí)現(xiàn)。UDDI 規(guī)范是由 IBM、Microsoft 和 Ariba 制定的,促進(jìn)了基于 Web 的服務(wù)的創(chuàng)建、描述、發(fā)現(xiàn)和集成。在 UDDI.org 之后的動(dòng)機(jī)是為 B2B 互操作性定義一個(gè)標(biāo)準(zhǔn)。
Web 服務(wù)應(yīng)用程序設(shè)計(jì)
圖 3. Web 服務(wù)標(biāo)準(zhǔn)
Web 服務(wù)通訊可以使用 XML,但它可能要傳輸二進(jìn)制數(shù)據(jù),它通常使用 SOAP 消息頭,但是不需要為消息體進(jìn)行 SOAP 編碼。它可能用 HTTP 進(jìn)行傳輸,但是也還可以用 SMTP 或其它的方法。為描述和發(fā)現(xiàn) Web 服務(wù),有兩種定義完好的標(biāo)準(zhǔn):WSDL 和 UDDI。
背景及相關(guān)工作
用面向服務(wù)的方法進(jìn)行運(yùn)算已經(jīng)引起了研究人員和業(yè)界的廣泛關(guān)注。主要目的包括用于構(gòu)建軟件組件的面向服務(wù)的編程 (SOP) 和用于分布式應(yīng)用程序的面向服務(wù)的體系結(jié)構(gòu) (SOA)。
SOP 引入并實(shí)施面向服務(wù)的編程,但它是面向啟用進(jìn)程內(nèi)和進(jìn)程間通訊的軟件組件的開發(fā)的。用 SOP 開發(fā)的軟件程序可以作為多線程程序,在多線程程序中,各個(gè)線程可以通過明確定義的接口交換消息。程序的組件設(shè)計(jì)集中在為組件所提供的服務(wù)定義接口。SOP 提供的特性包括合同、組件、連接、容器和上下文。SOP 軟件應(yīng)該具有聯(lián)合性、易部署性、移動(dòng)性、安全性和可用性。
SOA 建立在 SOP 上來構(gòu)建系統(tǒng)和應(yīng)用程序以獲取軟件組件所提供的服務(wù)的最大限度的復(fù)用,同時(shí)要確保他們交互中的松散耦合。基本元素是服務(wù),SOA 指定一組實(shí)體(服務(wù)提供者、服務(wù)消費(fèi)者、服務(wù)注冊(cè)表、服務(wù)條款、服務(wù)代理和服務(wù)契約),這些實(shí)體詳細(xì)說明了如何提供和消費(fèi)服務(wù)。遵循 SOA 觀點(diǎn)的系統(tǒng)必須要有服務(wù),這些服務(wù)是可互操作的、獨(dú)立的、模塊化的、位置明確的、松耦合的并且可以通過網(wǎng)絡(luò)查找其地址。
Web 服務(wù)技術(shù)是以 SOA 概念為基礎(chǔ)的。該項(xiàng)技術(shù)直接面向企業(yè)應(yīng)用程序集成,為半自動(dòng)交互式和組織內(nèi)部的業(yè)務(wù)流程提供了公用數(shù)據(jù)交換平臺(tái)。構(gòu)成 Web 服務(wù)的技術(shù)包括 XML、UDDI、HTTP、SOAP 和 WSDL。XML 用于定義 Web 服務(wù)間消息的結(jié)構(gòu)。UDDI 是可供查詢的 Web 服務(wù)資源庫。HTTP 是底層的通訊媒介。SOAP 是交換消息的容器。WSDL 用于描述 Web 服務(wù)。相關(guān)研究已經(jīng)進(jìn)展到涉及交互和協(xié)調(diào)性問題,雖然沒有提及或整合針對(duì) Web 服務(wù)合成的研究,反之亦然。
Jini 是另一個(gè)主要的 SOA 目標(biāo),它已經(jīng)以服務(wù)為基礎(chǔ)直接面向構(gòu)建本地運(yùn)算環(huán)境。假設(shè)設(shè)備能提供服務(wù),并且 Jini 指定特定的特性,例如發(fā)現(xiàn)、結(jié)合、查找、聯(lián)合、租賃以及其它的能實(shí)現(xiàn)網(wǎng)絡(luò)部署的特性。Jini 緊密綁定到 Java TM 編程語言。例如,通過 Java RMI 進(jìn)行通訊,以 Java 對(duì)象接口作為服務(wù)接口規(guī)范。
在普及環(huán)境中使用 SOA
下面的部分概述了普及環(huán)境中的 SOA 和 Web 服務(wù)。
普及環(huán)境簡介
普及運(yùn)算方案可以看作是針對(duì)特定問題的特定解決方案,其中問題通常表現(xiàn)為案例。從這方面來看,他們趨向于傳統(tǒng)的嵌入式系統(tǒng)設(shè)計(jì),只是規(guī)模更大一些,而且添加了網(wǎng)絡(luò)。對(duì)于嵌入式系統(tǒng)設(shè)計(jì),各種方案傾向于創(chuàng)建自定制解決方案,這些解決方案是專有的而且缺乏可擴(kuò)展性。看上去缺少的東西正好適合于編程普及運(yùn)算環(huán)境。相反,各種普及運(yùn)算案例似乎設(shè)想了一種軟件的無縫系統(tǒng),該系統(tǒng)根據(jù)用戶的期望和目的運(yùn)行。我們認(rèn)為這種觀點(diǎn)既與可能越來越多的采用這種方案這個(gè)現(xiàn)實(shí)矛盾,又與各普及運(yùn)算設(shè)備供應(yīng)商無疑會(huì)擴(kuò)大生產(chǎn)的多樣性相矛盾。因此,我們提出了一種標(biāo)準(zhǔn)的基于服務(wù)的編程環(huán)境供普及運(yùn)算所采用。
普及運(yùn)算是由 NIST(簡寫)為強(qiáng)大新興趨勢的朝向所定義的:
- 無數(shù)的、方便使用的、通常無形的運(yùn)算設(shè)備
- 頻繁移動(dòng)的或內(nèi)嵌在環(huán)境中的
- 與日益無處不在的網(wǎng)絡(luò)結(jié)構(gòu)連接
目的是為了使任何需要運(yùn)算的地方更容易。各種研究人員已經(jīng)證實(shí)了為實(shí)現(xiàn)這個(gè)設(shè)想,需要網(wǎng)絡(luò)和中間件基礎(chǔ)設(shè)施。這種普及基礎(chǔ)設(shè)施的特征包括規(guī)模、移動(dòng)性和普遍存在性。這個(gè)規(guī)模將使任何現(xiàn)有的設(shè)施顯得太矮小。基于這一點(diǎn),我們可以推斷出基礎(chǔ)架構(gòu)必須要涉及到各種附加問題。由于故障和/或連接中斷是一個(gè)至關(guān)重要的問題,而且隨著組件數(shù)量的增加,組件發(fā)生故障的可能性也隨之?dāng)U大。即使系統(tǒng)不出故障,它也必須有容錯(cuò)功能。在本質(zhì)上,基礎(chǔ)架構(gòu)應(yīng)該是對(duì)等的,而不是客戶端/服務(wù)器端或多層的形式,但目前在中間件和構(gòu)建數(shù)據(jù)網(wǎng)絡(luò)中通常使用的是這些形式。就因特網(wǎng)而言,這么大的系統(tǒng)能否有單獨(dú)的授權(quán)域很是值得懷疑。假設(shè)有大量能移動(dòng)的授權(quán)域,還需要一些訪問者身份,既用于連接到外部網(wǎng)絡(luò)的移動(dòng)設(shè)備,又用于他們的所有者下面的移動(dòng)應(yīng)用程序。因此,訪問者身份必須既要保護(hù)外部網(wǎng)絡(luò)的完整性又要保護(hù)移動(dòng)數(shù)據(jù)的安全性。普遍存在性和可移動(dòng)性意味著設(shè)備期望能一直連接到基礎(chǔ)設(shè)施。最后,這樣的系統(tǒng)能不異構(gòu)很是值得懷疑。
另一方面,普及運(yùn)算方案常常采用提供單一集成解決方案的方法,通常是針對(duì)特定案例或案例集的。因此,普及運(yùn)算需要一個(gè)能用于編程的公用抽象,在這個(gè)抽象中各種問題都可以解決。這種抽象必須足夠強(qiáng)大能捕獲現(xiàn)有的方案,而且要足夠靈活能在普及運(yùn)算內(nèi)實(shí)現(xiàn)各種突出問題解決方案的開發(fā)。我們認(rèn)為基于服務(wù)的方法可以提供這樣的抽象。該方法能為普及運(yùn)算環(huán)境作出重大的貢獻(xiàn)。
首先,它提供了一種查看普及運(yùn)算系統(tǒng)的方法。目前,大量關(guān)于普及運(yùn)算的研究結(jié)果都是圍繞案例展開的。因此,普及運(yùn)算到底是什么還不是很清楚。基于服務(wù)的方法將普及運(yùn)算定義為一種無處不在的可用的服務(wù)環(huán)境。
其次,它提供了一個(gè)架構(gòu),在這個(gè)架構(gòu)中可以查看現(xiàn)有的普及運(yùn)算方案。因此,我們可以確定那些方案所缺少的特征。我們還可以以各種方案實(shí)現(xiàn)我們的服務(wù)視圖的方法為基礎(chǔ)對(duì)這些方案進(jìn)行比較。
第三,我們的方法允許在無處不在的可用的服務(wù)環(huán)境中進(jìn)行普及運(yùn)算的增量開發(fā)。
普及運(yùn)算安全性
普及運(yùn)算環(huán)境依靠各種客戶端和服務(wù)器間通過不同網(wǎng)絡(luò)所傳輸?shù)男畔⒌慕粨Q。在這種設(shè)置中,由于信息要從源傳輸?shù)侥康牡兀ǔR皵?shù)據(jù)被攔截的危險(xiǎn)。Web 服務(wù)事務(wù)也要冒同樣的安全性危險(xiǎn)。在使用 SOAP 進(jìn)行傳輸?shù)?Web 服務(wù)事務(wù)中,服務(wù)調(diào)用方和服務(wù)提供方之間所傳送的數(shù)據(jù)是簡單的 XML,因此任何人攔截了該消息都能讀取所交換的數(shù)據(jù)。在 Web 服務(wù)案例中,基于以下原因,安全性方面變得更復(fù)雜:
- 可以用不同的應(yīng)用程序或傳輸協(xié)議,例如 HTTP、SMTP 等來發(fā)送 SOAP 消息,這些程序或協(xié)議可能會(huì)有一些安全模型,從非常高級(jí)的模型到根本什么模型都沒有。因此,Web 服務(wù)應(yīng)用程序需要一個(gè)全面的安全性架構(gòu),能適用于所有類型的傳輸協(xié)議。
- 可能有一些合法的中介需要訪問甚至修改部分或整個(gè) SOAP 消息。因此安全性模型必須足夠全面,從而可以允許這些中介。
下面的部分定義了 Web 服務(wù)安全性的各個(gè)方面,他們可以應(yīng)用于 在普及應(yīng)用程序中使用 SOA中所描述的應(yīng)用程序類型。
Web 服務(wù)安全性指導(dǎo)方針
W3C Web 服務(wù)體系結(jié)構(gòu)需求概述了全面安全性架構(gòu)的六個(gè)重要的安全性考慮:
-
認(rèn)證保證任何有認(rèn)證身份的人都可以訪問服務(wù)。
-
授權(quán)保證通過認(rèn)證的人有權(quán)訪問服務(wù)或數(shù)據(jù)。
-
機(jī)密性保證請(qǐng)求方和提供方之間傳輸?shù)臄?shù)據(jù)不會(huì)被竊聽者竊取。
-
完整性使消息從請(qǐng)求方到提供方這條傳輸通道上不會(huì)被修改。
-
不可抵賴保證消息的發(fā)送者不能否認(rèn)他/她稍后會(huì)及時(shí)發(fā)送消息。
-
可訪問性確保服務(wù)一直是可用的,并且不會(huì)被拒絕服務(wù) (denial-of-service,DoS) 這樣的攻擊所削弱,無論是從托管服務(wù)系統(tǒng)的外部還是內(nèi)部進(jìn)行攻擊。
如今的 Web 服務(wù)安全性
Web 服務(wù)安全性還處在不成熟的階段。不斷地有新的標(biāo)準(zhǔn)和應(yīng)用程序被開發(fā)和應(yīng)用。如今,可以從兩個(gè)層面實(shí)現(xiàn) Web 服務(wù)安全性:
- 傳輸層:傳輸層的安全性利用傳輸技術(shù)的內(nèi)置安全特性,例如 HTTP、IBM WebSphere MQSeries、IBM Websphere Everyplace Connection Manager 等等。
- SOAP 或通訊層:目前正在廣泛研究該層以及例如 OASIS 這樣的安全性小組所開發(fā)的規(guī)范。這一層以及 XML 文檔層的安全性包括使用數(shù)字簽名、證書等等。
用 HTTP 保護(hù) Web 服務(wù)
可以用下列方法保護(hù)通過 HTTP 傳輸?shù)?Web 服務(wù)事務(wù):
- HTTP 基本授權(quán)
- 帶安全套接層 (SSL) 的 HTTP
- HTTP 基本授權(quán) + HTTPS
但是,HTTP 安全性沒有涉及到前面所描述的整個(gè) Web 服務(wù)安全性指導(dǎo)方針。最好的可能配置是使用帶 HTTP 基本授權(quán)的 HTTPS,這樣的 HTTPS 涉及到了 Web 服務(wù)安全性中除不可抵賴和可訪問性之外其余的所有方面。
HTTP 基本授權(quán):基本授權(quán) (BASIC-AUTH) 是 HTTP 中所使用的一種簡單的機(jī)制。使用該機(jī)制,可以防止未授權(quán)用戶訪問 Web 資源。要使用 HTTP BASIC-AUTH 訪問受保護(hù)的資源,用戶需要提供用戶名和密碼。Web 站點(diǎn)系統(tǒng)管理員用一列合法的用戶和用戶可以訪問的資源來配置 Web 服務(wù)器。因?yàn)橥ㄟ^ HTTP 調(diào)用 Web 服務(wù)和訪問端點(diǎn) URL 是類似的,所有可以利用 BASIC-AUTH 限制 Web 服務(wù)訪問。
HTTP 安全 (HTTPS):安全套接層 (SSL) 是一種允許 Web 瀏覽器和 Web 服務(wù)器通過安全連接進(jìn)行通信的技術(shù)。也就是說,發(fā)送的數(shù)據(jù)由一方加密,在處理之前由另一方來傳輸和解密。這是一種雙向的過程,即在發(fā)送數(shù)據(jù)之前,服務(wù)器和瀏覽器都要對(duì)所有的傳輸進(jìn)行加密。
HTTP 基本授權(quán) + HTTP 安全:為 Web 服務(wù)事務(wù)提供了極好的安全性。它還通過簽名證書為用戶提供了授權(quán)機(jī)制。但是,如果復(fù)制的證書也可用,那么任何人都可以充當(dāng)代理。因此,安全性的最佳形式是結(jié)合使用 HTTP BASIC-AUTH 和 HTTPS。這既滿足了 Web 服務(wù)安全性前四個(gè)方面的要求,又為防止抵賴提供了更好的保護(hù)。在接下來的部分中,我們將說明如何配置 Web 服務(wù)應(yīng)用程序來利用這種安全性方法。
在普及應(yīng)用程序中使用 SOA
本文剩下的部分描述了如何用 SOA 和 Web 服務(wù)為關(guān)鍵普及應(yīng)用程序類型提供公用接口。對(duì)于關(guān)鍵普及應(yīng)用程序,我們主要關(guān)心的是:通信、事務(wù)、設(shè)備管理、同步、基于位置的服務(wù)、數(shù)據(jù)管理以及多媒體服務(wù)。為了幫助說明如何在這些應(yīng)用程序中使用 SOA 和 Web 服務(wù),我們將以一個(gè)財(cái)政服務(wù)為例。該案例是基于下列體系結(jié)構(gòu)的:
圖 4. 常見的財(cái)政門戶體系結(jié)構(gòu)
財(cái)政服務(wù)案例概述
下面的圖表演示了這里所描述的財(cái)政服務(wù)案例:
- 新銀行客戶通過膝上型電腦簽約在線銀行,包括例如欺騙發(fā)現(xiàn)警告、有新的產(chǎn)品和在線帳單付款之類的服務(wù)。
- 客戶決定檢查帳戶余額情況(使用膝上型電腦或智能設(shè)備)。
- 然后客戶決定進(jìn)行在線付款(使用膝上型電腦或智能設(shè)備)。
- 客戶收到一個(gè)警告,說已經(jīng)從帳戶中提取大量的金額。警告使客戶得以響應(yīng),并通過通訊或語音與銀行服務(wù)代理進(jìn)行交談。
- 客戶在他們的普及設(shè)備上使用銀行的 Web 服務(wù)客戶端在線處理事務(wù)。
圖 5. 場景 1
圖 6. 場景 2 和 3
圖 7. 場景 4
圖 8. 場景 5
用于通訊的 SOA
通訊的概念包括將消息分散給一組通過許多無線網(wǎng)絡(luò)和協(xié)議進(jìn)行傳輸?shù)钠占霸O(shè)備。通訊操作的實(shí)例范圍很廣,從廣播型,例如新聞、股票報(bào)價(jià)和事件通知到個(gè)人通信型,例如尋呼機(jī)消息和即時(shí)傳送 (instant messaging,IM)。近來在無線技術(shù),例如短信服務(wù) (Short Message Service,SMS) 和會(huì)話發(fā)起協(xié)議 (Session Initiation Protocol,SIP),領(lǐng)域中的更多進(jìn)展已經(jīng)提供了創(chuàng)新解決方案,這些方案利用了 Web 服務(wù)的功能。
應(yīng)用程序需求
- IM 應(yīng)用程序的無縫集成:目前在其它的一些專有提供者中存在一組相當(dāng)支離破碎的 IM 服務(wù)提供者,包括 AIM、MSN 和 Yahoo。為了提高可用性和管理需要鞏固這些服務(wù)。Trillian Pro 已經(jīng)通過允許用戶從單一客戶端配置和使用這些服務(wù)在桌面應(yīng)用程序領(lǐng)域中涉及到了這個(gè)問題。通過遵循公用接口加強(qiáng) IM 服務(wù)提供者這一原則在普及環(huán)境中也可以工作得很好。
- 會(huì)話管理:新近完成的 SIP 規(guī)范促進(jìn)了 IM 應(yīng)用程序在移動(dòng)設(shè)備上的開發(fā),代表了流行桌面 IM 應(yīng)用程序和無線 SMS 系統(tǒng)的融合。SIP 提供會(huì)話管理支持,允許用戶從傳統(tǒng)的請(qǐng)求和響應(yīng)對(duì)象中存儲(chǔ)和檢索數(shù)據(jù),這些對(duì)象實(shí)際上跨越了多個(gè) SIP 請(qǐng)求。有關(guān)詳細(xì)信息請(qǐng)參閱 JSR 180。
- 保證傳送:如今很多 IM 應(yīng)用程序不能保證消息的傳送,他們是“發(fā)送并忘記”型的。在 IM 會(huì)話過程中發(fā)送給不可用的用戶的消息通常會(huì)丟失。雖然這在大多數(shù)情況下還是可以接受的,但有時(shí)可能需要保證傳送高優(yōu)先級(jí)的消息。這無疑會(huì)引起更復(fù)雜的問題,包括對(duì)消息的認(rèn)可以及排列或高速緩存不被認(rèn)可的消息,直到用戶在線回答。
- 高級(jí)通訊:SMS,EMS,MMS
- 安全性:參閱 普及運(yùn)算安全性。
如何使用 Web 服務(wù)
Web 服務(wù)充當(dāng)了一個(gè)公用的、獨(dú)立于設(shè)備的接口,提供者可以從這個(gè)接口向已經(jīng)訂閱的客戶端發(fā)布他們的服務(wù)。該接口也可能直接由客戶端或其它的服務(wù)調(diào)用。這個(gè)特性允許使用上面提到的 IM 集線器,在 IM 集線器中可以將各種專有 IM 服務(wù)提供者合并為一個(gè)客戶端應(yīng)用程序。對(duì)于桌面應(yīng)用程序領(lǐng)域,這樣可以提高管理的可用性和易用性。Web 服務(wù)通過調(diào)用可發(fā)現(xiàn)的接口滿足客戶端的需要竭力提取后端處理同樣重要。
最基本的解決方案由一個(gè)連接到設(shè)備的胖的、客戶編寫的 Web 服務(wù)客戶端組成。雖然開發(fā)這種方法需要更多的時(shí)間和精力,但是由于通過應(yīng)用程序控制和表示細(xì)節(jié)給予了客戶端詳盡的責(zé)任使得該方法具有更大的靈活性。而且,各方面通常由容器來處理,包括安全性和會(huì)話管理,所以不需要涉及這些問題。
您應(yīng)該注意到雖然 Web 服務(wù)技術(shù)對(duì)于桌面應(yīng)用程序和企業(yè)應(yīng)用程序已經(jīng)很成熟了,但是還需要考慮很多額外的問題使其能適應(yīng)普及設(shè)備在容量上有限這樣的局限性。例如,解析 XML/SOAP 消息就需要相當(dāng)集中,尤其需要考慮處理能力。為緩和這一點(diǎn), JSR 172規(guī)范將提供一個(gè)對(duì)應(yīng)于 J2SE/J2EE 的更“瘦”版本。有關(guān)詳細(xì)信息請(qǐng)參閱 J2ME 和 Web 服務(wù)。
圖 9. 胖客戶端環(huán)境
通過允許較小的處理能力或內(nèi)存,從客戶端提取后端處理增加了可用設(shè)備的實(shí)際數(shù)量。如果假設(shè)客戶端支持對(duì) Web 接口的訪問,即通過 TCP/IP 進(jìn)行通信,那么合并 portlet 集和 WebSphere Portal Server (Portal) 將是一個(gè)完美的解決方案,如下所述。通常,客戶編寫的 portlet 以及專門的可復(fù)用 Java servlet 能組成門戶頁面上的定義區(qū),并且能訪問很多不同的應(yīng)用程序、服務(wù)和 Web 內(nèi)容。Portal 支持對(duì) Web 服務(wù)后端 porlet 的部署。這使關(guān)注由 Portal 所處理的管理的開發(fā)人員自由了,并且允許開發(fā)人員將重心轉(zhuǎn)移到實(shí)現(xiàn)特定業(yè)務(wù)邏輯上。 有關(guān)實(shí)現(xiàn)的詳細(xì)信息請(qǐng)參閱 創(chuàng)建自己的 portlet 和 Web 服務(wù)和 利用 Web 服務(wù)從遠(yuǎn)程系統(tǒng)中獲取數(shù)據(jù)來開發(fā) portlet。
圖 10. WebSphere EveryPlace Connection Manager 和 Portal Server 環(huán)境
WebSphere EveryPlace Connection Manager (Connection Manager) 充當(dāng)了客戶端設(shè)備和 WebSphere EveryPlace Access 服務(wù)器間的可選傳輸通道。Connection Manager 允許從后端應(yīng)用程序中提取低層的詳細(xì)信息,例如無線協(xié)議,因此產(chǎn)生了復(fù)用和分離關(guān)注點(diǎn)。
Connection Manager 的通訊服務(wù)裝備啟用 Web 應(yīng)用服務(wù)器與前面提到的那些普及設(shè)備進(jìn)行交互。雖然通訊服務(wù)支持更流行的 SMS 和不被認(rèn)可的 WAP 推傳送,但是它還啟用了很多其它的消息模式,包括通過專有網(wǎng)絡(luò)傳送短信、通過 SMTP 和 SNPP 發(fā)送郵件。有關(guān)詳細(xì)信息請(qǐng)參閱 IBM WebSphere Everyplace Connection Manager 版本 5 手冊(cè)。
Everyplace Access 充當(dāng)了移動(dòng)客戶端和企業(yè)環(huán)境之間的連接。Everyplace 客戶端,作為 Everyplace Access 的一個(gè)核心產(chǎn)品,充當(dāng)了一個(gè)附屬軟件包,提供了帶更健壯設(shè)備環(huán)境的各種 PDA。它提供了取出即可用(out-of-the-box)的 IM 服務(wù),但是,目前還只局限于 Lotus Sametime。
Everyplace Access 的另一個(gè)高級(jí)特性是智能通知服務(wù) (Intelligent Notification Services,INS)。該服務(wù)在訂閱通知應(yīng)用程序和觸發(fā)器的基礎(chǔ)上讓企業(yè)自動(dòng)通知移動(dòng)用戶。這是由 Everyplace Access 系統(tǒng)管理完成的,在系統(tǒng)管理中,用戶指定信息源、通知標(biāo)準(zhǔn)以及一些愛好和訂閱設(shè)置。更多詳細(xì)信息請(qǐng)參閱 WebSphere Everyplace Access 版本 4.3 開發(fā)人員手冊(cè)。
圖 11. Portal 環(huán)境
因?yàn)?Portal 被評(píng)價(jià)為是一個(gè)高可配置的、被認(rèn)可的架構(gòu),因此可以利用它的很多內(nèi)置功能來減少開發(fā)時(shí)間和費(fèi)用。Portal 結(jié)合 Everyplace Access 通過用任何標(biāo)記語言生成頁面來支持移動(dòng)設(shè)備,包括用于 WAP 的官方支持的 WML。請(qǐng)求一個(gè)頁面時(shí),Portal 處理后端流程來自動(dòng)檢測設(shè)備類型并以適當(dāng)?shù)臉?biāo)記語言返回呈現(xiàn)頁面內(nèi)容的 portlet。
財(cái)政服務(wù)案例中的通訊
在財(cái)政服務(wù)案例中,通訊為用戶帶來了更多特性和便利。例如,可以將系統(tǒng)基礎(chǔ)架構(gòu)設(shè)置為當(dāng)檢測到可疑的帳戶活動(dòng)時(shí),例如提取大量資金,警告用戶。正如上面所提到的,Everyplace Access 的 INS 支持基于訂閱的通知,在這種通知中,消息由用戶訂閱的特定事件觸發(fā)。
然后用戶可以通過 IM 應(yīng)用程序選擇連接代理并進(jìn)行通信來解決問題。由于會(huì)話的本性和重要性,可能將消息作為保證傳送,一直保留直到客戶端認(rèn)可該消息。
用于事務(wù)服務(wù)的 SOA
考慮普及環(huán)境中的事務(wù)時(shí),必須要考慮到普及環(huán)境強(qiáng)加在事務(wù)上的限制能夠執(zhí)行。而且,由于普及環(huán)境能包含不同功能的任意數(shù)量的不同設(shè)備,所以有必要考慮如何用相同的事務(wù)來服務(wù)不同的設(shè)備和他們的功能。
對(duì)于這個(gè)問題,最明顯的回答是從客戶端提取事務(wù)普通的詳細(xì)信息。有兩種方法可以實(shí)現(xiàn)這一點(diǎn)。其一是使抽象層完全不知道哪些客戶端訪問了它。這需要客戶端足夠智能化,能捕捉并顯示適當(dāng)?shù)臄?shù)據(jù)。很明顯,這指的是胖客戶端,胖客戶端能使服務(wù)面向多種客戶端,但是對(duì)每個(gè)客戶端可能有較高的 CPU 和內(nèi)存需求。
使抽象層足夠智能化的另一個(gè)方法是區(qū)分請(qǐng)求它的服務(wù)的客戶端的不同功能。在這種情況下,每種設(shè)備的不同功能的詳細(xì)信息必須由服務(wù)提供者來說明。客戶端將被看作一種提供低 CPU 和內(nèi)存需求的瘦客戶端,但是需要受服務(wù)提供者支持的有限數(shù)量的設(shè)備。
Web 服務(wù)和 SOA 能涉及提供簡單的抽象層還是智能抽象層之類的問題。下面的部分演示了這種 Web 服務(wù)如何提供所述功能。
應(yīng)用程序需求
普及環(huán)境中的事務(wù)服務(wù)同樣需要考慮傳統(tǒng)應(yīng)用程序中的事務(wù)問題,以及客戶端能運(yùn)行在幾個(gè)不同類型的有著不同功能的硬件和軟件環(huán)境中。同樣的,設(shè)備可以放在任何地方,并且由于要在給定的環(huán)境中顯示信息,所以必須要注意其類型問題。下面的列表并沒有準(zhǔn)備詳盡列出潛在的需要考慮的地方,但是考慮普及環(huán)境中事務(wù)的實(shí)現(xiàn)需要一個(gè)合理的開端:
- 由于設(shè)備只能顯示一定數(shù)量的結(jié)果,因此用戶可能需要在服務(wù)器端緩存一些會(huì)話。
- 在服務(wù)器端將事務(wù)合并為幾個(gè)集合調(diào)用,從而減少通過寶貴的低無線帶寬傳輸?shù)木W(wǎng)絡(luò)調(diào)用。
- 讓服務(wù)器端執(zhí)行一些復(fù)雜的排序或其它的 CPU 密集型操作。
- 同步和異步事務(wù)之間的區(qū)別。如何實(shí)現(xiàn)這兩類事務(wù)?
- 在線和離線事務(wù)。
- 關(guān)鍵是要最大限度使用有限的在線時(shí)間。盡量最少時(shí)間,因?yàn)樵O(shè)備需要等待結(jié)果。這樣可以減少在線費(fèi)用。
- 發(fā)送并忘記事務(wù)。排隊(duì)等候代表設(shè)備的作業(yè)。然后當(dāng)設(shè)備反方向檢查時(shí),就能得到結(jié)果。
- 安全性更容易受到威脅。基于顯示在這些設(shè)備上的信息種類問題,需要特別關(guān)注。例如,銀行型的事務(wù)可能允許主用戶修改他們的帳戶信息,但是用無線通信進(jìn)行相同的事務(wù)可能不允許編輯功能,只有查看功能。
如何使用 Web 服務(wù)
在普及環(huán)境中有兩層可以使用 Web 服務(wù)。一是在遠(yuǎn)程設(shè)備上實(shí)現(xiàn) Web 服務(wù)客戶端,這樣將直接調(diào)用 Web 服務(wù)。該方法如下所示:
圖 12. 使用 Web 服務(wù)胖客戶端模型的普及事務(wù)
這個(gè)案例的好處是遠(yuǎn)程設(shè)備已經(jīng)完全控制了如何顯示數(shù)據(jù)。設(shè)備將知道它自己的局限性并以適合于那臺(tái)設(shè)備的方式顯示返回的數(shù)據(jù)。
這個(gè)方法還有一個(gè)好處,即允許嵌入式程序?qū)κ聞?wù)進(jìn)行優(yōu)化。這是通過允許設(shè)備存儲(chǔ)大量的事務(wù)直到它認(rèn)為在時(shí)間上適于發(fā)送或請(qǐng)求數(shù)據(jù)實(shí)現(xiàn)的。適當(dāng)?shù)臅r(shí)間可以由排隊(duì)等候的事務(wù)總量決定,或者在普及環(huán)境中網(wǎng)絡(luò)可能斷斷續(xù)續(xù)的可用,因此可以一直保存事務(wù)直到網(wǎng)絡(luò)可用。
在這里,SOA 還有一個(gè)好處,即客戶端不需要擔(dān)心調(diào)用事務(wù)的任何詳細(xì)情況。客戶端不需要擔(dān)心數(shù)據(jù)庫連接、特定的協(xié)議、專有數(shù)據(jù)格式以及不斷變化的后端系統(tǒng)。它所需要做的是構(gòu)建 XML 并利用 Web 服務(wù)客戶端發(fā)送數(shù)據(jù)。因?yàn)檫@些都是開放的標(biāo)準(zhǔn),所有能創(chuàng)建各種設(shè)備都能支持的單獨(dú)事務(wù)。Web 服務(wù)提供者不需要編寫特定的代碼來支持不同的設(shè)備。這也從根本上普及了事務(wù)本身,從而通過允許在各種不同設(shè)備的服務(wù)提供者間共享中央邏輯促進(jìn)不同設(shè)備間數(shù)據(jù)的一致性。
財(cái)政服務(wù)案例中的事務(wù)服務(wù)
要繼續(xù)銀行實(shí)例,我們先來看一下用戶想用手持 PDA 設(shè)備在線購買商品的情況。那個(gè)設(shè)備可能有一個(gè)內(nèi)置的客戶端,可以查找從銀行請(qǐng)求臨時(shí)信用卡數(shù)量的 Web 服務(wù)事務(wù)。客戶端然后可以使用這個(gè)信息來填充商品的購買信息。同樣地,智能電話也可以用于運(yùn)行同樣的 Web 服務(wù)事務(wù),但這時(shí)購買一罐蘇打水的信息可能是被傳送到自動(dòng)售貨機(jī)的。因?yàn)橛行?Web 服務(wù)客戶端可以運(yùn)行在任何設(shè)備上,一個(gè)事務(wù)也可以供多個(gè)設(shè)備所用。
用于設(shè)備管理的 SOA
隨著無線設(shè)備的數(shù)量到 2006 年將達(dá)到 11,100,000, 設(shè)備管理也變得越發(fā)困難。而且,由于多媒體性能和帶寬問題不斷的嚴(yán)重,通過這些設(shè)備運(yùn)行的應(yīng)用程序的復(fù)雜性也無疑會(huì)增加。為了通過被部署的應(yīng)用程序進(jìn)行維護(hù)控制,必須要管理所有這些設(shè)備。
可以迅速的將新的特性和功能添加到移動(dòng)設(shè)備中。因此,最新的、高級(jí)移動(dòng)設(shè)備中的設(shè)備罷免和軟硬件的更新也變得越來越常見,多得讓網(wǎng)絡(luò)操作人員也感到吃驚。
應(yīng)用程序需求
和一直圍繞著 LAN 和受后端防火墻保護(hù)的 PC 和服務(wù)器不同,無線設(shè)備,例如智能電話、PDA 甚至很多主流移動(dòng)電話在本質(zhì)上來說更難管理。他們通常既充當(dāng)運(yùn)營工具又充當(dāng)私人生產(chǎn)性設(shè)備,并且很容易丟失或損壞,而且換代非常頻繁。因此,CIO 和網(wǎng)絡(luò)操作人員必須要認(rèn)識(shí)到移動(dòng)設(shè)備常遭受設(shè)備管理上下文中規(guī)則的不同設(shè)置。下面列出了一些關(guān)于設(shè)備管理應(yīng)用程序 人們想要的功能:
- 通過無線網(wǎng)絡(luò) (OTA,Over The Air) 向設(shè)備發(fā)送升級(jí)包
- 存儲(chǔ)、管理和提供軟件映象
- 駐留在移動(dòng)設(shè)備上的客戶端
- 軟件部署
- 資源和配置管理
- 故障管理
- 設(shè)備控制和數(shù)據(jù)安全性
- 備份和恢復(fù)
主要區(qū)別是在移動(dòng)設(shè)備上進(jìn)行實(shí)現(xiàn)自我診斷和自我處理的能力,通過無線網(wǎng)絡(luò)與客戶端軟件協(xié)同工作的集中管理的、基于 Web 的控制臺(tái),以及以帶寬和網(wǎng)絡(luò)連接為基礎(chǔ)進(jìn)行更新的智能傳送。
如何使用 Web 服務(wù)
在這個(gè)案例中,設(shè)備系統(tǒng)管理員通過 Web 服務(wù)接口調(diào)用對(duì)所有設(shè)備的更新處理。Web 服務(wù)接口允許對(duì)任何能用 Web 瀏覽器查找設(shè)備管理服務(wù)器的客戶端的管理。更重要的是,它在所有不同設(shè)備的專有管理接口間添加了一個(gè)抽象層,允許用一個(gè)統(tǒng)一的接口管理所有的設(shè)備。下圖演示了這種思想:
圖 13. 通過 Web 服務(wù)和專有接口進(jìn)行設(shè)備管理
通過 Web 服務(wù)提供設(shè)備管理的另一個(gè)好處是能從單一集中的位置管理包含在安全環(huán)境內(nèi)的設(shè)備。所有要做的是讓每個(gè)單獨(dú)的位置包含一個(gè)啟用了 Web 應(yīng)用服務(wù)器的 Web 服務(wù),例如 WebSphere Portal Server 5.1,并通過防火墻訪問端口 80 和 443。這種情形尤其適于兩種情況:一是可能不能從公司內(nèi)聯(lián)網(wǎng)訪問遠(yuǎn)程辦公室,二是遠(yuǎn)程辦公室位于內(nèi)聯(lián)網(wǎng)中的安全子網(wǎng)內(nèi)部。下面的圖表描述了這種情形:
圖 14. 設(shè)備管理體系結(jié)構(gòu)
另一個(gè)要考慮的設(shè)備管理情形是在設(shè)備意識(shí)到它需要更新的情況下。有人可能允許專有設(shè)備接口直接由遠(yuǎn)程設(shè)備調(diào)用。但是,這可能有很重要的含意,假設(shè)有很多不同的設(shè)備類型,并且每種都需要封裝自己的專有設(shè)備接口。這些設(shè)備接口中的每一個(gè)都必須按照企業(yè)的需要來確保他們的安全。只有一個(gè) Web 服務(wù)供設(shè)備調(diào)用可能要更容易一些。每個(gè)設(shè)備都將傳送企業(yè)所需的適當(dāng)?shù)陌踩宰C書請(qǐng)求。經(jīng)過驗(yàn)證和認(rèn)證后,Web 服務(wù)將調(diào)用適當(dāng)?shù)膶S性O(shè)備接口來發(fā)送必需的更新。
財(cái)政服務(wù)案例中的設(shè)備管理
回到我們的銀行實(shí)例中,假設(shè)有一個(gè)包含銀行應(yīng)用程序的 PDA。當(dāng) PDA 運(yùn)行銀行應(yīng)用程序時(shí),它首先調(diào)用一個(gè) Web 服務(wù),檢索最新的軟件版本列表。設(shè)備用一列當(dāng)前安裝的軟件和認(rèn)為余額應(yīng)用程序需要更新的通知與這個(gè)列表匹配。然后設(shè)備調(diào)用軟件來更新 Web 服務(wù)和安全性證書以及為標(biāo)識(shí)它自身所需的信息和需要下載的軟件。Web 服務(wù)用適當(dāng)?shù)膮?shù)依次查找特定于 PDA 的軟件更新設(shè)備接口,從而標(biāo)識(shí)設(shè)備并找出需要部署到那個(gè)設(shè)備的軟件的位置。在該實(shí)例中,Web 服務(wù)就設(shè)備和專有設(shè)備更新軟件間的安全性提供了一個(gè)抽象層,并指出了關(guān)于如何管理以及在哪里管理可部署的軟件。每種設(shè)備都調(diào)用相同的 Web 服務(wù),因此企業(yè)不會(huì)受到安全性或軟件版本的干擾,并且管理計(jì)劃也是由專有設(shè)備接口提供的。
用于基于位置服務(wù)的 SOA
基于位置的服務(wù) (Location-based services,LBS) 是為用戶提供定制內(nèi)容的通道。全球定位衛(wèi)星 (Global Positioning Satellite,GPS) 系統(tǒng)是一個(gè)提供準(zhǔn)確用戶三角位置的測量機(jī)制。這樣的系統(tǒng)需要普及組件設(shè)備提供更多的功能。并不是所有的設(shè)備都有這樣的功能,因此必須通過用戶基本信息和用戶輸入來提供 LBS。最初的檢查可以通過 IP 路由和發(fā)現(xiàn)用戶的可能位置進(jìn)行管理。
客戶端應(yīng)用程序需要提供通過 Web 服務(wù)向服務(wù)器發(fā)送信息的功能,從而為客戶端提供內(nèi)容,這些內(nèi)容用戶可以使用。由于服務(wù)器知道用戶的位置,所以它可以向客戶端發(fā)送例如以用戶當(dāng)前 GPS 位置為基礎(chǔ)的本地信息之類的數(shù)據(jù)。
應(yīng)用程序需求
- 運(yùn)行在設(shè)備上的客戶端應(yīng)用程序
- 允許設(shè)備定位的可選 GPS 硬件
- 用于設(shè)備定位的可選用戶輸入或配置設(shè)置
如何使用 Web 服務(wù)
在客戶層使用 Web 服務(wù)允許在用戶指定位置的基礎(chǔ)上按需發(fā)現(xiàn)和傳送內(nèi)容。Everyplace Access 服務(wù)器還有額外的功能,例如內(nèi)部 UDDI 發(fā)現(xiàn)。盡管沒有預(yù)封裝產(chǎn)品也可以提供開發(fā)和功能,但是使用 Everyplace Access 可以節(jié)省時(shí)間。
考慮到普及運(yùn)算的本性,LBS 必須和其它的服務(wù)一起使用,來決定是否以用戶設(shè)備為基礎(chǔ)將指定內(nèi)容傳送給用戶。為了將內(nèi)容傳送給指定的普及設(shè)備必須進(jìn)行代碼轉(zhuǎn)換。例如 Everyplace Access 服務(wù)器這樣的預(yù)封裝產(chǎn)品有預(yù)先定義的針對(duì)各種設(shè)備的代碼轉(zhuǎn)換模板。所有的片段都能從頭進(jìn)行開發(fā),但是正如前面所提到的,這樣將需要更多的時(shí)間和精力。在設(shè)計(jì)和開發(fā)的過程中,SOA 允許公用 API 和函數(shù)提供幫助。
Everyplace Access 服務(wù)器提供了很多用于實(shí)現(xiàn) LBS 的工具。Everyplace Access 中的 知道位置的服務(wù) 實(shí)現(xiàn)了知道位置的應(yīng)用程序的快速開發(fā)和部署。為了支持知道位置的服務(wù),Everyplace Access 提供的 API 使開發(fā)人員以標(biāo)準(zhǔn)的方式添加知道位置的 portlet。服務(wù)適配器必須由各個(gè)服務(wù)提供者編寫,從而允許在知道位置的環(huán)境中提供服務(wù)。服務(wù)適配器可以扮演很多角色,例如接口轉(zhuǎn)換、服務(wù)調(diào)用和錯(cuò)誤處理以及帶服務(wù)提供者的身份驗(yàn)證。根據(jù) Everyplace Access 提供的知道位置的服務(wù) API 所編寫的服務(wù)能夠處理通常的身份認(rèn)證和其它特性,不需要開發(fā)人員對(duì)那些公用片段進(jìn)行改寫。
用于 LBS 的自動(dòng)售貨機(jī)案例
在快餐店自動(dòng)售貨機(jī)實(shí)例中,普及設(shè)備以其位置為基礎(chǔ),可以通過 Web 服務(wù)連接鄰近的服務(wù)提供者,并獲得一列可用的自動(dòng)售貨機(jī)及其內(nèi)容。鄰近的服務(wù)提供者可以由內(nèi)容瀏覽應(yīng)用程序來提供,這些內(nèi)容瀏覽應(yīng)用程序接受用于用戶位置的用戶輸入,或由客戶端應(yīng)用程序提供,客戶端應(yīng)用程序足夠智能化能發(fā)現(xiàn)鄰近的服務(wù)提供者并查詢可用的服務(wù)。然后用戶能夠通過瀏覽可用商品,并用他們希望的商品繼續(xù)執(zhí)行自動(dòng)售貨機(jī)。購買業(yè)務(wù)也可以在設(shè)備上進(jìn)行,如果這項(xiàng)特性可用的話。服務(wù)提供方可能會(huì)列出區(qū)域周圍可用的其它服務(wù),例如本地地圖、商店以及更多。有了多種獨(dú)特的客戶端設(shè)備和 Everyplace Access 服務(wù)器提供的帶援助的知道位置的服務(wù),就可以定義公用服務(wù)了。Everyplace Access 服務(wù)器能處理很多常見步驟,例如認(rèn)證和事務(wù)處理。如果不能處理,它會(huì)將請(qǐng)求向前傳送給能處理請(qǐng)求的服務(wù)。
財(cái)政服務(wù)案例中的 LBS
在我們的財(cái)政服務(wù)案例中,用戶能以他們當(dāng)前的位置為基礎(chǔ)簽名,他們當(dāng)前的位置是用戶輸入的或由 LBS 決定的。可能已經(jīng)安裝了客戶端應(yīng)用程序和設(shè)備,因此可以與服務(wù)提供者進(jìn)行無縫通信。信息可以通過 Web 服務(wù)發(fā)送并以他們的位置為基礎(chǔ)及時(shí)向用戶提供必需的信息。Web 服務(wù)可以用于傳輸客戶端和服務(wù)提供者之間的數(shù)據(jù),但是基于用戶的當(dāng)前位置,并不是所有的服務(wù)都可以。例如,如果用戶在加油站,他們可能只能選擇財(cái)政服務(wù)案例中的選項(xiàng) 2,該選項(xiàng)是用來檢查用戶帳戶余額的。這可以結(jié)合用戶位置、用戶對(duì)應(yīng)用程序的預(yù)配置設(shè)置或各種其它可能的案例來確定。這也可能是由于位置缺少服務(wù)或要冒安全危險(xiǎn)而造成的。在幾個(gè)街區(qū)之外的別的位置中,相同的用戶可能能執(zhí)行前面提到的所有情形。有關(guān)實(shí)例請(qǐng)參閱圖 15:
圖 15. 基于位置的案例
Everyplace Access 與 Portal Server 一起能提供例如身份驗(yàn)證這樣的功能,但是,如果有必要它也能單獨(dú)實(shí)現(xiàn)。
用于同步服務(wù)的 SOA
同步服務(wù)可以讓用戶同步發(fā)送郵件、PIM 數(shù)據(jù)以及常用數(shù)據(jù)。設(shè)備上需要有客戶端來同步發(fā)送數(shù)據(jù)。使用 SOA 能允許通過 Web 服務(wù)以常用方式傳送客戶端和服務(wù)器之間的數(shù)據(jù)。從普及運(yùn)算的角度來看,數(shù)據(jù)傳送必須考慮客戶端的性能,例如處理數(shù)據(jù)的能力、存儲(chǔ)量和帶寬。
設(shè)備在尺寸上可以不盡相同,這就帶來同步數(shù)據(jù)必須能適合各種類型的設(shè)備,包括進(jìn)行代碼轉(zhuǎn)換向客戶端設(shè)備提供內(nèi)容。Everyplace Access 服務(wù)器用大型郵件服務(wù)器提供了同步發(fā)送郵件和 PIM 數(shù)據(jù)的功能。有了 SOA 和標(biāo)準(zhǔn),就可以擴(kuò)展這樣的 Web 服務(wù),從而為能解析這樣數(shù)據(jù)的任意類型的客戶端提供同步服務(wù)。
應(yīng)用程序需求
- 能夠提供同步服務(wù)和為用戶提供有用信息的客戶端應(yīng)用程序
- 帶各種存儲(chǔ)介質(zhì)的數(shù)據(jù)存儲(chǔ)機(jī)制
- 確保數(shù)據(jù)合法性的數(shù)據(jù)完整性 (CRC) 機(jī)制
如何使用 Web 服務(wù)
LBS 還可以通過啟用應(yīng)用程序來確定用戶的位置,然后以那個(gè)位置為基礎(chǔ)同步傳送特定的數(shù)據(jù)來幫助數(shù)據(jù)的同步傳送。Web 服務(wù)發(fā)現(xiàn)還可以用于幫助查找提供所需數(shù)據(jù)的同步服務(wù)提供者。在公司內(nèi)部使用同步服務(wù)非常重要,因?yàn)檫@樣可以允許用戶在公司內(nèi)依靠用戶的位置同步傳送所需的數(shù)據(jù)。使用 SOA 和 Web 服務(wù)的常用方面的好處在于他們?cè)试S同步傳送無限多的數(shù)據(jù)。常用的弊端是需要更長的開發(fā)時(shí)間,這是由于很多方面都沒有定義而造成的。有關(guān)實(shí)例請(qǐng)參閱圖 16:
圖 16. 公司內(nèi)部的數(shù)據(jù)同步
假設(shè)用戶從大型商店部門出發(fā),并希望同步發(fā)送數(shù)據(jù),那么詳細(xì)信息也會(huì)同步發(fā)送。假設(shè)用戶進(jìn)入了財(cái)政部并決定同步發(fā)送數(shù)據(jù),那么財(cái)政數(shù)據(jù)也將同步發(fā)送。
在大型商店購物中心實(shí)例中,通常,大型商店結(jié)算過程需要預(yù)掃描商品,雖然會(huì)員們正在排隊(duì)等候。商品在無線普及設(shè)備上進(jìn)行預(yù)掃描。會(huì)員登記時(shí),收銀機(jī)服務(wù)員掃描會(huì)員的會(huì)員卡。一旦卡被掃描,系統(tǒng)就能拖出所有的預(yù)掃描商品,事務(wù)很快就能完成。這加快了結(jié)算過程,因?yàn)椴恍枰谫徫镘囬g轉(zhuǎn)移商品。SOA 為無線設(shè)備和結(jié)算登記都提供了公用接口。即使大型商店有時(shí)突然決定要更新或更換設(shè)備,但是接口保持不變,而且還可能減少實(shí)現(xiàn)費(fèi)用。
財(cái)政服務(wù)案例中的同步服務(wù)
用戶的設(shè)備可能有一個(gè)私人資金管理應(yīng)用程序,這樣用戶就應(yīng)該和他們的銀行提供者同步。Web 服務(wù)實(shí)現(xiàn)能提供同步發(fā)送用戶銀行信息的公用方法,無論是否要發(fā)送信息類型。如果用戶檢查他們的余額,會(huì)給他們提供一個(gè)選項(xiàng),可以將數(shù)據(jù)下載到設(shè)備上。以客戶端設(shè)備為基礎(chǔ),服務(wù)提供者能確定同步傳輸數(shù)據(jù)的數(shù)量。用戶還可以在客戶端設(shè)備上準(zhǔn)備離線付款,并且稍后和服務(wù)提供者一起同步進(jìn)行,最后當(dāng)數(shù)據(jù)同步發(fā)送后,事務(wù)完成。客戶端應(yīng)用程序還可以連接其它的實(shí)現(xiàn)了相同體系結(jié)構(gòu)和數(shù)據(jù)傳輸/通訊方法的財(cái)政服務(wù)提供者。
用于媒體應(yīng)用程序的 SOA
媒體應(yīng)用程序特指音頻/視頻流和或回放。這些類型的應(yīng)用程序可以用于員工培訓(xùn)和身份驗(yàn)證甚至是新聞和基于信息的服務(wù)。媒體應(yīng)用程序主要關(guān)注的是客戶端設(shè)備能夠按照指定的媒體格式解碼和回放。已經(jīng)有很多帶各種硬件規(guī)范的無線設(shè)備。為了支持用于媒體應(yīng)用程序的所有這些設(shè)備,我們需要了解哪些類型的媒體格式可以形成流或甚至回放。Web 服務(wù)復(fù)用的完美實(shí)例是使用設(shè)備管理服務(wù)處理大多數(shù)設(shè)備。我們還必須考慮用什么協(xié)議來支持媒體格式的傳輸。例如,如果有一個(gè)商業(yè)案例需要視頻/音頻回放,我們可以安全地假設(shè)作為一種客戶端設(shè)備上的傳輸方式 SMS 消息將不被支持。
應(yīng)用程序需求
- 客戶端設(shè)備上的高處理能力
- 支持流的客戶端設(shè)備
- 支持媒體格式回放
如何使用 Web 服務(wù)
下圖演示了如何在瘦客戶端設(shè)計(jì)中使用 Web 服務(wù):
圖 17. 瘦客戶端設(shè)計(jì)
在瘦客戶端設(shè)計(jì)(也稱為客戶端/服務(wù)器端設(shè)計(jì))中,開發(fā)人員可以假設(shè)他們支持能訪問 web 接口的客戶端設(shè)備,例如瀏覽器,因此允許他們查看 http 請(qǐng)求并能回放 Real Network、Quicktime、Media Player 甚至 Macromedia Flash 媒體格式。有了這個(gè)解決辦法,開發(fā)人員就不用擔(dān)心設(shè)備支持哪些協(xié)議,只需要服務(wù)提供者允許訪問因特網(wǎng)即可。
對(duì)于瘦客戶端設(shè)計(jì),多數(shù)實(shí)現(xiàn)是由服務(wù)器端的代碼處理的,檢測客戶端設(shè)備的性能并決定用什么格式形成流甚至下載到設(shè)備上供回放。可以發(fā)現(xiàn),這個(gè)解決方案與為桌面應(yīng)用程序架構(gòu) Web 應(yīng)用程序的客戶端/服務(wù)器端方法沒有什么不同,這是因?yàn)殚_發(fā)人員還需要考慮客戶端的性能。唯一的區(qū)別是現(xiàn)在包括了對(duì)小型存儲(chǔ)設(shè)備的額外檢查。
這些瘦客戶端設(shè)計(jì)中的服務(wù)器端應(yīng)用程序可以是自產(chǎn)的,可以運(yùn)行在任意的應(yīng)用服務(wù)器上。記住,定制應(yīng)用程序?qū)⒀娱L開發(fā)時(shí)間并需要長期的維護(hù)費(fèi)用。IBM 提供了作為 Portal Server 一部分的替代解決方案。Portal Server 已經(jīng)有一個(gè)被業(yè)界認(rèn)可的架構(gòu),該架構(gòu)易于擴(kuò)展用來支持額外的設(shè)備和容量,并有一些受支持的現(xiàn)成的 (out of the box) 設(shè)備。Portal Server 能否允許客戶修飾編寫的 portlet 取決于客戶端是否有這方面的請(qǐng)求。自產(chǎn)的解決方案還必須提供認(rèn)證、授權(quán)、報(bào)告等等之類的功能。
在 SOA 中,定制實(shí)現(xiàn)和 Portal Server 都能利用 Web 服務(wù)來封裝媒體應(yīng)用程序和利用現(xiàn)有的 Web 服務(wù)。然后,可以將其用于實(shí)現(xiàn)推模式設(shè)計(jì),在這種設(shè)計(jì)中,Web 服務(wù)自己調(diào)用客戶端設(shè)備上的命令,從執(zhí)行程序或想要發(fā)送廣播或目標(biāo)消息的管理程序?qū)⒐緩V播形成流。另外,我們可以使用訂閱和基于位置的服務(wù)來跟蹤設(shè)備。
下圖演示了一個(gè)樣本胖客戶端設(shè)計(jì):
圖 18. 胖客戶端設(shè)計(jì)
胖客戶端設(shè)計(jì)增加了更多復(fù)雜性,例如需要一些其它的胖客戶端體系結(jié)構(gòu)。有了胖客戶端,設(shè)備就能分解和組裝 Web 服務(wù)消息了。胖客戶端設(shè)計(jì)限制了能受支持設(shè)備的數(shù)量,這是由于目前在北美市場上設(shè)備性能有限。和任何其它應(yīng)用程序類型類似,胖客戶端設(shè)計(jì)可以使用設(shè)備專有接口。缺點(diǎn)是需要在設(shè)備和應(yīng)用服務(wù)器間安放相同類型的傳輸通道。
和瘦客戶端設(shè)計(jì)不同,在胖客戶端設(shè)計(jì)中,客戶端設(shè)備和服務(wù)器端(WebSphere Application Server 或 Portal Server)都需要實(shí)現(xiàn)。架構(gòu)客戶端實(shí)現(xiàn)使開發(fā)人員可以選擇使用設(shè)備專有接口或調(diào)用 Web 服務(wù)從非專有設(shè)備編碼中得到好處。在媒體應(yīng)用程序?qū)嵗校瑑煞N解決方案都是可行的,因?yàn)榈谝粋€(gè)選項(xiàng)可以使用 SMS 通過 MMS 來請(qǐng)求要發(fā)送的媒體。
正如上面所提到的,例如 SMS 或 MMS 這樣的解決方案需要在客戶端設(shè)備和應(yīng)用服務(wù)器間安放象 Connection Manager 這樣的傳輸通道。有了 Web 服務(wù),就不需要 Connection Manager 和對(duì) SMS 和 MMS 的專有調(diào)用了,取而代之的是一個(gè)能與支持 Web 服務(wù)消息的其它設(shè)備進(jìn)行通信的普通接口。
財(cái)政服務(wù)案例中的媒體應(yīng)用程序
在財(cái)政服務(wù)案例中,可以利用媒體應(yīng)用程序來支持想為其用戶和客戶提供無能服務(wù)的客戶端。胖客戶端實(shí)現(xiàn)可以用于通過 Web 服務(wù)封裝基于事務(wù)服務(wù)傳輸?shù)?VoiceXML,從而處理銀行事務(wù)。
用于數(shù)據(jù)管理應(yīng)用程序的 SOA
為了向客戶提供適時(shí)信息,數(shù)據(jù)管理應(yīng)用程序控制、保護(hù)并促進(jìn)了數(shù)據(jù)的訪問。這些功能都是由數(shù)據(jù)庫管理系統(tǒng)提供的。
應(yīng)用程序需求
- 針對(duì)瘦客戶端解決方案的客戶端設(shè)備上的 Web 接口
- 針對(duì)胖客戶端解決方案的 SQL 客戶端
- 常用數(shù)據(jù)的獲取、驗(yàn)證、處理、存儲(chǔ)、檢索和顯示界面
如何使用 Web 服務(wù)
在瘦客戶端模型中,通過 Web 接口可以促進(jìn)服務(wù)器端的數(shù)據(jù)管理服務(wù)。如今這種設(shè)計(jì)與典型的 web 應(yīng)用程序不再有很多區(qū)別,盡管 Web 服務(wù)設(shè)計(jì)可以利用基于事務(wù)的服務(wù)和基于同步的服務(wù)執(zhí)行提交和回滾來保持?jǐn)?shù)據(jù)是準(zhǔn)確和最新的。對(duì)于瘦客戶端設(shè)計(jì),實(shí)現(xiàn)都是在服務(wù)器端進(jìn)行的。
用于數(shù)據(jù)管理服務(wù)的胖客戶端設(shè)計(jì)有兩種解決方案。和任何其它胖客戶端解決方案一樣,Web 服務(wù)的便攜性和可復(fù)用性使其成為最簡單的解決方案。第二種解決方案需要在客戶端設(shè)備和應(yīng)用服務(wù)器間安放一個(gè)工具,用于將設(shè)備上的指令進(jìn)行代碼轉(zhuǎn)換從而傳送給應(yīng)用服務(wù)器上的服務(wù)。
Web 服務(wù)設(shè)計(jì)還允許體系結(jié)構(gòu)在數(shù)據(jù)管理實(shí)現(xiàn)能駐留在客戶端設(shè)備上這方面的靈活性,允許其訪問上面提到的其它服務(wù)來幫助促進(jìn)作為數(shù)據(jù)管理包的一部分的事務(wù)和同步性。另一個(gè)可能的解決方案是將數(shù)據(jù)管理服務(wù)當(dāng)作 Web 服務(wù)自身來實(shí)現(xiàn),因此其它的需要數(shù)據(jù)管理的服務(wù)都能使用。
第二種設(shè)計(jì)要求將 DB2? Everyplace 安放在客戶端設(shè)備和應(yīng)用服務(wù)器間,從而方便數(shù)據(jù)管理。有了 DB2 Everyplace,就能構(gòu)建使數(shù)據(jù)管理隨處可用的 PDA 應(yīng)用程序了。您的應(yīng)用程序可以連接常見的 PDA,例如 Palm TM、Handspring TM、HP? Jornada、Cassiopiea TM以及 Compaq iPAQ TM 設(shè)備。DB2 Everyplace 還支持基于 EPOC 的 PDA 和帶內(nèi)嵌 Linux 的設(shè)備。
財(cái)政服務(wù)案例中的數(shù)據(jù)管理
數(shù)據(jù)管理服務(wù)可以作為財(cái)政服務(wù)開發(fā)中的一個(gè)輔助工具。允許財(cái)政指令的靈活性是在客戶端還是服務(wù)器端實(shí)現(xiàn)依賴于安全性、數(shù)據(jù)的準(zhǔn)確性以及其它需求,從而將數(shù)據(jù)管理封裝為 Web 服務(wù)既利于瘦客戶端設(shè)計(jì)又利用胖客戶端設(shè)計(jì)。如果使用數(shù)據(jù)管理服務(wù)是應(yīng)用程序設(shè)計(jì)的中心,那么數(shù)據(jù)的分析和報(bào)告會(huì)更準(zhǔn)確。
結(jié)束語
本文描述了如何在普遍環(huán)境中利用 SOA 為使用 Web 服務(wù)提供簡明的解決方案。本文描述了各種應(yīng)用程序類型,在設(shè)計(jì)解決方案中可以使用這些類型。我們用一個(gè)財(cái)政服務(wù)樣本演示了如何在特定的情形下實(shí)現(xiàn)特殊的服務(wù)。最后,描述了能夠幫助使 Web 服務(wù)更便于使用的工具,例如用于應(yīng)用程序的基礎(chǔ)設(shè)施安全性和可擴(kuò)展性的網(wǎng)關(guān)或代理裝置。
附錄:J2ME 和 Web 服務(wù)
就目前的情況而言,在面向服務(wù)的體系結(jié)構(gòu) (SOA) 環(huán)境中,還沒有標(biāo)準(zhǔn)和有效的機(jī)制供啟用了 J2ME 的設(shè)備利用 Web 服務(wù)技術(shù)。雖然已經(jīng)詳細(xì)定義了用于 J2SE 和 J2EE 領(lǐng)域的 Web 服務(wù)規(guī)范,但是沒有涉及到 J2ME 領(lǐng)域中的額外限制問題。這些限制包括要求 Web 服務(wù)技術(shù)符合平臺(tái)性能和容量要求。更明確的講,必須在運(yùn)行時(shí)內(nèi)存和處理需求內(nèi)執(zhí)行 API,并且要滿足目標(biāo)設(shè)備的內(nèi)存要求。此外,還必須考慮到部署環(huán)境的局限性,包括低帶寬和高延遲。
來自 Java Community Process Program 的 JSR 172試圖通過引入兩個(gè)附加包來涉及這些問題,這樣將能在啟用了 J2ME 的設(shè)備上實(shí)現(xiàn) Web 服務(wù)技術(shù)。因?yàn)?XML 是消息格式的實(shí)際標(biāo)準(zhǔn),所以即將引入的附加包主要負(fù)責(zé)優(yōu)化 JAXP 和 JAX-RPC。
JAXP 為操作結(jié)構(gòu)化的 XML 數(shù)據(jù)提供了必需的基本的 API。J2ME 版將包含一個(gè)為 J2SE 和 J2EE 平臺(tái)而定義的嚴(yán)格的子集。它將通過只支持起決定性的功能實(shí)現(xiàn)這一點(diǎn),包括 SAX 解析以及對(duì) XML 名域空間、UTF-8 和 UTF-16 編碼的支持。包括 XSLT 和其他 XML 解析的變體——如 DOM,將不被支持。之所以不支持 DOM,是由于它的實(shí)現(xiàn)容量和運(yùn)行時(shí)的內(nèi)存占用問題。
JAX-RPC 為實(shí)現(xiàn)來自 J2ME 基于 XML 的 RPC 通信提供了 API 和規(guī)定。再一次將它與 J2SE 和 J2EE 中的對(duì)應(yīng)版本相比,可以看出不支持 SOAP 1.1 編碼,擴(kuò)展類型映射和服務(wù)端點(diǎn)能使 JAX-RPC 得以優(yōu)化。
JSR 規(guī)范,加上這種功能受限設(shè)備的最佳實(shí)踐設(shè)計(jì)模式,到底會(huì)產(chǎn)生什么樣的效果呢?本部分主要集中討論概念層次的問題,所有省略了實(shí)現(xiàn)細(xì)節(jié)。有關(guān)下列模式的進(jìn)一步描述和實(shí)現(xiàn)細(xì)節(jié),請(qǐng)參閱 James Noble、Charles Weir 和 Duane Bibby 撰寫的 小型存儲(chǔ)軟件:存儲(chǔ)受限系統(tǒng)的模式。
Web 服務(wù)客戶端案例
SAAJ
客戶端通過 SAAJ 與 Web 服務(wù)通信包括幾個(gè)過程。首先,它必須程式化的創(chuàng)建一個(gè)消息,并依照 DTD 強(qiáng)制規(guī)定的預(yù)定義格式添加內(nèi)容。然后,獲得一個(gè) SOAPConnection 對(duì)象,發(fā)送消息,收到響應(yīng)消息后阻塞。
- 處理:打包:將應(yīng)用分成包,只有當(dāng)需要某個(gè)包時(shí),才加載它。
- DTD:資源文件:在二級(jí)存儲(chǔ)器中保存配置數(shù)據(jù),根據(jù)需要加載和釋放數(shù)據(jù)條目。
- 連接工具:只讀存儲(chǔ)器:在只讀存儲(chǔ)器中保存只讀代碼和數(shù)據(jù)。
- 響應(yīng)消息:數(shù)據(jù)文件:每次處理少量的數(shù)據(jù),把其余的保存在二級(jí)存儲(chǔ)器中。壓縮數(shù)據(jù):在結(jié)構(gòu)內(nèi)部壓縮數(shù)據(jù)條目,以使它們占用最小的空間。
JAXR
同預(yù)定的方案(如在 SAAJ 中)相比,客戶端可以選擇向 Java WSDP 注冊(cè)服務(wù)器 (Java WSDP Registry Server searching) 動(dòng)態(tài)發(fā)送查詢請(qǐng)求,通過 JAXR 查詢支持 JAX-RPC 的 Web 服務(wù)。它必須首先通過查找連接工廠建立一個(gè)連接,設(shè)置連接屬性,獲得 RegistryServiceObject 對(duì)象。利用 RegistryServiceObject 對(duì)象,然后客戶端能夠用相應(yīng)的 BusinessQueryManager 方法進(jìn)行查詢,例如 findOrganizations、findServices 和 findServiceBindings。這些方法返回 BulkResponse——一個(gè)對(duì)象集。要想進(jìn)行優(yōu)化,客戶端可以選擇緩存和創(chuàng)建一個(gè)發(fā)行人的本地?cái)?shù)據(jù)庫。
- 處理:打包:將應(yīng)用分成包,只有當(dāng)需要某個(gè)包時(shí),才加載它。
- 連接工具:只讀存儲(chǔ)器:在只讀存儲(chǔ)器中保存只讀代碼和數(shù)據(jù)。
- BulkResponse:數(shù)據(jù)文件:數(shù)據(jù)文件:每次處理少量的數(shù)據(jù),把其余的保存在二級(jí)存儲(chǔ)器中。壓縮數(shù)據(jù):在結(jié)構(gòu)內(nèi)部壓縮數(shù)據(jù)條目,以使它們占用最小的空間。
- 緩存:共享:一次保存數(shù)據(jù),在任何需要的地方共享。
JAX-RPC
一旦通過 JAXR 構(gòu)建了相關(guān)的 Web 服務(wù)資源庫,客戶端就能夠通過 JAX-RPC 執(zhí)行業(yè)務(wù)邏輯。實(shí)現(xiàn)此功能的方法之一是創(chuàng)建靜態(tài)存根或動(dòng)態(tài)代理。更常見的是,結(jié)果以 Java Bean 集返回。以前,客戶端首先創(chuàng)建存根對(duì)象,設(shè)置存根的端點(diǎn)地址來訪問特殊的服務(wù),并且向服務(wù)器端點(diǎn)接口投擲存根。
創(chuàng)建動(dòng)態(tài)代理時(shí),客戶端創(chuàng)建一個(gè)服務(wù)對(duì)象,該服務(wù)對(duì)象帶有一個(gè) ServiceFactory 和兩個(gè)參數(shù):WSDL 文件的 URL 地址 和 Qname(受 XML 限制的名稱)。然后創(chuàng)建一個(gè)服務(wù)端點(diǎn)接口型的代理。
- 處理:打包:將程序分成包,只有當(dāng)需要某個(gè)包時(shí),才加載它。
- 存根/代理工具:只讀存儲(chǔ)器:在只讀存儲(chǔ)器中保存只讀代碼和數(shù)據(jù)。
- 參數(shù)/結(jié)果集:數(shù)據(jù)文件:數(shù)據(jù)文件:每次處理少量的數(shù)據(jù),把其余的保存在二級(jí)存儲(chǔ)器中。壓縮數(shù)據(jù):在結(jié)構(gòu)內(nèi)部壓縮數(shù)據(jù)條目,以使它們占用最小的空間。
通用 J2ME 應(yīng)用程序設(shè)計(jì)模式
- JavaBeans:
- 壓縮數(shù)據(jù):在結(jié)構(gòu)內(nèi)部壓縮數(shù)據(jù)條目,以使它們占用最小的空間。
- 接口:
- 小型接口:設(shè)計(jì)接口讓客戶端控制數(shù)據(jù)傳輸。
- 屬性文件:
- 資源文件:在二級(jí)存儲(chǔ)器中保存配置數(shù)據(jù),根據(jù)需要加載和釋放條目。
- 內(nèi)存使用情況:
- 應(yīng)用程序轉(zhuǎn)換:將您的系統(tǒng)分為獨(dú)立的執(zhí)行部分,一次只執(zhí)行其中的一個(gè)。
- 內(nèi)存限制:為每個(gè)組件限制它能夠使用的最大內(nèi)存,當(dāng)超過界限時(shí)擇存儲(chǔ)單元分配失敗。
- Captain Oates:寧可為不太重要的組件犧牲內(nèi)存,也不能讓重要的任務(wù)出現(xiàn)故障。
- 局部故障:確保內(nèi)存溢出時(shí),系統(tǒng)總是處于安全狀態(tài)。
- 存儲(chǔ)單元分配池:對(duì)于類似對(duì)象,預(yù)分配一個(gè)對(duì)象池,并回收無用的對(duì)象。
- 存儲(chǔ)器:
- 壓縮數(shù)據(jù):在結(jié)構(gòu)內(nèi)部壓縮數(shù)據(jù)條目,以使它們占用最小的空間。
- 壓縮:在內(nèi)存中移動(dòng)對(duì)象,來移除它們之間無用的空間。
- 自適應(yīng)壓縮算法。