ASP.NET中的WebService

來源:互聯網
上載者:User

      WebService:一個完成用戶端與伺服器端通訊的技術?一個完成將SOAP映射為.NET類的技術?或者更簡單的認為是XML文檔資訊傳遞的技術?也許在剛接觸到這個的時候我們並不知道WebService究竟意味著什麼,反正只知道他是通過建立一個ASP.NET Web 服務而產生了一個*.asmx檔案,伴隨著這個檔案的還有一個是與其同名的*.cs檔案(VS2005是在AppCode檔案夾下面)。

     竟然我們不知道WebService有啥作用,就不用管他了,我們現在想用ASP建立一個頁面,兩個文字框TextBox(一個用來Input,一個用來Output),一個Button,在Input中我們輸入一個名字,然後在Output中我們列印出相應的資訊,這個很容易,需要一個Web頁面,背景處理代碼(簡單的功能用JS,複雜的功能放在後台實現),這樣很容易就實現了當點擊按鈕的時候就列印出了資訊。這個功能太容易了,但是我們就像將它共用出來,讓別人也能使用,現在有個其他的開發商,他習慣開發傳統型應用程式,他也想使用別人的共用的函數介面,他希望之前開發WEB的供應商把這個列印資訊的功能也讓他們使用一下。為了滿足這個要求我們有了以下的認識:①省掉Web頁面,傳統型應用程式可不需要什麼結果頁面。②應用程式之間的整合,不同系統不同語言下的應用程式使用同一個介面。好了,這個時候我們可能在考慮怎麼實現這樣的功能,去網上搜尋半天感覺WebService可以實作類別似的功能,可是我們不知道什麼是WebService,於是就看看CSDN或是MSDN上提供的一些案例,看來感覺也沒什麼太深奧的東西,直接就開始建個項目,開始自己的第一個WebService項目。

      VS2005—>建立網站—>ASP.NET Web 服務,在位置處寫上http://localhost/webserver,完成建立,看到AppCode下有個Service.cs檔案,看到的是一個標註了屬性[WebMethod]的一個HelloWorld函數,這個我們先屏蔽掉,然後自己寫一個列印資訊的方法:

 [WebMethod]
 public string PrintName(string name)
 {
    return "我輸入的名字是:" + name;
 }

     先運行看看,可以看到一個首頁面有個PrintName的連結,點擊一下,可以看到一個輸入框,輸入名字,點擊Invoke,可以看到XML文檔:

<?xml version="1.0" encoding="utf-8" ?>  <string xmlns=http://localhost/webserver/>我輸入的名字是:wy</string> 

     現在函數是寫好了,那如何讓其他引用程式調用呢?記得應用程式中一些封裝的方法都是編譯成DLL檔案然後共用使用,這裡也可以試試,可是發現VS05中WebService不能自動產生DLL檔案,只好自己編譯了。

     ①開啟VS05的命令列,首先需要把.asmx檔案對應為.cs檔案:

       WSDL http://ip/地址//項目名稱/*.asmx /n: 命名空間 /out 輸入檔案名稱.cs(這裡我們用PrintName.cs)

     ②編譯成DLL

       csc /t:library /r:system.web.dll /r:system.xml.dll PrintName.cs

     經過上面兩步,就可以在VS05的VC目錄下產生一個PrintName.cs檔案和一個PrintName.dll檔案,那這樣我們就可以在應用程式中調用這個DLL了。

     (1)應用程式調用:建立一個應用程式,將PrintName.dll添加到引用中去。運行效果:

   

     private NameSp.Service client;
     private void btnInvoke_Click(object sender, EventArgs e)
     {
        client = new Service();
        string output;
        output = client.PrintName(this.textBox2.Text.ToString());
        this.textBox1.Text = output;
     }

      (2)Web程式調用:建立一個網站,也同樣添加PrintName.dll,接著建立一個頁面,代碼和在上面的代碼完全一樣,效果也是一樣的。

        對照著程式再去理解WebService就會容易多了。記得在上面提到了SOAP,那SOAP又是什麼呢?在運行一開始建立的Web 服務是有沒有注意網頁中列出的下面一段XML文檔

//請求POST /webserver/Service.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/webserver/PrintName"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <PrintName xmlns="http://localhost/webserver/">
      <name>string</name> //參數
    </PrintName>
  </soap:Body>
</soap:Envelope>

//回答
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <PrintNameResponse xmlns="http://localhost/webserver/">
      <PrintNameResult>string</PrintNameResult>
    </PrintNameResponse>
  </soap:Body>
</soap:Envelope>

     上面作為請求,下面作為回答,在請求中可以看到PrintName真是函數的方法名,在回答中對應著PrintNameResult.感覺SOAP應該就是XML文檔,他將.cs檔案中的標有[WebMethod]屬性的方法轉變為了XML文檔,而在調用中又轉換為類操作對象。WebService就是完成SOAP到.NET類之間的映射。

     只是簡單的根據自己理解的記錄了下來,繼續學習不斷完善!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.