Web Services基礎

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, 什麼是WSDL?

WSDL (Web Service Description Language)Web服務器描述語言是用XML文檔來描述Web服務的標準,是Web服務的接口定義語言,由Ariba、Intel、IBM、MS等 共同提出,通過WSDL,可描述Web服務的三個基本屬性:

·服務做些什麼——服務所提供的操作(方法)

·如何訪問服務——和服務交互的數據格式以及必要協議

·服務位於何處——協議相關的地址,如URL

WSDL文檔以端口集合的形式來描述Web服務,WSDL 服務描述包含對一組操作和消息的一個抽象定義,綁定到這些操作和消息的一個具體協議,和這個綁定的一個網絡端點規範。

4, 什麼是WSDD?

WSDD就是WEB服務分佈描述(Web Service Deployment Descriptor), 它定義了WEB服務的接口,如服務名、提供的方法、方法的參數等信息。

5, 什麼是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)。


6, 什麼是Axis?

Axis本質上就是一個SOAP引擎(Apache Axis is an implementation of the SOAP),提供創建服務器端、客戶端和網關SOAP操作的基本框架。但Axis並不完全是一個SOAP引擎,它還包括:

是一個獨立的SOAP服務器。
是一個嵌入Servlet引擎(例如Tomcat)的服務器。
支持WSDL。
提供轉化WSDL爲Java類的工具。
提供例子程序。
提供TCP/IP數據包監視工具。

Apache Axis is an Open Source SOAP server and client. SOAP is a mechanism for inter-application communication between systems written in arbitrary languages, across the Internet. SOAP usually exchanges messages over HTTP: the client POSTs a SOAP request, and receives either an HTTP success code and a SOAP response or an HTTP error code.

SOAP messages are XML messages. These messages exchange structured information between SOAP systems. Messages consist of one or more SOAP elements inside an envelope, Headers and the SOAP Body. SOAP has two syntaxes for describing the data in these elements. Axis handles the magic of converting Java objects to SOAP data when it sends it over the wire or receives results. SOAP Faults are sent by the server when something goes wrong; Axis converts these to Java exceptions.

SOAP is intended to link disparate systems. It is not a mechanism to tightly bind Java programs written by the same team together. It can bind Java programs together, but not as tightly as RMI or Corba. (If you try sending many Java objects that RMI would happily serialize, you will be disappointed at how badly Axis fails. This is by design: if Axis copied RMI and serialized Java objects to byte streams, you would be stuck to a particular version of Java everywhere.)

Axis implements the JAX-RPC API, one of the standard ways to program Java services.

7, AXIS的幾種服務類型:

AXIS有四種service styles,分別是:RPC, Document, Wrapped, 和Message。最常用的就是RPC和Message。

RPC
(soap的 rpc/literal mode)在AXIS中是一個默認選項。當你部署的時候使用下列兩種方式: 或則 ,它遵循SOAP RPC和編碼規則。每個RPC都包括一個表示名稱的外部接點和一些表示參數的內部接點。AXIS會根據規則將一個XML(WSDL文件)文件轉化成一個 JAVA對象,並對對想賦上在文件中描述的值。也可以根據規則將一個JAVA對象轉化成XML文件。

Document
適合於老的XML schema。

Wrapped
和DOCUMENT一樣,適合於老的XML schema。

在大多書情況下,你不許要擔心是DOCUMENT服務還是WRAPPED服務。

Message(soap的 document/literal mode
以這種方式部署的話,會使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服務器實現中要求直接訪問傳輸層等等

8、java類與wsdl相互生成工具:

Axis提供了”WSDL2Java”工具,可以利用wsdl描述來產生服務的Java代理和框架(proxy and skeletons)。

Axis提供了”Java2WSDL”工具,可以由java類生成wsdl文件。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章