asp.net web services

來源:互聯網
上載者:User
現在Internet正在不斷地發展著,在互連網應用剛開始的時候,我們瀏覽的網頁只是靜態,不可互動的。而現在隨著技術的日益發展,將提供給網頁瀏覽者一個可程式化的Web 網站。這些網站將在組織、應用、服務、驅動上更加緊密的結合在一起,這些網站將通過一些應用軟體直接連接到另一個Web 網站,這些可程式化的Web 網站相比傳統的web網站來說,將變得更加能重複使用,也更加智能化!

  .net平台給我們提供了一種運行環境,即公用語言運行環境(CLR,Common Language Runtime)。對 CLR來說,它提供了一種內建機制來建立一個可程式化的網站,、對於Web 程式開發人員和VB 程式員來說,這將是一致、熟悉的。這種模型是可以重複使用,也可以再擴充。 它包含了開放的Internet標準(HTTP, XML, SOAP, SDL)。以便它能被網頁瀏覽者訪問。
  ASP.NET 使用.asmx 檔案來對Web Services的支援。.asmx 檔案和.aspx檔案一樣都屬於文字檔。它包含在.aspx檔案之中,成為ASP.NET應用程式的一部分。

  下面我們將舉一個簡單的例子來介紹.asmx檔案,我們還是從"Hello,World"這個經典的例子說起,代碼如下:

<!-- 檔案名稱:webservice\sisam.asmx -->

web教程網

<%@ WebService Language="VB" Class="HelloWorld" %>
Imports System.Web.Services
Public Class HelloWorld :Inherits WebService
Public Function <WebMethod( )> SayHelloWorld( ) As String
Return("Hello World")
End Function
End Class

 說明:

  1.編碼最開始必須進行WebService聲明,從而定義這個檔案為一個Web Service。而且,在同一行中設定好程式設計語言的類型。

  2.然後,引入名字空間System.Web.Services。注意,這個名字空間屬於最基本的元素,必須要包含它。

  3.接著,聲明service中的功能模組,也就是類別模組,這裡的類名叫HelloWorld。這個類來源於基類WebService,而且應該是public類型。

  4.最後,定義service的可存取方法。在表示方法的符號前面,要設定好自訂屬性。對應於C#語言,屬性值就是[WebMethod];對應於VB,就是。如果沒有設定這個屬性,那麼這個方法就不能從service中訪問。一個局部應用可以使用任何的public類型的類,但是只有具備[WebMethod]的類才可以通過SOAP被遠程地訪問。

  當對service的請求發生時,.asmx檔案將自動地被ASP.NET運行環境所編譯。隨後的請求就可以由緩衝的先行編譯類型對象執行。

web教程網

  為了測試編寫好的代碼,我們需用一個支援ASP.NET的Web伺服器。假設這個Web伺服器的名稱叫做server1,其上有一個虛擬目錄test。請跟隨下面步驟開始測試:

  1.將代碼儲存為HelloWorld.asmx

  2.放到Web伺服器Foo的虛擬目錄Bar下

  3.開啟Internet Explorer5,在地址欄輸入http://server1/test/HelloWorld.asmx

  這時,我們將看到關於這個Web Service的公用方法-也就是那些標記為WebMethod屬性的字元,並得知調用這些方法可以使用的協議,比如SOAP或者HTTP GET。

  在Internet Explorer的地址欄中輸入http://Foo/Bar/HelloWorld.asmx?SDL後,將產生基於服務描述語言(Service Description Language :SDL)文法的具備相同資訊的XML檔案。這個SDL檔案非常重要,用戶端就是使用它來訪問service。

  從用戶端進行訪問:

  除了允許開發人員使用的建立Web Services的技術以外,Microsoft的.NET架構給用戶端提供了一套訪問並使用Web Services的精緻且高深的工具和代碼。由於Web Services是基於如簡易物件存取通訊協定 (SOAP)SOAP(Simple Object Access Protocol)和HTTP這樣的開放協議標準的,從而,我們就可以使用這種用戶端技術使用非ASP.NET的Web Services。當然,這也需用高水平地合成ASP.NET Web Services和這種用戶端技術。

網路應用

  SDK中有一個工具叫做WebServiceUtil.exe,我們可以使用它來下載一個Web Services的SDL描述語言,並建立表達這個Service的代理類。比如,當我們輸入以下命令,就可以建立一個叫做HelloWorld.cs的代理類:

   WebServiceUtil /c:proxy /pa:http://someDomain.com/someFolder/HelloWorld.asmx?SDL 

  這個類看起來與前面建立的類非常相似。它包含一個方法SayHelloWorld,該方法返回一個字串。將這個代理類編譯到一個應用程式中,然後調用這個代理類的方法,結果就是:通過HTTP,這個代理類封裝SOAP請求,然後接收SOAP編碼響應,最後彙集成為一個字串。

  請看關於Web Service的一個用戶端常式:

  用戶端訪問的檔案:clint.aspx,內容如下:

<%@ Import Namespace="DataTypesService" %>

<html>
<style>
div
{
font: 8pt verdana;
background-color:cccccc;
border-color:black;
border-width:1;
border-style:solid;
padding:10,10,10,10; web教程網
}

</style>

<script language="VB" runat="server">

Public Sub Page_Load(Sender As Object, E As EventArgs)

Dim D As DataTypes = New DataTypes()
Message1.InnerHtml = D.SayHello()
Message1.InnerHtml = Message1.InnerHtml & D.SayHelloName("Bob")
Message3.InnerHtml = Message3.InnerHtml & D.GetMode()

Dim MyIntArray As Integer() = D.GetIntArray()
Dim MyString As String = "Contents of the Array:<BR>"

For I = 0 To MyIntArray.Length - 1
MyString = MyString & MyIntArray(I) & "<BR>"
Next

Message2.InnerHtml = Message2.InnerHtml & MyString

Dim MyOrder As Order = D.GetOrder()
Message4.InnerHtml = Message4.InnerHtml & "<BR>OrderID: " & MyOrder.OrderID
Message4.InnerHtml = Message4.InnerHtml & "<BR>Price: " & MyOrder.Price

Dim MyOrders As Order() = D.GetOrders()
Message5.InnerHtml = Message5.InnerHtml & "<BR>OrderID: " & MyOrders(0).OrderID web教程網
Message5.InnerHtml = Message5.InnerHtml & "<BR>Price: " & MyOrders(0).Price

End Sub

</script>

<body style="font: 10pt verdana">
<H4>Using DataTypes with Web Services</H4>

<h5>Methods that return a Primitive (String): </h5>
<div id="Message1" runat="server"/>

<h5>Methods that return an Array of Primitives (Integers): </h5>
<div id="Message2" runat="server"/>

<h5>Method that returns an Enum: </h5>
<div id="Message3" runat="server"/>

<h5>Method that returns a Class/Struct: </h5>
<div id="Message4" runat="server"/>

<h5>Method that returns an array of Classes/Structs: </h5>
<div id="Message5" runat="server"/>

</body>
</html>

  在用戶端程式中,我們使用<%@ Import Namespace="DataTypesService" %>來引入DataTypesService這個我們自訂的名字空間。然後在程式中只是調用了DataTypesService中的方法。 

相關文章

聯繫我們

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