ASP.NET XML Web Service 基本概念

本主題專門說明舊有技術。 應該使用下列建立 XML Web Service 及 XML Web Service 用戶端: Windows Communication Foundation.

因為 ASP.NET 會為 Web 服務的內部工作提供基礎結構,所以開發人員可以專注於實作特定 Web 服務的功能。啟用使用 ASP.NET 的 Web 服務時,需要執行的工作包括建立副檔名為 .asmx 的檔案、在該檔案及其他可能的檔案中宣告 Web 服務,以及定義 Web 服務方法。這些程序已在逐步解說:使用 ASP.NET 建置基本 XML Web Service中列出,而在本章節中則是詳細加以說明。

Web 服務的宣告

使用 ASP.NET 建立 Web 服務時,您可以在副檔名為 .asmx 的文字檔開頭放置必要的 @ WebService 指示詞。在 .asmx 檔案中使用 @ WebService 指示詞時,可以讓 Web 服務的 URL 位址與它的實作產生相互關聯。您還要實作 Web 服務類別,以定義公開給 Web 服務用戶端的方法和資料型別。

您定義的 Web 服務類別可以直接包含在 .asmx 檔案或不同的檔案中。如果您要使用個別的檔案,則必須將它編譯成組件。或者,也可以將 WebService 屬性套用至實作 Web 服務的類別。實作 Web 服務的類別可以衍生自 WebService 類別。

藉由將選擇性 WebService 屬性套用至實作 Web 服務的類別,您可以設定 Web 服務的預設 XML 命名空間以及用來描述 Web 服務的字串。強烈建議您先變更這個預設命名空間 (原為 http://tempuri.org),再公開這個 Web 服務以供取用。這點相當重要,因為 Web 服務必須與其他可能不當沿用預設命名空間 (<http://tempuri.org/>) 的 Web 服務有所區分。

實作使用 ASP.NET 所建立之 Web 服務的類別可以選擇性地從 WebService 類別衍生,來存取通用 ASP.NET 物件,例如 ApplicationSessionUserContextApplicationSession 屬性可以在 Web 應用程式存留期 (Lifetime) 或特定工作階段中提供用來儲存和接收狀態的存取權。如需狀態管理的詳細資訊,請參閱 HOW TO:在使用 ASP.NET 建立的 Web 服務中管理狀態User 屬性會包含 Web 服務之呼叫端 (如果已啟用驗證) 的身分識別。透過這個身分識別,Web 服務就可以判斷要求是否已經過授權。如需驗證的詳細資訊,請參閱保護 XML Web Service 安全性Context 屬性可以用來存取所有關於 Web 服務用戶端之要求的 HTTP 特定資訊。如需 Context 屬性的詳細資訊,請參閱 WebService.Context 屬性

Web 服務方法的定義

實作 Web 服務之類別的方法不會自動具備接收 Web 服務要求和傳回回應的能力,但是藉由使用 ASP.NET 所建立的 Web 服務,要新增這項功能就變得很簡單。請將 WebMethod 屬性套用至公用方法。可透過 Web 通訊的 Web 服務類別方法就稱為 Web 服務方法。

Web 服務方法是 Web 服務所採用訊息基礎結構中的重要部分。也就是說,根據預設,用戶端和 Web 服務可以使用訊息 (特別是 SOAP 訊息) 來相互通訊。用戶端會傳送 SOAP 要求給 Web 服務,而 Web 服務方法則通常傳回 SOAP 回應。Web 服務會使用 Web 服務描述語言 (WSDL) 所定義的作業,來定義它們接受的訊息類型。這些作業會與 Web 服務中的每個 Web 服務方法相互關聯。儘管這其中每個 Web 服務方法都是您在 ASP.NET 中使用類別的方法所定義,但還是必須了解,最終透過網路傳達的資料必須序列化為 XML。因此,請特別注意,Web 服務不是要來取代 DCOM,而是要做為使用業界標準進行跨平台通訊的訊息基礎結構。

另請參閱

工作

逐步解說:使用 ASP.NET 建置基本 XML Web Service

參考

WebService Class
WebServiceAttribute Class
WebMethodAttribute Class

其他資源

使用 ASP.NET 的 XML Web Service