Webservice工作原理及執行個體

來源:互聯網
上載者:User

標籤:全球資訊網   準備   完整   訊息   desc   情況   自動   結構   img   

 

一、Web Service基本概念 Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟體服務,使用WSDL檔案進行說明,並通過UDDI進行註冊。

XML:(Extensible Markup Language)擴充型可標記語言。面向短期的臨時資料處理、面向全球資訊網絡,是Soap的基礎。

Soap:(Simple Object Access Protocol)簡單對象存取協議。是XML Web Service 的通訊協定。當使用者通過UDDI找到你的WSDL描述文檔後,他通過可以SOAP調用你建立的Web服務中的一個或多個操作。SOAP是XML文檔形式的調用方法的規範,它可以支援不同的底層介面,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 檔案是一個 XML 文檔,用於說明一組 SOAP 訊息以及如何交換這些訊息。大多數情況下由軟體自動產生和使用。

UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。在使用者能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的介面定義,還要在服務端來編製軟體,UDDI是一種根據描述文檔來引導系統尋找相應服務的機制。UDDI利用SOAP訊息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及尋找註冊資訊。它採用XML格式來封裝各種不同類型的資料,並且發送到註冊中心或者由註冊中心來返回需要的資料。 二、調用原理                                                                                       實現一個完整的Web服務包括以下步驟:

◆ Web服務提供者設計實現Web服務,並將調試正確後的Web服務通過Web服務中介者發布,並在UDDI註冊中心註冊; (發布)

◆ Web服務要求者向Web服務中介者請求特定的服務,中介者根據請求查詢UDDI註冊中心,為要求者尋找滿足請求的服務; (發現)

◆ Web服務中介者向Web服務要求者返回滿足條件的Web服務描述資訊,該描述資訊用WSDL寫成,各種支援Web服務的機器都能閱讀;(發現)

◆ 利用從Web服務中介者返回的描述資訊產生相應的SOAP訊息,發送給Web服務提供者,以實現Web服務的調用;(綁定)

◆ Web服務提供者按SOAP訊息執行相應的Web服務,並將服務結果返回給Web服務要求者。(綁定)


三、調用方式: 1. Net下採用GET/POST/SOAP方式動態調用WebService的簡易靈活方法(C#)

webservice 的調用有3種方式

1). httpget 
2). httppost
3). httpsoap

soap 的優點是 可以傳遞結構化的 資料,而前兩種不行。
btw, soap 最終也是使用 HTTP 傳送 XM

Webservice執行個體 一、使用CXF開發Web Service服務端: 每個Web Service組件需要2個部分:介面和實作類別:步驟:1、準備開發需要的jar包【apache-cxf-2.5.9下載】                                                     2、開發一個webservice業務介面,方法使用@WebService修飾。  [java] view plain copy 
  1. package com.ywx;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. @WebService  
  6. public interface HelloWorld {  
  7.     String sayHi(String name);  
  8. }  

3、寫一個這個方法的實作類別,方法也需要使用@WebService修飾,並指定其中的參數中,如下指定了所需要實現的介面、並指定服務名稱。  [java] view plain copy 
  1. package com.ywx.impl;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import javax.jws.WebService;  
  6.   
  7. import com.ywx.HelloWorld;  
  8. @WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所實現的介面以及服務名稱  
  9. public class HellowWorlds implements HelloWorld{  
  10.   
  11.     @Override  
  12.     public String sayHi(String name) {  
  13.         return name+"您好!現在時間是:"+new Date();  
  14.     }  
  15.   
  16. }  


4、暴露Web Service的函數,運行函數暴露Web Service:  [java] view plain copy 
  1. package com.ywx.lee;  
  2.   
  3. import javax.xml.ws.Endpoint;  
  4.   
  5. import com.ywx.HelloWorld;  
  6. import com.ywx.impl.HellowWorlds;  
  7.   
  8. public class ServiceMain {  
  9.     public static void main(String args[]){  
  10.         HelloWorld hw = new HellowWorlds();  
  11.         //調用Endpoint的publish方法發布Web Service  
  12.         Endpoint.publish("192.168.1.7/vashon", hw);  
  13.         System.out.println("Web Service暴露成功!");  
  14.     }  
  15. }  

然後運行瀏覽器,輸入:http://192.168.1.7/vashon?wsdl 查看結果,如果成功產生如下wsdl文檔則表示Web Service暴露成功。  二、使用CXF開發Web Service用戶端: 步驟: 1、建立一個用戶端工程2、調用CXF提供的wsdl2java工具或使用eclipse/myeclipse的new Web Service產生用戶端代碼(這裡使用第二種方式):                                              輸入wsdl連結:                                              點擊next:                                                                                                       選擇產生用戶端代碼的位置:                                                  點擊finish,產生用戶端代碼如下:                                                                               3、在用戶端寫測試類別測試:  [java] view plain copy 
  1. package com.ywx.test;  
  2.   
  3. import java.rmi.RemoteException;  
  4.   
  5. import com.ywx.HelloWorldProxy;  
  6.   
  7.   
  8. public class TestService {  
  9.     public static void main(String args[]){  
  10.         HelloWorldProxy h = new HelloWorldProxy();  
  11.         try {  
  12.             String s = h.sayHi("yangwenxue");  
  13.             System.out.println("調webservice:"+s);  
  14.         } catch (RemoteException e) {  
  15.             e.printStackTrace();  
  16.         }  
  17.     }  
  18. }  

運行結果(傳入一個參數,調用Web Service返回的字串結果如下):  其調用產生的格式已經有服務端定義好了,看上面貼出來的代碼或者下面的說明:  Web Service服務端和用戶端工程結果如下:                    

 

Webservice工作原理及執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.