1, 什么是 Web 服務?
Web 是使應用程序可以以與平臺和編程語言無關的方式進行相互通信的一項技術。Web 服務是一個軟件接口,它描述了一組可以在網絡上通過標準化的 XML 消息傳遞訪問的操作。它使用基于 XML 語言的協議來描述要執行的操作或者要與另一個 Web 服務交換的數據。一組以這種方式交互的 Web 服務在面向服務的體系結構(Service-Oriented Architecture,SOA)中定義了特殊的 Web 服務應用程序。
2, 什么是SOAP?
SOAP(Simple Object Access Protocol )簡單對象訪問協議是在分散或分布式的環境中交換信息并執行遠程過程調用的輕量級協議,是一個基于XML的協議。使用SOAP,不用考慮任何特定的傳輸協議(最常用的還是HTTP協議),可以允許任何類型的對象或代碼,在任何平臺上,以任何一種語言相互通信。
SOAP包括四個部分:SOAP封裝(envelop),封裝定義了一個描述消息中的內容是什么,是誰發送的,誰應當接受并處理它以及如何處理它們的框架;SOAP編碼規則(encoding rules),用于表示應用程序需要使用的數據類型的實例;SOAP RPC表示(RPC representation),表示遠程過程調用和應答的協定;SOAP綁定(binding),使用底層協議交換信息。
應用中比較關注的是envelop,由一個或多個Header和一個Body組成。
3, 什么是Axis?
Axis本質上就是一個SOAP引擎(Apache Axis is an implementation of the SOAP),提供創建服務器端、客戶端和網關SOAP操作的基本框架。但Axis并不完全是一個SOAP引擎,它還包括:
是一個獨立的SOAP服務器。
是一個嵌入Servlet引擎(例如Tomcat)的服務器。
支持WSDL。
提供轉化WSDL為Java類的工具。
提供例子程序。
提供TCP/IP數據包監視工具。
4, Axis相比Soap v2的優點:
Axis是第三代Apache SOAP的實現,從2000年起,SOAP v2開發小組開始討論如何讓Axis更加靈活、可配置,以及能夠處理SOAP和來自W3C的各種XML標準。通過不斷地討論和代碼編寫,Axis目前相比SOAP V2取得了如下成果:
速度提高。 Axis通過基于事件的SAX對XML文檔進行處理,從而在速度和效率上比Apache SOAP有所提高。
靈活性提高。
穩定性提高。
提供面向組件的部署。
提供一個簡潔的傳輸抽象框架。其核心引擎完全于傳輸方式獨立。從而使基于何種協議傳輸的選擇更加靈活。
支持WSDL。包括WSDL和客戶端代碼生成等。
5, 什么是WSDL?
WSDL(Web Service Description Language)Web服務器描述語言是用XML文檔來描述Web服務的標準,是Web服務的接口定義語言,由Ariba、Intel、IBM、MS等共同提出,通過WSDL,可描述Web服務的三個基本屬性:
·服務做些什么——服務所提供的操作(方法)
·如何訪問服務——和服務交互的數據格式以及必要協議
·服務位于何處——協議相關的地址,如URL
WSDL文檔以端口集合的形式來描述Web服務,WSDL 服務描述包含對一組操作和消息的一個抽象定義,綁定到這些操作和消息的一個具體協議,和這個綁定的一個網絡端點規范。
6, 什么是WSDD?
WSDD就是WEB服務分布描述(Web Service Deployment Descriptor), 它定義了WEB服務的接口,如服務名、提供的方法、方法的參數等信息。
7, 什么是UDDI?
UDDI就是統一描述、發現和集成(Universal Description, Discovery, and Integration)。UDDI用于集中存放和查找WSDL描述文件,起著目錄服務器的作用。
Web 服務中的角色、操作和構件:
服務提供者。從企業的角度看,這是服務的所有者。從體系結構的角度看,這是托管訪問服務的平臺。
服務請求者。從企業的角度看,這是要求滿足特定功能的企業。從體系結構的角度看,這是尋找并調用服務,或啟動與服務的交互的應用程序。服務請求者角色可以由瀏覽器來擔當,由人或無用戶界面的程序(例如,另外一個 Web 服務)來控制它。
服務注冊中心。這是可搜索的服務描述注冊中心,服務提供者在此發布他們的服務描述。在靜態綁定開發或動態綁定執行期間,服務請求者查找服務并獲得服務的綁定信息(在服務描述中)。對于靜態綁定的服務請求者,服務注冊中心是體系結構中的可選角色,因為服務提供者可以把描述直接發送給服務請求者。同樣,服務請求者可以從服務注冊中心以外的其它來源得到服務描述,例如本地文件、FTP 站點、Web 站點、廣告和服務發現(Advertisement and Discovery of Services,ADS)或發現 Web 服務(Discovery of Web Services,DISCO)。
8, AXIS的幾種服務類型:
AXIS有四種service styles,分別是:RPC, Document, Wrapped, 和Message。最常用的就是RPC和Message。
RPC:在AXIS中是一個默認選項。當你部署的時候使用下列兩種方式: 或則 ,它遵循SOAP RPC和編碼規則。每個RPC都包括一個表示名稱的外部接點和一些表示參數的內部接點。AXIS會根據規則將一個XML(WSDL文件)文件轉化成一個JAVA對象,并對對想賦上在文件中描述的值。也可以根據規則將一個JAVA對象轉化成XML文件。
Document
適合于老的XML schema。
Wrapped
和DOCUMENT一樣,適合于老的XML schema。
在大多書情況下,你不許要擔心是DOCUMENT服務還是WRAPPED服務。
Message
以這種方式部署的話,會使AXIS失去意義,它使你的代碼真正的用XML形式,而不需要轉化成JAVA對象。以這種方式部署的有以下四種服務方法:
public Element [] method(Element [] bodies);
public SOAPBodyElement [] method (SOAPBodyElement [] bodies);
public Document method(Document body);
public void method(SOAPEnvelope req, SOAPEnvelope resp);
幾種服務類型的主要區別:
基于RPC(遠程過程調用)方式,這也是Web服務最常用的方式。面向消息/文檔的的類型跟RPC不同的是它提供了一個更底層的抽象,要求更多的編程工作。客戶端可以傳入任何的XML文檔,得到的響應不一定是SOAPEnvelope,可以返回任何它所需要的東西,甚至不返回。雖然這對開發者來說非常的靈活,但是這種通訊類型在實際的應用中并不常見。面向消息/文檔的Web服務主要適合于下面幾種情況,比如批量處理,基于表單的數據導入,有需要返回非XML數據時,Web服務器實現中要求直接訪問傳輸層等等
9、java類與wsdl相互生成工具:
Axis提供了”WSDL2Java”工具,可以利用wsdl描述來產生服務的Java代理和框架(proxy and skeletons)。
Axis提供了”Java2WSDL”工具,可以由java類生成wsdl文件。