Webservice實現及原理


一、什么是WebService?為什么需要WebService?

WebService是兩個計算機之間通訊(交談)的技術,網絡中一台計算機想要調用另一台計算機的方法時,此時可以需要WebService。

很火的SOA、雲計算在技術層面上都是WebService

二、自己做一個WebService

例子:

服務器端添加一個ashx頁面代碼如下

  public void ProcessRequest(HttpContext context)

        {

            context.Response.ContentType = "text/plain";

            try

            {

                int Number1 = int.Parse(context.Request["number1"]);

                int Number2 = int.Parse(context.Request["number2"]);

                int summer = Number1 + Number2;

                context.Response.Write(summer);

            }

            catch { }

        }

 

客戶端調用服務器端的的方法代碼如下:

WebClient wc = new WebClient();

            wc.Encoding = Encoding.UTF8;

            string s = wc.DownloadString("http://localhost:6563/ShowSummer.ashx?number1=" +

                textBox1.Text + "&number2=" + textBox2.Text);

            textBox3.Text = s;

        }

顯示的結果:

                       

客戶端調用服務端的方法用到了WebClient.

WebClient類提供用於將數據發送到由 URI 標識的資源及從這樣的資源接收數據的常用方法。

做了一個簡單的自己編寫Webservice小例子,但是由於服務端的方法很多,參數也各不一樣。沒有解決統一的數據格式和自描述。所以客戶端在調用起來很麻煩,為了解決這些問題引入了WebService

三、WebService原理

規定請求數據格式是,函數名為根節點,參數列表為子節點:
WebService中所有的請求、返回都是XML格式,所有語言都支持XML格式。

WSDL:描述了WebService提供了哪些方法。

SOAP協議:描述了向服務器發送什么格式的調用數據,以及服務器會返回什么格式的數據。

規定所有的方法頁面在請求后加wsdl這個參數的時候返回一個方法列表、方法參數、方法返回值的xml:

< operations>

<operation Name="Add">

       <input>

          <num1 type="int"/>

          <num2 type="int"/>

      </input >

       <output>

           <ret type="int"/>

        </output>

</ operation >

</operations>

這樣服務方法就自描述了,用wsdl參數訪問就可以得知這個服務提供什么方法、方法的參數是什么了。

WSDL:對WebService能夠提供的服務進行描述的協議。服務器只有返回這個格式的數據,代碼生成器才能根據WSDL生成代碼。

請求、返回的XML數據格式(有哪些節點、節點的名字等等)WebService 用SOAP協議進行規定,方法描述信息XML用WSDL協議規定。WebService技術是與語言、平台無關,因此.net可以訪問java編寫的WebService、java也可以訪問.net編寫的webservice,php、python等各種語言也幾乎都支持webservice,因此可以說webservice可以實現跨語言方法調用。

但是如果自己構建請求、返回xml,解析xml請求,自己負責方法描述信息更新是很麻煩的,.net就提供了簡化開發WebService、使用WebService的技術,簡單的讓人不敢相信

四、引用WebService做一個實例

服務器端添加一個Web服務,增加一個Add方法

 

客戶端添加Webservice引用

 

 

 

 

運行結果如上

五、總結WebService

l       1、服務器端:就想寫普通方法一樣,不需要處理請求、響應。

l       2、客戶端添加對asmx的“服務器引用”,然后就可以調用***SoapClient類中的方法。就“好像”直接調用了服務端的方法。

l       添加服務引用的時候工具讀取asmx的WSDL自動生成了ServiceReference1中的類,這些類幫我們來拼Http請求,並且把Http返回值拆成函數的返回。

l       服務器端新建“Web服務”(asmx),在遠端可以調用的方法上標注[WebMethod]。

l       客戶端“添加服務引用”,填寫asmx的地址。然后就可以調用Service References下自動生成的***SoapClient類了。

l       用WebService的時候如果服務端的接口定義發生變化,則需要重新添加對服務端的引用,因為Service References中的類是工具讀取WSDL定義自動生成的。在服務引用上點擊右鍵,選擇“更新服務引用”。如果只是修改了WebService內部實現,而接口沒變,則不需要“更新服務引用”,因為WSDL沒變,Soap沒變。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM