1. 程式人生 > >web service—底層呼叫本質+WSDL文件解析

web service—底層呼叫本質+WSDL文件解析

      前面兩篇部落格已經實現了兩個小例子,大致瞭解了整個流程。那麼這裡講講webservice底層呼叫的本質和wsdl文件具體的含義。

一、底層呼叫的本質

    說白了就是xml文件的生成、傳遞、解析的過程。

    客戶端生成xml檔案後通過網路傳送給伺服器,伺服器解析xml,獲取引數執行方法得到返回值,之後生成xml檔案,再傳輸給客戶端,客戶端解析xml後顯示資料。

  

二、WSDL文件解析

先看一下整體的分析圖:

  

1.介面端

   先看一個整體的文件框架

  

        文件中含有2n個message(n指的是方法個數),一個webservice操作需要從客戶端發訊息給服務端,服務端有一個響應訊息返回。所以一次web service呼叫需要兩個訊息。

 wsdl:portType節點如下:

  

       裡面含有N個operation,而且每個操作包含input和output訊息,訊息的name和wsdl:message 標籤的name屬性相對應,其實一次webservice呼叫不是呼叫方法,是傳送soap訊息(xml文件)

     對於sayHi的input訊息來說:name=“sayHi”,找到wsdl:message的name屬性相同的標籤,具體如下:

     

    傳入訊息是:sayHi元素,從wsdl:type中找到element元素name=“sayHi”,然後找到型別是sayHi的標籤,如下:

   

       所以傳入的訊息格式是:


//出現次數0-1
<sayHi>
     <arg0>字串</arg0>
</sayHi>
      傳出的訊息分析同上面,sayHiResponse從schema中查詢,如圖:

     

    返回的訊息格式如下:

<sayHiResponse>
  <return>string</return>
</sayHiResponse>
 
2.實現端

先看整體的結構:

 

     包含了binding和service的標籤,service裡面包含了webservice的服務地址,如下:

    

     標記的部分是web service釋出的服務地址

 其中binding部分包含了詳細的方法定義和傳輸風格(document,面向文件),如下:

 

三、總結

 wsdl文件描述了web service的3個方面:

  1. What:“什麼”操作
  2. How:應該“怎樣”呼叫
  3. Where:該web service的服務地址

    只要得到web service的wsdl文件就可以呼叫web service。大家可以試著分析下。其實這個文件並不難,不要被它太多的標籤嚇唬。