歡迎您光臨本站 註冊首頁

WebService的基本概念

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術.

這種技術允許網路上的所有系統進行交互.隨著技術的發展,一個Web服務可以包含額外的指定功能並且可以在多個B2B應用中協作通訊. Web服務可以理解請求中上下文的關係,並且在每一個特定的情況下產生動態的結果.這些服務會根據用戶的身份,地點以及產生請求的原因來改變不同的處理,用以產生一個唯一的,定製的方案.這種協作機制對那些只對最終結果有興趣的用戶來說,是完全透明的.

UDDI

在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的介面定義,還要在服務端來編製軟體.,我們需要一種方法來發布我們的Web服務. UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目.UDDI 項目中的成員可以通過UDDI Business Registry (UBR) 來操作Web服務的調用,UBR是一個全球性的服務. Web服務供應商可以在UBR中描述並且註冊他們的服務. 用戶可以在UBR中查找並定位那些他們需要的服務. UDDI是一種根據描述文檔來引導系統查找相應服務的機制. UDDI包含標準的「白皮書」類型的商業查詢方式, 「黃皮書」類型的局部查找,以及 「綠皮書」類型的服務類型查找. UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查找註冊信息.它採用XML格式來封裝各種不同類型的數據,並且發送到註冊中心或者由註冊中心來返回需要的數據.

WSDL

對於商業用戶來說,要找到一個自己需要使用的服務,他必須知道如何來調用. WSDL (Web Services Description Language) 規範是一個描述介面,語義以及Web服務為了響應請求需要經常處理的工作的XML文檔.這將使簡單地服務方便,快速地被描述和記錄.以下是一個WSDL的樣例:

<?xml version="1.0"?>

<definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>

<schema targetNamespace=http://example.com/stockquote.xsd xmlns="http://www.w3.org/2000/10/XMLSchema">

<element name="TradePriceRequest">

<complexType>

<all>

<element name="tickerSymbol" type="string"/>

</all>

</complexType>

</element>

<element name="TradePrice">

<complexType>

<all>

<element name="price" type="float"/>

</all>

</complexType>

</element>

</schema>

</types>

<message name="GetLastTradePriceInput">

<part name="body" element="xsd1:TradePriceRequest"/>

</message>

<message name="GetLastTradePriceOutput">

<part name="body" element="xsd1:TradePrice"/>

</message>

<portType name="StockQuotePortType">

<operation name="GetLastTradePrice">

<input message="tns:GetLastTradePriceInput"/>

<output message="tns:GetLastTradePriceOutput"/>

</operation>

</portType>

<binding name="StockQuoteSoapBinding"

type="tns:StockQuotePortType">

<soap:binding style="document"

transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="GetLastTradePrice">

<soap:operation

soapAction="http://example.com/GetLastTradePrice"/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

</binding>

<service name="StockQuoteService">

<documentation>My first service</documentation>

<port name="StockQuotePort" binding="tns:StockQuoteBinding">

<soap:address location="http://example.com/stockquote"/>

</port>

</service>

</definitions>

它包含了以下的關鍵信息: 消息的描述和格式定義可以通過XML文檔中的<types>和<message> 標記來傳送. <portType> 標記中表示了消息傳送機制. (e.g. request-only, request-response, response-only) . <binding> 標記指定了編碼的規範 . <service> 標記中表示服務所處的位置 (URL). WSDL在UDDI中總是作為一個介面描述文檔.UDDI是一個通用的用來註冊WSDL規範的地方,UDDI的規範並不限制任何類型或者格式描述文檔.這些文檔可能是一個WSDL文檔,或者是一個正規的包含導向文檔的Web頁面,也可能只是一個包含聯繫信息的電子郵件地址.現在Java提供了一個 Java API for WSDL (JWSDL)規範.它提供了一套能快速處理WSDL文檔的方法,並且不用直接對XML文檔進行操作,它會比JAXP更方便,更快速.

SOAP

當商業用戶通過UDDI找到你的WSDL描述文檔后,他通過可以Simple Object Access Protocol (SOAP) 調用你建立的Web服務中的一個或多個操作. SOAP是XML文檔形式的調用商業方法的規範,它可以支持不同的底層介面,象HTTP(S)或者SMTP. 之使用XML是它的獨立於編程語言,良好的可擴展性以及強大的工業支持.之使用HTTP是幾乎所有的網路系統都可以用這種協議來通信,由於它是一種簡單協議,可以與任何系統結合,還有一個原因就是它可以利用80埠來穿越過防火牆. SOAP的強大是它簡單.SOAP是一種輕量級的,非常容易理解的技術,並且很容易實現.它有工業支持,可以從各主要的電子商務平台供應商那裡獲得.從技術角度來看,SOAP詳細指明了如何響應不同的請求以及如何對參數編碼.一個SOAP封裝了可選的頭信息和正文,並且通常使用HTTP POST方法來傳送到一個HTTP 伺服器,當然其他方法也是可以的,例如SMTP.SOAP同時支持消息傳送和遠程過程調用.以下是一個SOAP請求.

POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com

Content-Type: text/xml; charset="utf-8"

Content-Length: nnnn

SOAPAction: "Some-URI" <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

<SOAP-ENV:Header>

<t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">

5

</t:Transaction>

</SOAP-ENV:Header>

<SOAP-ENV:Body>

<m:GetLastTradePrice xmlns:m="Some-URI">

<symbol>SUNW</symbol>

</m:GetLastTradePrice>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

JAXR

為了支持UDDI在Java平台上的功能,Java APIs for XML Registries (JAXR)允許開發者來訪問註冊中心. 值得注意的是,JAXR並不是建立Web服務必需的,你可以利用其他常用的XML APIs來直接集成這些協議. JAXR是一個方便的API,它提供了Java API來發布,查找以及編輯那些註冊信息.它的重點在於基於XML的B2B應用,複雜的地址本查找以及對XML消息訂閱的支持等Web服務. 它也可以用來訪問其他類型的註冊中心,象ebXML註冊中心.這些對Web服務的註冊信息進行的操作,可以使用當前的一些Web服務工具來完成(例如第三方的SOAP和ebXML消息工具).另外,當JAXP提供了一致並具有針對性的API來完成這些操作,這將使開發變得更加容易.

JAX/RPC

為了使開發人員專註於建立象SOAP那樣的基於XML的請求,JCP正在開發基於RPC (JAX/RPC) 的Java API.JAX/RPC是用來發送和接收方法調用請求的,它基於XML協議,象SOAP,或者其他的象XMLP (XML Protocol,要了解更多可以參考http://www.w3.org/2000/xp/).JAX/RPC使你不用再關注這些協議的規範,使應用的開發更快速.不久,開發人員就不用直接以XML表示方法調用了.目前有很多第三方實現了SOAP,開發人員可以在不同的層次上調用SOAP,並選擇使用哪一種.將來,JAX/RPC會取代這些APIs並提供一個統一的介面來構造以及處理SOAP RPC請求.在接收一個從商業夥伴那裡過來的SOAP請求的時候,一個Java servlet用JAX/RPC來接收這個基於XML的請求.一旦接收到請求后,servlet會調用商務方法,並且把結果回復給商業夥伴.

JAXM

當從商業合作夥伴那裡接收一個Web服務的請求時,我們需要Java API實現一個Servlet來處理ebXML消息,就象我們用JAX/RPC來處理SOAP請求一樣. Java API for XML Messaging (JAXM) 是集成XML消息標準(象ebXML消息或者SOAP消息)的規範. 這個API是用來推動XML消息處理的,它檢測那些預定單的消息格式以及約束.它控制了所有的消息封裝機制,用一種直觀的方式分割了消息中的信息,象路由信息,發貨單.這樣,開發人員只要關注消息的有效負載,而不用去擔心那些消息的重複處理.目前的開發人員用JAXP來實現JAXM將要提供的功能,JAXM將會提供一套非常具有針對性的API來處理基於XML的消息傳送.這將大大簡化開發人員的代碼,並使它們具有統一的介面. JAXM和JAX/RPC的差別在於處理消息導向的中間件以及遠程過程調用的不同.JAXM注重於消息導向,而JAX/RPC是用來完成遠程過程調用的.

請注意,在JAXM 和 JAX/RPC技術成熟之前,開發人員還是依賴於第三方的SOAP APIs,象Apache SOAP, IdooXOAP, 以及 GLUE.當JAXM 和 JAX/RPC正式發布后,它將為當前不同的SOAP和ebXML消息提供統一的介面.就象JDBC位多種不同的資料庫提供統一的介面.

JAXB

XML綁定技術可以把XML文檔和Java對象進行自由轉換. 用JAXB,你可以在後台的EJB層,把XML文檔轉換成Java對象.同樣你也可以把從EJB中取出的Java對象轉換成XML文檔返回給用戶. JAXB介面提供了比SAX和DOM更高級的方法來處理XML文檔.它提供的特性可以在XML數據和Java類之間互相映射,提供了一個簡單的方法來轉換XML數據.它比逐個解析標記更簡單.


[火星人 ] WebService的基本概念已經有1136次圍觀

http://coctec.com/docs/java/show-post-60842.html