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

本文章為那些想學習 Web 服務但是卻又不知道從何處入手的讀者提供了相關概述

我可以用 Web 服務做什么?
構成 Web 服務的技術是什么?
Web 服務與其他技術的關系如何?
我可以如何在應用程序中使用 Web 服務?
我可以如何提高自己的 Web 服務技能?


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

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

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

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

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

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

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

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

獲得更多相關信息

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


回頁首



我可以用 Web 服務做什么?

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

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

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

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

獲得更多相關信息



回頁首



構成 Web 服務的技術是什么?

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

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

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

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

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

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

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

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

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

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

獲得更多相關信息



回頁首



Web 服務與其他技術的關系如何?

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

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

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

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

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

獲得更多相關信息



回頁首



我可以如何在應用程序中使用 Web 服務?

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

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

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

獲得更多相關信息



回頁首



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

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

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

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

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

獲得更多相關信息

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