複製鏈接
請複製以下鏈接發送給好友

Web Service

鎖定
Web Service是一個平台獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述、發佈、發現、協調和配置這些應用程序,用於開發分佈式的交互操作的應用程序 [1] 
Web Service技術, 能使得運行在不同機器上的不同應用無須藉助附加的、專門的第三方軟件或硬件, 就可相互交換數據或集成。依據Web Service規範實施的應用之間, 無論它們所使用的語言、 平台或內部協議是什麼, 都可以相互交換數據。Web Service是自描述、 自包含的可用網絡模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減少了應用接口的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。
中文名
Web Service
外文名
Web Service
類    型
應用程序
平    台
獨立平台
作    用
交換數據或集成

Web Service歷史

web廣泛用到的技術:
  1. TCP/IP:通用網絡協議,被各種設備使用
  2. HTML(標準通用標記語言下的一個應用):通用用户界面,可以使用HTML標籤顯示數據
  3. .NET: 不同應用程序間共享數據與數據交換
  4. Java:寫一次可以在任何系統運行的通用編程語言,因為java具有跨平台特性
  5. XML(eXtensible Markup Language):通用數據表達語言,在web上傳送結構化數據的容易方法
他們的特點是其開放性,跨平台性,開放性正是Web services的基礎。
近幾年來,Internet的迅猛發展使其成為全球信息傳遞與共享的巨大的資源庫。越來越多的網絡環境下的Web應用系統被建立起來,利用HTMLCGI等Web技術可以輕鬆地在Internet環境下實現電子商務、電子政務等多種應用。然而這些應用可能分佈在不同的地理位置,使用不同的數據組織形式和操作系統平台,加上應用不同所造成的數據不一致性,使得如何將這些高度分佈的數據集中起來並得以充分利用成為急需解決的問題。
隨着網絡技術、網絡運行理念的發展,人們提出一種新的利用網絡進行應用集成的解決方案——Web Service。Web Service是一種新的Web應用程序分支,其可以執行從簡單的請求到複雜商務處理的任何功能。一旦部署以後,其他Web Service應用程序可以發現並調用它部署的服務。因此,Web Service是構造分佈式、模塊化應用程序和面向服務應用集成的最新技術和發展趨勢

Web Service趨勢

內容更動態化
  1. 帶寬Bandwidth更便宜,易於獲得。
  2. 存儲器Storage更便宜,更易獲得。
  3. 普遍式計算變得更加重要:大量的設備,例如移動電話,頁面,電腦,pc,已經在Internet上變得普遍,平台變得更多元化,像XML這樣的跨平台技術變得更重要。

Web Service趨勢

上述的這些趨勢意味着,更加智能的處理,操作和彙總內容變得十分重要。讓我們看看按照Web services角度所預示的四個趨勢:
  1. 內容更加動態:一個web service必須能合併從多個不同來源的內容,可以包括股票,天氣,新聞等,在傳統環境中的內容,如存貨水平,購物訂單或者目錄信息等,都從後端系統而來;
  2. 帶寬更加便宜:web services可以分發各種類型的內容(音頻視頻流等);
  3. 存儲更便宜::web services必須能聰明地處理大量數據,意味着要使用數據庫LDAP目錄,緩衝,和負載平衡軟件等技術保持可擴展能力;
  4. 普遍式計算更重要:web services不能要求客户使用某一版本的windows的傳統瀏覽器,必須支持各種設備,平台,瀏覽器類型,各種內容類型;
兩種重要技術
要達到這樣的目標,Web services要使用兩種技術:
  1. XML:XML是在web上傳送結構化數據的偉大方式,Web services要以一種可靠的自動的方式操作數據,HTML(標準通用標記語言下的一個應用)不會滿足要求,而XML可以使web services十分方便的處理數據,它的內容與表示的分離十分理想;
  2. SOAP:SOAP使用XML消息調用遠程方法,這樣web services可以通過HTTP協議的post和get方法與遠程機器交互,而且,SOAP更加健壯和靈活易用;
其他像UDDIWSDL技術與XML和SOAP技術緊密結合用於服務發現

Web Service支持

Web Service技術支持

Web Service平台需要一套協議來實現分佈式應用程序的創建。任何平台都有它的數據表示方法和類型系統。要實現互操作性,Web Service平台必須提供一套標準的類型系統,用於溝通不同平台、編程語言和組件模型中的不同類型系統。這些協議有:
XML和XSD
XML是一種用於標記電子文件使其具有結構性的標記語言 [3]  ,是Web Service平台中表示數據的基本格式。除了易於建立和易於分析外,XML主要的優點在於它既與平台無關,又與廠商無關。XML遵循 W3C 規範的語法要求,形式與內容分離,具有良好的自描述性,同時易於擴展,擁有豐富的第三方開發庫,非常適合在不同架構的系統之間進行信息傳輸使用。隨着XML的應用越來越廣泛,在眾多應用場景下,XML憑藉其優點已經成為事實上的數據交換標準 [3]  XML是由萬維網協會(W3C)創建,W3C制定的XML SchemaXSD定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型
xml web service xml web service
Web Service平台是用XSD來作為數據類型系統的。當你用某種語言如VB. NET或C# 來構造一個Web Service時,為了符合Web Service標準,所有你使用的數據類型都必須被轉換為XSD類型。如想讓它使用在不同平台和不同軟件的不同組織間傳遞,還需要用某種東西將它包裝起來。這種東西就是一種協議,如 SOAP
SOAP
SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用於交換XML(標準通用標記語言下的一個子集)編碼信息的輕量級協議,能夠在不同信息系統之間交換結構化數據,是Web Service的一種主流實現形式 [3]  。它有三個主要方面:XML-envelope為描述信息內容和如何處理內容定義了框架,將程序對象編碼成為XML對象的規則,執行遠程過程調用(RPC)的約定。SOAP可以運行在任何其他傳輸協議上。
SOAP基於HTTP協議定義了一個框架,描述消息中的內容是什麼、是誰發送的、誰應當接受並處理它以及如何處理它們。它通過定義SOAP信封(Envelop)實現數據格式的標準化,將XML數據封裝於信封之中進行信息交互,使得異構的系統間能夠進行互操作。 [3] 
Web Service 希望實現不同的系統之間能夠用“軟件-軟件對話”的方式相互調用,打破了軟件應用、網站和各種設備之間的格格不入的狀態,實現“基於Web無縫集成”的目標。
WSDL
Web Service描述語言WSDL 就是用機器能閲讀的方式提供的一個正式描述文檔而基於XML(標準通用標記語言下的一個子集)的語言,用於描述Web Service及其函數、參數和返回值。因為是基於XML的,所以WSDL既是機器可閲讀的,又是人可閲讀的。
UDDI
UDDI 的目的是為電子商務建立標準;UDDI是一套基於Web的、分佈式的、為Web Service提供的、信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業能夠發現的訪問協議的實現標準。
調用RPC與消息傳遞
Web Service本身其實是在實現應用程序間的通信。我們有兩種應用程序通信的方法:RPC遠程過程調用 和消息傳遞。使用RPC的時候,客户端的概念是調用服務器上的遠程過程,通常方式為實例化一個遠程對象並調用其方法和屬性。RPC系統試圖達到一種位置上的透明性:服務器暴露出遠程對象的接口,而客户端就好像在本地使用的這些對象的接口一樣,這樣就隱藏了底層的信息,客户端也就根本不需要知道對象是在哪台機器上。

Web Service軟件支持

操作系統離不開豐富的應用軟件的支持。同樣,Web Service這項技術只有通過日益廣泛的應用才能體現出其價值,比較流行的實現方法是使用.NETJava兩種技術,並且兩種實現方法可以互相操作;如今我們已經可以看到使用微軟OracleSUNBorland等不同廠商的Web Service構建工具建立的Web Service應用。
微軟.NET
微軟的.NET技術應該算是時下最為流行的Web Service 開發技術。首先因為其公司在以前相應的產品就佔有相當大的市場份額,以至使新推出的.NET得以有比較穩定的用户羣;其次也是更重要的是 .NET平台不僅延續了微軟一貫的編程風格,而且還增加了許多支持Web 服務的關鍵性技術,使得.NET在操作的簡單性和執行的穩定性,高效性上達到了一個非常好的結合。
微軟Visual Studio. NET便是一個便於 Web 服務的開發工具微軟的目標是,將其新編程語言——C#作為Web Service的首選語言。雖然C#看起來與Java類似,但是還有一些Java中沒有的獨特的功能。.NET技術中用於Web Service 開發的主要工具是ASP. NET。從技術上説,ASP. net  提供了一些超出ASP以前版本的優點(例如:代碼和HTML(標準通用標記語言下的一個應用)的分離,與腳本語言相比較,對“真正”的編程語言如 C# 的支持)。
IBM的WebSphere
IBM公司是業界第一家能夠提供全面支持Web服務的電子商務基礎設施中間件的公司。通過多年來與W3C(The World Wide Web Consortium)的共同努力,包括DB2、Lotus、Tivoli 和WebSphere在內的所有IBM軟件都實現了對SOAP、WSDL、UDDI、Linux、XML(標準通用標記語言下的一個子集)、J2EE等開放技術和標準的全面支持。
IBM公司的WebSphere也是比較好的基礎架構軟件開發平台。WebSphere軟件平台及開發工具包括WebSphere Studio Application DeveloperWSAD  基於J2EE、XML 和Web服務等開放標準,並具備 IBM 在可靠性、擴展性和安全性上的主要優勢。WebSphere 是 IBM 在 Web Services策略中的核心平台,它支持所有開發、發佈、部署 Web Services應用所必需的開放標準和技術,包括 UDDI,SOAP,J2EE,WSDL,和對 XML 技術集成的增強,這使得它在全球有很多用户。
Borland的JBuilder
Borland公司在 JBuilder7中,用户可以用其Borland Web Services Kit for Java和Borland JBuilder MobileSet 3進行更快捷地開發Web Service和無線應用。這樣將使開發者能夠在同一個開發環境中輕鬆地創建和集成Web Service。新推出的JBuidler8更是針對Web Service開發更提供了方便和高效的方法。
總之,在Web Service開發上,.NET 和Java都是很好的選擇,儘管兩者都有一些需要完善的地方,但是它們還是最好的開發手段和技術。具體選擇哪種開發工具,也是仁者見仁,智者見智的問題。從根本上説,這兩種方法沒有孰優孰劣的問題,只是根據使用者對這兩種方法的掌握程度和對具體語言的偏愛程度來決定。

Web Service應用

Web service到底是什麼;在什麼情況下你應該使用Web service。
研究一下當前的應用程序開發,你會發現一個絕對的傾向:人們開始偏愛基於瀏覽器的客户端應用程序。這當然不是因為客户端能夠提供更好的用户界面,而是因為它能夠避免花在桌面應用程序發佈上的高成本。發佈桌面應用程序成本很高,一半是因為應用程序安裝和配置的問題,另一半是因為客户端和服務器之間通信的問題。
傳統的Windows客户應用程序使用DCOM來與服務器進行通信和調用遠程對象。配置好DCOM使其在一個大型的網絡中正常工作將是一個極富挑戰性的工作,同時也是許多IT工程師的噩夢。事實上,許多IT工程師寧願忍受瀏覽器所帶來的功能限制,也不願在局域網上去運行一個DCOM。在我看來,結果就是一個發佈容易,但開發難度大而且用户界面極其受限的應用程序。極端的説,就是你花了更多的資金和時間,卻開發出從用户看來功能更弱的應用程序。不信?問問你的會計師對新的基於瀏覽器的會計軟件有什麼想法:絕大多數商用程序用户希望使用更加友好的Windows用户界面。
關於客户端與服務器的通信問題,一個完美的解決方法是使用HTTP協議來通信。這是因為任何運行Web瀏覽器的機器都在使用HTTP協議。同時,當前許多防火牆也配置為只允許HTTP連接。
許多商用程序還面臨另一個問題,那就是與其他程序的互操作性。如果所有的應用程序都是使用COM或.NET語言寫的,並且都運行在Windows平台上,那就天下太平了。然而,事實上大多數商業數據仍然在大型主機上以非關係文件(VSAM)的形式存放,並由COBOL語言編寫的大型機程序訪問。而且,還有很多商用程序繼續在使用C++、JavaVisual Basic和其他各種各樣的語言編寫。除了最簡單的程序之外,所有的應用程序都需要與運行在其他異構平台上的應用程序集成並進行數據交換。這樣的任務通常都是由特殊的方法,如文件傳輸和分析,消息隊列,還有僅適用於某些情況的的API,如IBM的"高級程序到程序交流(APPC)"等來完成的。在以前,沒有一個應用程序通信標準,是獨立於平台、組建模型和編程語言的。只有通過Web Service,客户端和服務器才能夠自由的用HTTP進行通信,不論兩個程序的平台和編程語言是什麼。
什麼是Web Service
對這個問題,我們至少有兩種答案。從表面上看,Web service 就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。這就是説,你能夠用編程的方法通過Web來調用這個應用程序。我們把調用這個Web service 的應用程序叫做客户。例如,你想創建一個Web service ,它的作用是返回當前的天氣情況。那麼你可以建立一個ASP頁面,它接受郵政編碼作為查詢字符串,然後返回一個由逗號隔開的字符串,包含了當前的氣温和天氣。要調用這個ASP頁面,客户端需要發送下面的這個HTTP GET
返回的數據就應該是這樣:
這個ASP頁面就應該可以算作是Web service 了。因為它基於HTTP GET請求,暴露出了一個可以通過Web調用的API。當然,Web service 還有更多的東西。
下面是對Web service 更精確的解釋: Web services是建立可互操作分佈式應用程序的新平台。作為一個Windows程序員,你可能已經用COM或DCOM建立過基於組件的分佈式應用程序。COM是一個非常好的組件技術,但是我們也很容易舉出COM並不能滿足要求的情況。
Web service平台是一套標準,它定義了應用程序如何在Web上實現互操作性。你可以用任何你喜歡的語言,在任何你喜歡的平台上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。
新平台
Web service平台需要一套協議來實現分佈式應用程序的創建。Web service平台必須提供一套標準的類型系統,用於溝通不同平台、編程語言組件模型中的不同類型系統。在傳統的分佈式系統中,基於界面(interface)的平台提供了一些方法來描述界面、方法和參數(譯註:如COM和COBAR中的IDL語言)。同樣的,Web service平台也必須提供一種標準來描述Web service,讓客户可以得到足夠的信息來調用這個Web service。最後,我們還必須有一種方法來對這個Web service進行遠程調用。這種方法實際是一種遠程過程調用協議(RPC)。為了達到互操作性,這種RPC協議還必須與平台和編程語言無關。下面幾個小節就簡要介紹了組成Web service平台的這三個技術。
XML和XSD
可擴展的標記語言(標準通用標記語言下的一個子集)是Web service平台中表示數據的基本格式。除了易於建立和易於分析外,XML主要的優點在於它既是平台無關的,又是廠商無關的。無關性是比技術優越性更重要的:軟件廠商是不會選擇一個由競爭對手所發明的技術的。
XML解決了數據表示的問題,但它沒有定義一套標準的數據類型,更沒有説怎麼去擴展這套數據類型。例如,整形數到底代表什麼?16位,32位,還是64位?這些細節對實現互操作性都是很重要的。W3C制定的XML Schema(XSD)就是專門解決這個問題的一套標準。它定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型。Web service平台就是用XSD來作為其數據類型系統的。當你用某種語言(如VB. NET或C#)來構造一個Web service時,為了符合Web service標準,所有你使用的數據類型都必須被轉換為XSD類型。你用的工具可能已經自動幫你完成了這個轉換,但你很可能會根據你的需要修改一下轉換過程
SOAP
Web service建好以後,你或者其他人就會去調用它。簡單對象訪問協議(SOAP)提供了標準的RPC方法來調用Web service。實際上,SOAP在這裏有點用詞不當:它意味着下面的Web service是以對象的方式表示的,但事實並不一定如此:你完全可以把你的Web service寫成一系列的C函數,並仍然使用SOAP進行調用。SOAP規範定義了SOAP消息的格式,以及怎樣通過HTTP協議來使用SOAP。SOAP也是基於XML(標準通用標記語言下的一個子集)和XSD的,XML是SOAP的數據編碼方式
你會怎樣向別人介紹你的Web service有什麼功能,以及每個函數調用時的參數呢?你可能會自己寫一套文檔,你甚至可能會口頭上告訴需要使用你的Web service的人。這些非正式的方法至少都有一個嚴重的問題:當程序員坐到電腦前,想要使用你的Web service的時候,他們的工具(如Visual Studio)無法給他們提供任何幫助,因為這些工具根本就不瞭解你的Web service。
解決方法是:用機器能閲讀的方式提供一個正式的描述文檔。Web service描述語言(WSDL)就是這樣一個基於XML(標準通用標記語言下的一個子集)的語言,用於描述Web service及其函數、參數和返回值WSDL既是機器可閲讀的,又是人可閲讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應Web service的代碼。
UDDI
Universal Description, Discovery and Integration
為加速Web Service的推廣、加強Web Service的互操作能力而推出的一個計劃,基於標準的服務描述和發現的規範(specification)。
資源共享的方式由多個運作者一起以Web Service的形式運作UDDI商業註冊中心。
UDDI計劃的核心組件是UDDI商業註冊,它使用XML文檔來描述企業及其提供的Web Service。
UDDI商業註冊提供三種信息:
White Page包含地址、聯繫方法、已知的企業標識
Yellow Page包含基於標準分類法的行業類別。
Green Page包含關於該企業所提供的Web Service的技術信息,其形式可能是指向文件或URL的指針,而這些文件或URL是為服務發現機制服務的。
Web Service開發實例
  1. 利用WebService實現數據添加
  2. 利用WebService實現數據刪除
  3. 利用WebService給手機發短信 [2] 
適合使用Web Service的情況
  1. 跨越防火牆
  2. 應用程序集成;
  3. B2B集成;
  4. 軟件重用
不適合使用Web服務的情況
  1. 單機應用程序
  2. 局域網上的同構應用程序
參考資料