【文章內(nèi)容簡介】
以體現(xiàn) XML Web Service 與平臺和開發(fā)語言無關(guān)的特性。本文所寫的模擬銀行轉(zhuǎn)帳與真實的銀行轉(zhuǎn)帳沒有任何聯(lián)系,是以模擬銀行轉(zhuǎn)帳為例,說明如何使用XML Web Service 對異構(gòu)數(shù)據(jù)庫、系統(tǒng)的集成。 模擬 A 銀行的是用 SQL Server 數(shù)據(jù)庫,對外公開的 XML Web 服務使用 Microsoft的 .Net C語言開發(fā);模擬 B 銀行的是使用 MySQL 數(shù)據(jù)庫,使用 Sun 公司 Java 語言開發(fā) XML Web 接口。然后開發(fā)一個客戶端,將兩個系統(tǒng)集成起來,實現(xiàn)模擬轉(zhuǎn)帳的功能。 論文的組織結(jié)構(gòu) 第一章:緒 論, 概要的介紹了國內(nèi)、 外企業(yè)信息化建設(shè)過程及基本情況, 存在的問題,從而分析出企業(yè)應用集成在信息化建設(shè)中的重要性, 引出了本課題研究背景及論文的組織安排。 第二章:介紹 XML Web 服務及相關(guān)的技術(shù),重點介紹 XML Web 服務技術(shù)標準與協(xié)議, XML Web 優(yōu)點以及服務示例;以及與 XML Web 相關(guān)的 XML技術(shù),開發(fā) XML Web服務的 .NET Framework 和 XFire。 第三章:描述本文實現(xiàn)銀行轉(zhuǎn)帳系統(tǒng)的數(shù)據(jù)交換模型,以及 SOAP 的規(guī)范和請求、響應剖析。 第四章:描述了系統(tǒng)的概述,總體設(shè)計,技 術(shù)分層設(shè)計,數(shù)據(jù)設(shè)計以及系統(tǒng)的 XML Web 服務端和客戶端的設(shè)計。 第五章:系統(tǒng)開發(fā)。描述了開發(fā)工具的選擇和環(huán)境部署搭建,數(shù)據(jù)訪問層 DAO 是如何實現(xiàn)的,銀行轉(zhuǎn)帳客戶端和服務端的開發(fā)。 結(jié)論 : 對研究本系統(tǒng)的設(shè)計進行了總結(jié),同時對后續(xù)工作進行了展望。 2 XML Web 服務及相關(guān)技術(shù) 什么是 XML Web 服務 XML Web 是一類軟件組件,它們通過網(wǎng)絡實現(xiàn)其功能。 XML Web 服務的外延定義還可以通過以下公認的特性進行說明 [8]: 基礎(chǔ)的 Web Services 平臺是 XML + HTTP。 HTTP 協(xié)議是最常用的因特網(wǎng)協(xié)議,XML 提供了一種可用于不同的平臺和編程語言之間的語言。常見的協(xié)議包括: 圖 XML Web 服務協(xié)議體系 ( TCP/ IPTransmission Control Protocol/Inter Protocol,傳輸控制協(xié)議 /Inter協(xié)議)、 HTTP 協(xié)議( Hypertext Transfer Protocol,超文本傳輸協(xié)議)以及 XML( Extensible Markup Language,可擴展標志語言)等 Inter 標準, 還包括以下為 XML Web 服務專門開發(fā)的新標準,如 SOAP( Simple Object Access Protocol, 簡單對象訪問協(xié)議)、 WSDL( Web Services Description Language, Web 服務描述語言)以及 UDDI(Universal Discovery, Description and Integration, 通用發(fā)現(xiàn)、描敘與集成 )等等,如圖 所示 XML Web 服務協(xié)議體系。 XML Web 服務通常不是一個完整的應用程序,而往往是一個功能型的組件或是大型解決方案 [9]。同樣, XML Web 服務的目的往往是應用程序之間的交互。 XML Web 服務通過良好定義的接口( interface)來實現(xiàn)其多種功能。需要主要的是,這里的“接口”一詞不能等同與網(wǎng)頁和 Windows 應用程序中使用的用戶接口( user interface),而是指使用 WSDL 等標準化接口描述語言定義的程序接口。 XML Web 服務平臺是簡單的可共同操作的消息收發(fā)框架。它仍然缺少許多諸如安全和路由等重要的特性。但是,一旦 SOAP 變得更加高級,這些事項就會得到解決 [10]。 XML Web 服務 的未來使命是使應用程序更加容易通信 [11]。 XML Web 服務標準與協(xié)議 盡管 XML Web 服務目前采用的規(guī)范已經(jīng)得到了廣泛的認可,但其中的一些標準現(xiàn)在仍然繼續(xù)發(fā)展,以滿足各行各業(yè)以及廣大消費者的需求 [13]。整個領(lǐng)域都處在不斷發(fā)展更新中,各種新特性、新規(guī)范以及新版本協(xié)議不斷榮。圖 是 XML Web 服務所采用的技術(shù)的一個縮略圖。 圖 XML Web 服務采用的技術(shù) 目錄和發(fā)現(xiàn) 使用 XML Web 服務,關(guān)鍵是要能準確的描述出它所具備的功能。發(fā)現(xiàn)技術(shù)的目的在于,使開發(fā) 者能獲取對 XML Web 服務的描述,這樣就能將其作為一個組件來開發(fā)系統(tǒng)。 UDDI UDDI( Universal Description, Discovery and Integration,通用描述、發(fā)現(xiàn)和集成)提供 XML Web 服務的注冊表。簡而言之, UDDI 提供了一個企業(yè)目錄,用戶可以根據(jù)企業(yè)名稱、企業(yè)所經(jīng)營的行業(yè)或是企業(yè)提供服務的地區(qū)在其中進行搜索。每項企業(yè)記錄都包括該企業(yè)所提供的 XML Web 服務的目的和位置的詳細信息 [14]。 目前為止,已經(jīng)有 3 種可用的 UDDI 注冊表,分別來自于 IBM、 SAP、 Microsoft 公司提供 UDDI 注冊服務。地址是: DISCO DISCO( discovery 的縮寫)文件是 Microsoft 特有的一種格式,通過這一技術(shù)網(wǎng)站可公布其提供的 XML Web 服務。目前, DISCO 文件的主要消費者是 Visual Studio .Net。XML Web 服務產(chǎn)品的其他提供者也已經(jīng)開始逐漸采用這一技術(shù)。 DISCO 的主要優(yōu)點 在與其簡單性,它使得部門或小型企業(yè)也可利用簡單 XML Web服務發(fā)現(xiàn)機制,而無需要創(chuàng)建并維護完整的 UDDI 注冊表。 描述 (通過 UDDI 或 DISCO)發(fā)現(xiàn)某種 XML Web 服務之后,我們就需要了解該服務能提供哪些交互。消費者終端要使用 XML Web 服務,就必須事先知道如何與其進行交互。前面介紹的發(fā)現(xiàn)過程,其最終目的就在與獲取服務的描述。 WDSL( Web Services Description Language, Web 服務描述語言)是對 XML Web 服務進行描述的標準方式。 WSDL 是一種對交 互進行描述的 XML 格式,它包括了可以傳送給服務的每條消息以及將要返回(如果要返回)的響應類型的有關(guān)信息。 WSDL 文檔是合同(告知消費者端 XML Web 服務的作用)的基礎(chǔ)。 WSDL 文檔實質(zhì)上相當簡單,但它通常都被用來描述復雜的交互,因此文檔有可能相當長而且不容易看懂。 消息發(fā)送 在發(fā)現(xiàn)某種 XML Web 服務并獲取現(xiàn)有的關(guān)于其交互的描述之后,就可以向服務發(fā)送消息以使用該服務了。 在客戶端與 XML Web 服務之間的消費發(fā)送通常采用 SOAP( Simple Object Access Protocol, 簡單對象訪問協(xié)議)進行。這些消息包括客戶端請求 XML Web 服務執(zhí)行任務的消息,以及服務返回的包含詳細的響應。與 Web 服務采用的其他許多標準和協(xié)議一樣, SOAP 也是基于 XML 的。 SOAP 并為綁定到某種特定的編程語言或操作系統(tǒng)上。也就是說,使用 Java 語言編寫的客戶端也能理解用 C或 Visual 編寫的 XML Web 服務所發(fā)出的消息。由于每種平臺都可以用于自身的一套數(shù)據(jù)類型, SOAP 提供了一種為所有平臺支持的中間表示方式。實際上,跨平臺數(shù)據(jù)類型并不像人們所想象的那么復雜,從圖 就可以看出來這一點。 圖 SOAP 數(shù)據(jù)轉(zhuǎn)換模型 XML Web 服務發(fā)送 SOAP 消息時,它并不知道要接收消息的是何種客戶端 —— 客戶端可能是 Microsoft .NET 語言編寫的,也可能是用 Java 等其他語言編寫的。 XML Web服務只需要具備將 .NET 類型轉(zhuǎn)換為 SOAP 類型的功能;而客戶端則只需要知道如何將SOAP 類型轉(zhuǎn)換為在自身使用的語言中可以理解的類型(如 Java 數(shù)據(jù)類型)。這種轉(zhuǎn)換就是 SOAP 跨平臺數(shù)據(jù)類型得以存在的基礎(chǔ)。每種平臺或是編程語言都必須進行自身數(shù)據(jù)類型與對應的 SOAP 數(shù)據(jù)類型之間的轉(zhuǎn)換 。 XML Web 服務體系結(jié)構(gòu) 圖 XML Web 服務體系結(jié)構(gòu) 從圖 中可以清楚的看出 XML Web 服務的一個最基本的架構(gòu) [15]。 XML Web 服務最基本的組成部分為服務的提供者( Service Provider)和服務的請求者( Service Requester)。這樣看起來很像 C/S 架構(gòu)的軟件,與之不同的是, XML Web 服務兩端的應用是通過基于標準的 XML 格式的協(xié)議進行通信的,這種最常用的協(xié)議就是 SOAP。服務的提供者應該首先通過 WSDL 和 UDDI 發(fā) 布它所提供的服務到一個統(tǒng)一注冊這些服務信息的存儲庫中去。這樣,服務的請求者通過 WSDL 和 UDDI 發(fā)現(xiàn)到服務提供者提供的服務,然后通過應用的調(diào)用方法來使用這個服務。 目錄、發(fā)現(xiàn)和描述,是使得客戶端可以找到 WSDL 文檔中對 XML Web 服務的描述的前 3 個步驟。其中,發(fā)現(xiàn)過程是 Microsoft 產(chǎn)品專業(yè)的,使用其他工具創(chuàng)建的 XML Web服務可以略去此步驟,直接將引用放入 UDDI 注冊表中指向 WSDL 描述的位置。 XML Web 服務示例 信息服務 最常見的 XML Web 服務是用于對信息的編程訪問,如訪問股票價格、貨幣兌換比例、航班到達時刻表以及外語翻譯等信息。實際上,這些信息可能本來就以網(wǎng)頁或文檔等電子形式提供給了用戶,但用戶不能使用編程的方式對這些形式的信息進行訪問或操縱。而通過 XML Web 服務,這些信息便有現(xiàn)有的接口提供給用戶,以供用戶使用標準協(xié)議和數(shù)據(jù)表示形式訪問。任何設(shè)備或程序,無聊它們采用何種平臺或編程語言實現(xiàn),都可以通過網(wǎng)絡與 XML Web 服務進行通信以訪問這些信息。 XML Web 服務的發(fā)展空間是無限大,任何信息都可以通過 XML Web 服務模型進行傳送 [16]。 集中化服務 除了為客戶提供信息之外, XML Web 服務還能充當一個方便的信息庫,以跨越多種不同平臺的應用程序共享和操縱同樣的信息。基于 Inter 的日程表和文件存儲等服務則是 XML Web 服務發(fā)揮這些附加功能的極好例子。通過這些服務,無論用戶身在何方,使用何種平臺,都可以訪問信息,使用信息集中化功能,用戶還可以授權(quán)給信用第三方,使其也可以訪問用戶的信息。 許多重要的簡單服務不但能提供多方面的信息,而且能將用戶信息進行集中并提供給訪問者。這樣應用程序和作為中介的 XML Web 服務就能充分的利用,通過編程方式訪問大量數(shù)據(jù)時,可以不受數(shù)據(jù)所在位置與所用平臺的局限,從而能利用現(xiàn)有的組件數(shù)據(jù)來創(chuàng)建功能強大的新服務。例如,假設(shè)所有交通公司都是有 XML Web 服務公布其公共汽車、火車以及航班的時刻表供客戶查詢,那么應用程序或作為中介的 XML Web 服務就可以使用這些信息來設(shè)計任何兩個地點之間的最佳路線。 應用程序 的擴展和 集成 XML Web 服務可以與傳統(tǒng)的系統(tǒng)集成,從而開發(fā)出新型的 IT 解決方案。進行 XML Web 服務通行所需要的技術(shù)相當簡單,大多計算機平臺都提供了這些技術(shù) 。采用 XML Web 服務作為客戶端和傳統(tǒng)系統(tǒng)之間的抽象層有多個優(yōu)點:許多新型客戶端平臺都能訪問舊系統(tǒng),而且 XML Web 服務在處理客戶端請求時,還能對跨多個系統(tǒng)的活動進行協(xié)調(diào)。 可以用一種綜合方式來使用 XML Web services,以便集成似乎完全不同的一組現(xiàn)有應用程序。 在大多數(shù)公司中,幾乎每個部門都在廣泛采用自定義軟件,這就產(chǎn)生了大量有用的數(shù)據(jù)和業(yè)務邏輯 “孤島 ”。 由于軟件各自不同的開發(fā)環(huán)境以及技術(shù)不斷發(fā)展的本質(zhì),在這些應用程序的基礎(chǔ)上創(chuàng)建一個有效的分組是一項艱巨的任務。 利用 XML Web services,就可以將每個現(xiàn)有應用程序的功能和數(shù)據(jù)作為 XML Web services 公開。 然后,您可以創(chuàng)建一個復合應用程序,該應用程序使用此 XML Web services 集合實現(xiàn)構(gòu)成應用程序之間的互操作性。 WSSecurity WSSecurity (Web 服務安全 ) 是一種提供在 Web 服務上應用安全的方法的網(wǎng)絡傳輸協(xié)議。 2021 年 4 月 19 日, OASIS 組織發(fā)布了 WSSecurity 標準的 版本。 2021 年 2月 17 日,發(fā)布了 版本。 WSSecurity 是最初 IBM,微軟, VeriSign 和 Forum Systems 開發(fā)的,現(xiàn)在協(xié)議由OasisOpen 下的一個委員會開發(fā),官方名稱為 WSS。 協(xié)議包含了關(guān)于如何在 Web 服務消息上保證完整性和機密性的規(guī)約。 WSS 協(xié)議包括 SAML(安全斷言標記語言)、 Kerberos 和認證證書格式(如 )的使用的詳細信息。 WSSecurity 描述了如何將簽名和加密頭加入 SOAP 消息。除此以外,還描述了如何在消息中加入安全令牌,包括二進制安全令牌,如 認證證書和 Kerberos 門票( ticket)。 WSSecurity 將安全特性放入一個 SOAP 消息的消息頭中,在應用層處理。這樣協(xié)議保證了端到端的安全。 X