原文:點擊打開鏈接
問題?WebService機制和使用
一.WebService是什麼?
定義:Web服務(Web Services)是一段位於Internet上的業務邏輯,它是基於TCP/IP的創建出來的服務,基於標準的Internet協議(如HTTP或SMTP)訪問的。webservice最基本的一個目的就是在網絡上提供資源給各個不同平臺的不同應用系統的協同工作能力,WebService並不是什麼神祕的東西,它就是一個可以遠程調用的類,或者說是組件,又或者說是接口,我們說接口比較正式點兒吧。 把你本地的功能開放出去供別人調用,你的信息給別人共享。網絡上這樣的例子很多,比如說webService天氣預報(點擊打開鏈接),以Microsoft,IBM,Oracle,HP,BEA,SAP等爲首的計算機業巨頭們無一例外地將自己的軟件產品/解決方案全面支持WebServices,致力於推廣Web services的全面應用。
Web Service(WEB服務)能夠快捷和方便地綜合結合各種系統、商務和任何應用平臺。利用最新的Web Service 標準能夠使任何軟件系統和系統之間的應用互通互聯,方便,而且更加廉價。這樣就會節約成本而加大了平臺之間的聯繫性。當然這樣的webService服務有收費的,也有免費的。天下畢竟沒有免費的午餐,別人爲啥要開着服務器,拿着成本給你提供免費服務呢?是吧
二.WebService有什麼作用?
1. 跨越防火牆的通信
客戶端和服務器端之間通信都會有防火牆或者代理服務器。傳統的實現互相通信的方法是在分佈式對象,如DCOM、CORBA之間進行相互的遠程過程調用(TCP/IP),這樣的訪問在internet上訪問並沒有得到很好的體現,而且有些訪問還會受到防火牆的攔截。而Web服務使用基於XML消息處理作爲基本的數據通信方式,應用程序可以使用HTTP和XML消息等標準在基於Web的應用程序之間交換信息,從而跨越防火牆。
2. 應用程序集成
企業裏經常要把不同語言寫成的在不同平臺上運行的各種程序集成起來。大型公司常常有很多部門,每個部門都使用最適合自己特定需要的應用程序和平臺,所以可以利用webservice將各種平臺聯繫在一起。
3.B2B的集成
跨公司的商務交易集成通常叫做B2B集成。各企業可以採用Web服務與其他企業進行通信。通過Web服務能夠將數據及應用程序的集成擴展到公司的防火牆之外。使公司能夠與其夥伴、供應商、發行商和客戶共享數據和商業過程,從而加強企業之間的合作關係。
4. 軟件複用
軟件複用是在軟件開發中避免重複勞動的解決方案。Web服務實現了業務級別的軟件複用,例如在B2B的集成中,各企業之間通過互相調用Web服務,就可以實現信息的共享和複用。
5.缺點
(1)臃腫的註冊與發現機制
(2)低效的XML序列化手段
(3)開銷相對較高的HTTP遠程通信
(4)複雜的部署與維護手段
這些問題都會導致WebService難以滿足大型網站對系統高性能、高可用、易部署、易維護的要求。根據需求來使用它。
三.WebService運行機制?
1.WebService三要素:
(1)UDDI:(Universal Description Discovery and Integration)
UDDI始於2000年,由IBM,Microsoft和其他33家公司創立。用來管理,分發,查詢webService 。用戶可以自 己註冊發佈WebService調用。
程序開發人員通過UDDI機制查找分佈在互聯網上的Web Service,在獲取其WSDL文件後,就可以在自己的程序中以SOAP調用的格式請求相應的服務了。
(2)WSDL:(WebServices Description Language)用來描述如何訪問具體的WebService服務(在這裏的wsdl文件就是基於xml文檔數據交互的),說明如何與Web服務通信的XML語言。
注意這一步驟在後面會廣泛使用:一些最新的開發工具既能根據你的Web services生成WSDL文檔,又能導入WSDL文檔,生成調用相應Webservices的代碼。
Service:用於聚合一組服務訪問點構成一個Web Services的定義。(設置service服務)
Port:爲Binding(綁定)制定一個地址,從而定義一個服務訪問點。(調用接口的設置)
Binding:爲特定PortType(端口類型)定義的操作和消息指派具體的傳輸協議和數據格式規範。(綁定)
PortType:一個或多個端點支持的操作的抽象集合。每個操作一般會引用一條輸入消息和一條輸出消息。
Message:代表所傳輸數據的抽象定義。消息由一些邏輯片斷構成,每個邏輯片斷分別與某個類型系統中的定義相關聯。
Type:提供用於描述所交換消息的數據類型定義(string、int);
(3)SOAP:(Simple Object Access Protocol)基於HTTP協議,採用XML格式,用來傳遞信息的格式,WebService的請求與響應。
SOAP它包括四個部分:
SOAP封裝(envelop):封裝定義了一個描述消息中的內容是什麼,是誰發送的,誰應當接受並處理它,以及如何處理它們的框架;
SOAP編碼規則:用於表示應用程序需要使用的數據類型的實例;
SOAP RPC表示(RPC representation):表示遠程過程調用和應答的協定;
SOAP綁定(binding):使用底層協議交換信息。
SAOP的主要目標是:可擴展性和簡單性
SOAP定義了一種在HTTP客戶端和服務器端傳輸命令和參數的機制。SOAP不關心什麼操作系統、編程語言或在服務器端或客戶端使用的對象模型:除了需要使用HTTP傳輸外,與其他無關。SAOP只做客戶端發送一個請求給服務器,調用相應的對象,然後服務器返回結果。
注意:SOAP1.0和1.2的區別:SOAP 1.2 帶來的變化進一步把 Web 服務編織到 Internet
的大網中。變化之一是 GET 方法的引入。GET 之所以重要是因爲它支持各種優化。這一點已經過 Web 自身的驗證,它廣泛地使用 GET 方法。通過本技巧可以進一步瞭解這一點。
四.WebService的如何使用
Eg1:
做一個簡單的WebService例子:調用第三方的webservice服務(http://www.webxml.com.cn/zh_cn/index.aspx)
IE瀏覽器可以將這個WSDL服務描述文檔下下來(http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl)可以通過它生成本地客戶端調用代碼,從而調用它的服務。
幾個命令:
-s解析xml說明書wsdl;自動生成客戶端調用代碼。. 當前路徑
-p 修改生成的路徑,默認路徑是命名空間倒序
-d 只生成class
wsimport,這個是jdk爲我們提供的:
我們先執行以下網上的wsdl命令:
這樣它會報錯,因爲有幾個它識別不了,把wsdl文檔下載下來,把裏面識別不了的刪除,然後再執行以下命令。
它就會在本地生成Java客戶端的代碼(因爲是JDK提供的,肯定生成的是java代碼)
新建一個java項目,把這個cn文件夾(裏面有class文件可以全部刪除。那是編譯出現的)考到src下。
寫一個Test1測試類調用服務:
結果:
成功調用,相反傳遞英文過去,返回中文喔,因爲這個服務是雙向翻譯。可以試一試官網的其他service服務,方法一樣得。