轉(zhuǎn)自IBM網(wǎng)站,原文地址:http://www.ibm.com/developerworks/cn/webservices/newto/websvc.html?S_TACT=105AGX52&S_CMP=content

本文章為那些想學(xué)習(xí) Web 服務(wù)但是卻又不知道從何處入手的讀者提供了相關(guān)概述

我可以用 Web 服務(wù)做什么?
構(gòu)成 Web 服務(wù)的技術(shù)是什么?
Web 服務(wù)與其他技術(shù)的關(guān)系如何?
我可以如何在應(yīng)用程序中使用 Web 服務(wù)?
我可以如何提高自己的 Web 服務(wù)技能?


使用 Web 服務(wù)技術(shù),應(yīng)用程序可以與平臺和編程語言無關(guān)的方式相互通信。Web 服務(wù)是一個軟件接口,它描述了一組可以在網(wǎng)絡(luò)上通過標準化的 XML 消息傳遞訪問的操作。它使用基于 XML 語言的協(xié)議來描述要執(zhí)行的操作或者要與另一個 Web 服務(wù)交換的數(shù)據(jù)。在面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)中,一組以這種方式交互的 Web 服務(wù)定義了特定的 Web 服務(wù)應(yīng)用程序。

實際上,Web Service 最基本的組成部分為服務(wù)的提供者(Service Provider)和服務(wù)的請求者(Service Requester)。這看起來很像 C/S 架構(gòu)的軟件,與之不同的是,Web Service 兩端的應(yīng)用是通過基于標準的 XML 格式的協(xié)議進行通信的,這種最常用的協(xié)議就是 SOAP(Simple Object Access Protocol)。當然,Web Services 不簡單地只是按這種方式進行通信。按照 Web Service 的相關(guān)標準描述,服務(wù)的提供者應(yīng)該首先通過 WSDL(Web Service Definition Language)和 UDDI (Universal Description, Discovery, and Integration)發(fā)布它所提供的服務(wù)到一個統(tǒng)注冊這些服務(wù)信息的存儲庫中去。這樣,服務(wù)的請求者就也可以通過 WSDL 和 UDDI 發(fā)現(xiàn)到服務(wù)提供者提供的服務(wù),并可以通過應(yīng)用的調(diào)用方法來使用這個服務(wù)了。

軟 件業(yè)最終會接受這樣的事實:跨多個操作系統(tǒng)、編程語言和硬件平臺集成軟件應(yīng)用程序不可能由任何一種專門的環(huán)境來解決。傳統(tǒng)上,這個問題一直是一個緊耦合問 題,調(diào)用遠程網(wǎng)絡(luò)的應(yīng)用程序通過自己發(fā)出的函數(shù)調(diào)用和請求的參數(shù)與遠程網(wǎng)絡(luò)緊密地聯(lián)系在一起。在 Web 服務(wù)出現(xiàn)之前,在大多數(shù)系統(tǒng)上,采用的是固定的接口,但對于不斷變化的環(huán)境或需求,這樣做缺乏靈活性或適用性

Web 服務(wù)所使用的 XML 可以用真正與平臺無關(guān)的方式來描述任何(所有)數(shù)據(jù),以跨系統(tǒng)交換數(shù)據(jù),因此轉(zhuǎn)向了松耦合應(yīng)用程序。而且,Web 服務(wù)可以在較抽象的層面上工作,較抽象層面可以按照需要動態(tài)地重新評估、修改或處理數(shù)據(jù)類型。所以,從技術(shù)層面上講,Web 服務(wù)可以更方便地處理數(shù)據(jù),并且允許軟件更自由地進行通信。

從更高的概念層面上講,我們可以將 Web 服務(wù)視為一些工作單元,每個單元處理特定的功能任務(wù)。再往上一步,可以將這些任務(wù)組合成面向業(yè)務(wù)的任務(wù),以處理特定的業(yè)務(wù)操作任務(wù),從而使非技術(shù)人員可以 考慮一些應(yīng)用程序,這些應(yīng)用程序能夠在 Web 服務(wù)應(yīng)用程序工作流中一起處理業(yè)務(wù)問題。因此,一旦由技術(shù)人員設(shè)計并構(gòu)建好 Web 服務(wù)之后,業(yè)務(wù)流程架構(gòu)師就可以聚集這些 Web 服務(wù)來解決業(yè)務(wù)層面上的問題。這里借用汽車引擎來作類比,業(yè)務(wù)流程架構(gòu)師考慮將整個汽車引擎與汽車框架、車身、變速器和其他系統(tǒng)組合在一起,而不是研究每 個引擎內(nèi)的各個部件。而且,動態(tài)平臺意味著引擎可以與其他汽車制造商的變速器或部件一起工作。

最后一個方面是,Web 服務(wù)有助于在組織內(nèi)的業(yè)務(wù)人員和技術(shù)人員之間架起一座橋梁。Web 服務(wù)使業(yè)務(wù)人員更容易理解一些技術(shù)上的操作。業(yè)務(wù)人員可以描述一些事件和活動,然后技術(shù)人員可以將這些事件和活動與相應(yīng)的服務(wù)相關(guān)聯(lián)。

有 了通用定義的接口和設(shè)計良好的任務(wù),重用這些任務(wù)就變得更容易了,因而重用這些任務(wù)所代表的應(yīng)用程序也就變得容易了。應(yīng)用程序軟件的可重用性意味著在軟件 上的投資有了更好的回報,因為可以從同一資源產(chǎn)生更多收益。可重用性使業(yè)務(wù)人員可以考慮以一種新的方式來使用現(xiàn)有的應(yīng)用程序,或者以一種新的方式將應(yīng)用程 序提供給合作伙伴,因此可能增加合作伙伴間的業(yè)務(wù)交易。

所以,Web 服務(wù)試圖解決的主要問題是數(shù)據(jù)和應(yīng)用程序集成的問題,以及將技術(shù)性的功能轉(zhuǎn)換為面向業(yè)務(wù)的計算任務(wù)的問題。這兩個方面使企業(yè)可以就流程或應(yīng)用程序?qū)用媾c他們的合作伙伴進行交流,同時為適應(yīng)新形勢或按照需要與不同合作伙伴進行合作留有動態(tài)的余地。

獲得更多相關(guān)信息

  • 要了解 Web 服務(wù),您應(yīng)該首先知道可擴展標記語言(Extensible Markup Languageservices,XML)的工作原理。XML and how it will change the WebIntroduction to XML 是兩篇很好的文章,您可以從這兩篇文章開始了解 XML。雖然 Web 服務(wù)技術(shù)本身是語言無關(guān)的,但是在 Java 技術(shù)中還可以獲得許多工具和軟件實現(xiàn)。
  • 如果您是一位想要了解 Web 服務(wù)的軟件架構(gòu)師或業(yè)務(wù)人員,An Executive's Guide to Web Services 提供了許多關(guān)于 Web 服務(wù)的商業(yè)價值方面的有用想法。


回頁首



我可以用 Web 服務(wù)做什么?

雖 然 Web 服務(wù)支持所有這些將多個服務(wù)組合到應(yīng)用程序中的動態(tài)功能,但您仍然必須首先構(gòu)建這些服務(wù)。編程語言和計算機科學(xué)在不斷發(fā)展。我們在幾十年前就有了函數(shù)的想 法,通過給它提供一些參數(shù),由它根據(jù)這些參數(shù)執(zhí)行某個操作,然后根據(jù)它的計算返回值。最終,這個首先提出來的概念演變成了對象,每個對象不僅有一些它可以 執(zhí)行的函數(shù),而且還有自己的專用數(shù)據(jù)變量,而不是依賴于以前所采用的使開發(fā)應(yīng)用程序更為復(fù)雜的外部系統(tǒng)范圍內(nèi)的數(shù)據(jù)變量。當應(yīng)用程序進入了網(wǎng)絡(luò)時代,對于 對象,定義通用接口的概念變得更為重要,即使位于其他平臺上的對象是用另外的編程語言編寫的并且運行在其他操作系統(tǒng)上,也可以使這些對象進行通信。

在 最近的發(fā)展中,Web 服務(wù)轉(zhuǎn)向了基于 XML 的接口和通信這一概念,只要將 Web 服務(wù)設(shè)計成相應(yīng)的接口,最終都可以將任何一種應(yīng)用程序與另一種應(yīng)用程序組合在一起,并可以隨時間的流逝自由地更改和發(fā)展應(yīng)用程序。XML 的通用性使得 Web 服務(wù)不同于前一代組件技術(shù)。它允許語法結(jié)構(gòu)(句法)與語法意義(語義)分離,每個服務(wù)處理和理解它的方式與它所存在的環(huán)境分離。因此,現(xiàn)在可以將對象定義 為服務(wù),它可以與其他采用 XML 定義的語法的服務(wù)進行通信,從而每個服務(wù)又可以根據(jù)其本地實現(xiàn)和環(huán)境來轉(zhuǎn)換和分析消息。因而,網(wǎng)絡(luò)應(yīng)用程序?qū)嶋H上可以由各種構(gòu)造和設(shè)計的實體組成,只要這 些實體符合它們面向服務(wù)的體系結(jié)構(gòu)就可以了。

因此,如果掌握了這一能力,Web 服務(wù)將使您能夠:

  • 讓任何平臺上的用任何語言編寫的服務(wù)進行交互。
  • 將應(yīng)用程序功能概念化成任務(wù),從而形成面向任務(wù)的開發(fā)和工作流。這使得更抽象的軟件能夠為工作在業(yè)務(wù)層面具有較少軟件分析技術(shù)的用戶所用。
  • 允許松耦合,這意味著,每當其中某個或多個服務(wù)在設(shè)計或?qū)崿F(xiàn)中發(fā)生改變時,服務(wù)應(yīng)用程序之間的交互不會因此而中斷。
  • 使現(xiàn)有的應(yīng)用程序能適應(yīng)不斷變化的業(yè)務(wù)條件和客戶需求。
  • 向現(xiàn)有或遺留軟件應(yīng)用程序提供服務(wù)接口,而無需改變原來的應(yīng)用程序,從而使這些應(yīng)用程序完全可以運行在這種服務(wù)環(huán)境下。
  • 引入其他一些與原有功能無關(guān)的管理或操作管理功能,比如可靠性、責(zé)任性和安全性等等,從而在業(yè)務(wù)計算環(huán)境中增加其通用性和實用性。

獲得更多相關(guān)信息



回頁首



構(gòu)成 Web 服務(wù)的技術(shù)是什么?

Web 服務(wù)采用一系列相關(guān)協(xié)議來描述、傳遞服務(wù)和與服務(wù)交互。根據(jù)其通常的功能和使用,可以將這一系列協(xié)議進一步劃分為組。第一組處理消息傳遞、接口描述、尋址 和交付的問題。最有名的是消息傳遞協(xié)議,稱為簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)。此協(xié)議對消息進行了編碼,這樣就可以通過傳輸協(xié)議(如 HTTP、IIOP、SMTP 或其他協(xié)議)在網(wǎng)絡(luò)上傳遞它們。

Web 服務(wù)描述語言(Web Services Description Language,WSDL)表示為一系列 XML 語句,這些語句組成了每個服務(wù)的接口的定義。另一個正在制訂的規(guī)范是 Web 服務(wù)尋址 (WS-Addressing),它定義了如何在分布式體系結(jié)構(gòu)中唯一地進行 Web 服務(wù)尋址和標識 Web 服務(wù)。另一個流行的規(guī)范是 Web 服務(wù)調(diào)用框架(Web Services Invocation Framework),在這種框架中,您可以定義任何類型的組件的 WSDL 接口,即使它們沒有使用相同的消息傳遞協(xié)議。

下一組協(xié)議和規(guī)范定義了服務(wù)如何公開它們自己以及如何在網(wǎng)絡(luò)上相互發(fā)現(xiàn)。對于 要相互查找的服務(wù),統(tǒng)一描述、發(fā)現(xiàn)和集成(Universal Description, Discovery and Integration,UDDI)為查找和訪問服務(wù)定義了注冊中心和相關(guān)協(xié)議。Web 服務(wù)檢查語言(Web Services Inspection Language)是 UDDI 在不使用注冊中心的情況下采用的一種可選機制。

用于 Web 服務(wù)的安全性協(xié)議是從 Web 服務(wù)安全性 (WS-Security) 規(guī)范開始的,該規(guī)范為安全通信定義了基于令牌的體系結(jié)構(gòu)。以此為基礎(chǔ),有六個主要的組成規(guī)范:

  • Web 服務(wù)策略 (WS-Policy) 和相關(guān)的規(guī)范,定義了關(guān)于服務(wù)交互方式的策略規(guī)則。
  • Web 服務(wù)信任(WS-Trust),定義了安全交換的信任模型。
  • Web 服務(wù)隱私 (WS-Privacy),定義了如何維護信息的隱私。
  • Web 服務(wù)安全會話 (WS-Secure Conversation),定義了如何使用在Web 服務(wù)策略 (WS-Policy)、Web 服務(wù)信任 (WS-Trust) 和 Web 服務(wù)隱私 (WS-Privacy) 中定義的規(guī)則,以在用于交換數(shù)據(jù)的服務(wù)之間建立安全會話。
  • Web 服務(wù)聯(lián)盟 (WS-Federation),定義了分布式標識的規(guī)則以及如何對其進行管理。
  • Web 服務(wù)授權(quán) (WS-Authorization),定義了如何處理對訪問和交換數(shù)據(jù)的授權(quán)。

除 了安全性模型之外,還有特定于應(yīng)用程序的規(guī)范,其中包括 Web 服務(wù)的業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language for Web Services,BPEL4WS),它定義了一起進行分布式事務(wù)處理的工作流操作、Web 服務(wù)事務(wù) (WS-Transaction)、Web 服務(wù)協(xié)調(diào) (WS-Coordination)。

目前計劃制訂的規(guī)范是 Web 服務(wù)分布式管理 (Web Services Distributed Management),用于對所有的服務(wù)和面向服務(wù)的體系結(jié)構(gòu)進行軟件管理。最后,還有一些用于用戶界面(Web 服務(wù)交互應(yīng)用程序 (WS-InteractiveApplications))和 Web 服務(wù)的遠程訪問(Web 服務(wù)遠程門戶 (WS-RemotePortals))的規(guī)范。

在撰寫本文時,用于 Web 服務(wù)的規(guī)范還處在不斷制訂的過程中,而且它們僅僅是開始解釋服務(wù)之間應(yīng)該如何交互。然而,它們無法包括每一種方案和這些方案的可能組合。因此,Web 服務(wù)互操作性組(Web Services Interoperability Group,WS-I)的組成成員幾乎來自所有從事 Web 服務(wù)開發(fā)的大大小小的供應(yīng)商,它已經(jīng)肩負起開發(fā)案例研究、示例應(yīng)用程序、實現(xiàn)方案和測試工具的重任,目的是確保這些標準和規(guī)范能夠真正地協(xié)同工作,而不考 慮供應(yīng)商的產(chǎn)品實現(xiàn)。

WS-I 已經(jīng)定義了第一個用于 Web 服務(wù)的基本概要 (Basic Profile 1.0),并且還發(fā)布了方案、示例應(yīng)用程序和測試工具,以便根據(jù)方案評估和比較各種實現(xiàn)的結(jié)果。

除 了 WS-I 之外,Organization for the Advancement of Structured Information Standards (OASIS) 、World Wide Web Consortium (W3C) 和 Internet Engineering Task Force (IETF) 也在進行大量的標準制訂工作。

獲得更多相關(guān)信息



回頁首



Web 服務(wù)與其他技術(shù)的關(guān)系如何?

Web 服務(wù)主要是技術(shù)的集成。不過,它本身是獨立于形式的。如前所述,組成 Web 服務(wù)的技術(shù)通常是用 XML 進行定義和交互的。然而,由于 XML 本身是一種獨立的語言,所以 Web 服務(wù)也是獨立的。因此,可以用許多編程語言(其中包括 Java、Python、Perl、C#、Basic 等等)來開發(fā) Web 服務(wù)。

Web 服務(wù)的初衷是努力為 Internet 和 Web 應(yīng)用程序的體系結(jié)構(gòu)找到一種更好的方法,以便更好地進行通信和相互交互。因而,當今的大多數(shù) Web 服務(wù)是基于在應(yīng)用程序服務(wù)器環(huán)境(如 WebSphere、Apache 及其他)中運行的程序的。雖然它們不是必需的,但是一些最優(yōu)秀的 Web 服務(wù)工具是為這樣的環(huán)境而設(shè)計的。

通過提供更簡單的統(tǒng)一接口,Web 服務(wù)還有助于改進用于移動環(huán)境和可移植環(huán)境的普及計算模型的工作方式。移動計算軟件將很快采用 Web 服務(wù)通信模型,而這有助于改進可視化 Web 服務(wù)的接口問題。

網(wǎng)格計算已經(jīng)采用 Web 服務(wù)作為開放網(wǎng)格服務(wù)體系結(jié)構(gòu) (Open Grid Services Architecture) 的一部分。開放網(wǎng)格服務(wù)體系結(jié)構(gòu)是用于這種類型的分布式計算的新模型,它使用 Web 服務(wù)傳遞網(wǎng)格服務(wù)操作的方式。

自主計算是一種很有意義的新方法,通過這種計算方法,計算機可以維護和管理自己,它有一些用于 Web 服務(wù)的應(yīng)用程序。

獲得更多相關(guān)信息



回頁首



我可以如何在應(yīng)用程序中使用 Web 服務(wù)?

在 構(gòu)建應(yīng)用程序時有很多考慮 Web 服務(wù)的方式。在最基本的層次上,高級通信協(xié)議允許應(yīng)用程序相互交談。在過去幾年里,這一層次已經(jīng)取得了巨大的進展,出現(xiàn)了許多工具,通過使用這些工具,軟 件開發(fā)人員可以編寫交互的 Web 服務(wù)并構(gòu)建復(fù)雜的應(yīng)用程序。通常,這一層次的特點是服務(wù)之間的一對一直接交互或比較少的服務(wù)相互交互。

然 而,如果只是將 Web 服務(wù)作為通信協(xié)議就未能實現(xiàn)真正的面向服務(wù)的體系結(jié)構(gòu) (SOA)。 SOA 描述了服務(wù)的整個系統(tǒng)如何動態(tài)地相互查找,如何聚集在一起執(zhí)行某些應(yīng)用程序,以及如何按照多種方式進行組合。該模型鼓勵技術(shù)和軟件的重用,從而發(fā)展了設(shè) 計、開發(fā)和使用應(yīng)用程序的方式。它使分布式計算更接近于現(xiàn)實。在這一層次上,軟件開發(fā)人員需要考慮 SOA 模型并通過此模型來設(shè)計他們的分布式應(yīng)用程序。這一層的特點是使用各種技術(shù)來支持服務(wù)的分布式計算,比如 企業(yè)服務(wù)總線 (ESB),它是一個通用的分布網(wǎng)絡(luò),可以與服務(wù)一起協(xié)同工作。

而最高的層次是把 SOA 模型和許多組件服務(wù)看作是構(gòu)件,這些構(gòu)件可以裝配成作為一個整體的某些部分并放入完整的應(yīng)用程序中,而不是用傳統(tǒng)的方法來編寫一行一行的代碼。通過檢驗連 接接口,我們可以在不曾真正編寫一行代碼的情況下構(gòu)建整個應(yīng)用程序。事實上,按照這種方式,甚至還可能得到直接代碼,因為服務(wù)可以通過多種不同的語言和平 臺進行編寫。可以將構(gòu)件放在一起來組成定義應(yīng)用程序的執(zhí)行方式的操作工作流,而且還可以用其他工具來監(jiān)控每個服務(wù)或服務(wù)組的工作流的有效性。在這一層次 上,開發(fā)人員可以把常規(guī)編程語言放在一邊,而使用模型驅(qū)動的體系結(jié)構(gòu) (Model-Driven Architecture) 來幫助他們構(gòu)建設(shè)計更精確的應(yīng)用程序。然后,這樣設(shè)計的應(yīng)用程序就可以運行在分布式系統(tǒng)(如 ESB)之上。

獲得更多相關(guān)信息



回頁首



我可以如何提高自己的 Web 服務(wù)技能?

跟 上 Web 服務(wù)的發(fā)展的最好方法就是閱讀最新的技術(shù)文章和使用各種可用的工具。由于技術(shù)本身在不斷地發(fā)展,所以這些信息和工具提供了對使用 Web 服務(wù)的最佳方式的解釋。 Emerging Technology Toolkit 之類的工具還跨越了幾個階段,涉及到這些技術(shù)的一些前沿知識,通過使用這些工具,您就可以試驗專家正在研究的一些技術(shù)。我們將在下一部分中描述這些技術(shù)。

目 前,Web 服務(wù)已經(jīng)取得了重大的進展,關(guān)于這個主題的各種信息也在爆炸式地出現(xiàn)。在 Web Services 專區(qū)中,有大量有關(guān)開發(fā)用于直接交互的 Web 服務(wù)的技術(shù)內(nèi)容。甚至像 SOAP 這樣已經(jīng)出現(xiàn)了三年多的協(xié)議仍在完善之中。由于這個主題在不斷地變化,所以常常回到 Web Services 看看是非常有益的。

另一個提高您的技能的好方法是直接參與專區(qū)的討論論壇。在這里,您可以找到正在這個領(lǐng)域積極開展研究工作的專業(yè)人員,甚至直接得到設(shè)計這些技術(shù)和開發(fā)這些產(chǎn)品的研發(fā)人員的幫助。

對于高級開發(fā)人員,您可以通過參與每月一次的各種專題討論會來加入到 Web 服務(wù)規(guī)范本身的制訂和發(fā)展之中。

獲得更多相關(guān)信息

  • Web 服務(wù)專區(qū)經(jīng)常增加一些新的教程,這些教程詳細解釋了如何在 Web 服務(wù)中執(zhí)行有用的任務(wù)。
  • Web Services Specification Workshops 是一個多方參與的事件,您可以從中獲得更多的信息并提供關(guān)于 Web 服務(wù)規(guī)范的反饋。
  • developerWorks 站點上 Web 服務(wù)的最佳實踐調(diào)查了 IBM JStart 項目組成員在走向成功道路上遭遇的真實情景,這個項目是針對早期技術(shù)實現(xiàn)的。學(xué)習(xí)這些最佳實踐可以幫助您評估和適應(yīng)您自己的項目的情況