top
Loading...
ASP.NET創建Web服務之聲明
聲明一個XML Web服務

當你使用ASP.NET創建一個XML Web服務時,你要把所需的@_WebService指令放到.asmx文件的最頂端。.asmx文件的存在和@_ WebService指令與所實現的XML Web服務的URL地址相關。接下來,你實現XML Web服務類來定義XML Web服務客戶端可見的方法和數據類型。最后,你把你的XML Web服務邏輯添加到那些方法上,以便處理XML Web服務請求和返回的響應。你定義的XML Web服務類可以直接被包含在.asmx文件中,也可以包含在一個單獨的文件中。如果你使用一個獨立的文件,它必須被編譯為二進制碼。你可以選擇應用一個WebService屬性到這個類上,來實現XML Web服務。實現XML Web服務的類可以繼承于WebService類。

聲明一個XML Web服務,這個服務的實現存在于同一個文件。

添加一個@_WebService指令到一個.asmx文件的頂部,規定在這個實現中實現XML Web服務的類和程序語言。

Class屬性可以被設置為和@_WebService指令同一個匯編文件,或者是單獨匯編文件中的一個類。如果這個類存在于一個獨立匯編文件中,它必須放在XML Web服務所在的Web應用程序目錄下的Bin目錄中。Language屬性可以設置為C#、VB和JS,分別表示C#、Visual Basic.NET和JScript.NET。

下列代碼示例設置@_ WebService指令的Language屬性為C#,Class屬性為MyMath,保存在同一個文件中。

<%@ WebService Language="C#" Class="MyMath" %>
using System.Web.Services;
public class MyMath {
[ WebMethod ]
public int Add(int num1, int num2) {
return num1+num2;
}
}

聲明一個XML Web服務,這個服務的實現存在于一個匯編文件中。

添加一個@_WebService指令到一個.asmx文件的頂部,規定實現XML Web服務的類,匯編文件中包含的實現和在這個實現中使用的程序語言。

下面的@_WebService指令是一個.asmx文件中唯一的一行代碼,指定了MyName.MyWebService類存在于XML Web服務的Web應用程序下Bin目錄中的MyAssembly匯編文件中。

[C#]
<%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
[Visual Basic]
<%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>

聲明一個XML Web服務,這個服務的實現存在于一個匯編文件中。

添加一個@_WebService指令到一個.asmx文件的頂部,規定實現XML Web服務的類,匯編文件中包含的實現和在這個實現中使用的程序語言。

下面的@_WebService指令是一個.asmx文件中唯一的一行代碼,指定了MyName.MyWebService類存在于XML Web服務的Web應用程序下Bin目錄中的MyAssembly匯編文件中。
注意:如果你不在@_ WebService指令中指定一個匯編,那么ASP.NET在XML Web服務第一次被訪問的時候搜尋存放XML Web服務的Web應用程序的Bin目錄下匯編文件的列表。所以,如果你提供匯編文件名,你將改善第一次訪問時的系統性能。

應用WebService屬性

通過應用可選的WebService屬性到實現一個XML Web服務的類上,你可以使用一個描述XML Web服務的字符串來設置這個XML Web服務的默認XML域名空間。

強烈建議這個默認域名空間(此處為http://tempuri.org)在XML Web服務公開使用前被修改。這是很重要的,因為你的XML Web服務必須和其他的無意中使用默認值作為域名空間的XML Web服務區分開來。

設置成員XML Web服務的XML域名空間

應用一個WebService屬性到實現XML Web服務的類,設置Namespace屬性。

下面的代碼示例設置XML域名空間為http://www.contoso.com/。

[C#]
<%@ WebService Language="C#" Class="Math" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="http://www.contoso.com/")]
public class Math {
[ WebMethod ]
public int Add(int num1, int num2) {
return num1+num2;
}
}
[Visual Basic]
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="http://www.contoso.com/")> _
Public Class Math
<WebMethod()> Public Function Add(num1 As Integer, num2 As Integer) As Integer
Return num1 + num2
End Function
End Class

從WebService類衍生

使用ASP.NET創建的實現一個XML Web服務的類可以選擇性地衍生于WebService類來獲得訪問公共的ASP.NET對象,例如Application、Session、User和Context的權限。Application和Session屬性提供保存和接收Web應用程序的生命周期或一個特定的會話的狀態的權限。想獲得關于狀態的更多的信息,請看在使用ASP.NET創建的XML Web服務中管理狀態一節。User屬性包含了XML Web服務調用者的身份。XML Web服務可以使用調用者身份來判定請求是否被授權。有關驗證的更多信息,請看加強XML Web服務安全一節。Context屬性提供了取得XML Web服務客戶端請求的所有特定HTTP信息的權限。

下面的代碼示例使用Context屬性來獲得服務器上的請求時間。

[C#]
<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;

public class Util: WebService {
[ WebMethod(Description="Returns the time as stored on the Server",EnableSession=false)]
public string Time()
{
return Context.Timestamp.TimeOfDay.ToString();
}
}
[Visual Basic]
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
Inherits WebService

<WebMethod(Description := "Returns the time as stored on the Server", _
EnableSession := False)> _
Public Function Time() As String
Return Context.Timestamp.TimeOfDay.ToString()
End Function
End Class

定義XML Web服務方法

用來實現XML Web服務的類的方法不能自動通過Web與之通訊,但是有了使用ASP.NET創建的XML Web服務,就能夠很容易的天家這種能力。為了添加這種功能,需要應用一個WebMethod屬性到公共方法中。能夠通過Web與之通訊的XML Web服務的方法被稱為XML Web服務方法。
XML Web服務方法是XML Web服務使用的消息傳遞基礎結構的關鍵組成部分。說得更精確些,一個客戶端和一個XML Web服務使用消息,尤其是SOAP消息進行通訊。客戶端發送一個SOAP請求到XML Web服務中,而一個XML Web服務方法返回一個SOAP響應。XML Web服務定義了它使用操作接受的消息類型,正如Web服務描述語言中定義的那樣。這些操作與一個XML Web服務中的每個XML Web服務方法關聯。 即使這些XML Web服務方法中的每一個都是在ASP.NET使用一個類的方法定義的,但要實現通過網絡傳送的數據,必須把數據序列化為XML。同樣地,重要的是要記得XML Web服務并不能取代DCOM,我們應該說XML Web服務是跨越使用行業標準的平臺通信的一種消息傳遞基礎結構。

聲明一個XML Web服務方法

聲明一個XML Web服務,添加@_WebService指令。更多信息,請看聲明一個XML Web服務一節。

添加公共方法到實現XML Web服務的類中。

應用WebMethod屬性到你想要映射到操作的公共方法。

下面的代碼示例有兩個公共方法,其一是一個XML Web服務方法。Multiply方法是一個XML Web服務方法,因為它有一個應用到它上的WebMethod屬性。

[C#]
<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;
public class Util: WebService
{
public int Add(int a, int b)
{
return a + b;
}

[ WebMethod]
public long Multiply(int a, int b)
{
return a * b;
}
}
[Visual Basic]
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services
Public Class Util
Inherits WebService

Public Function Add(a As Integer, b As Integer) As Integer
Return a + b
End Function

< WebMethod()> _
Public Function Multiply(a As Integer, b As Integer) As Long
Return a * b
End Function
End Class
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗