Share via


使用 ASP.NET 建立之 XML Web Service 的設計方針

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

Web 服務是提供服務的強大技術,可跨網際網路以程式設計方式存取這些服務。下列建議有助建立有效的 Web 服務:

  • Web 服務支援用戶端和 Web 服務主機伺服器之間的同步和非同步通訊。在同步通訊的情況下,用戶端會傳送服務要求至服務主機伺服器,並等候回應。這會防止在等候結果時用戶端執行其他作業。不過,非同步通訊會讓用戶端在等候回應時繼續處理其他工作。一旦服務要求有結果,用戶端就會做出回應。

    當您使用 Web 服務描述語言工具 (Wsdl.exe) 建立 Proxy 類別時,它會在類別中產生標準的同步版本和非同步版本方法。非同步版本由兩個名為 BeginEnd 的方法組成。Begin 方法是用來啟始 Web 服務,而 End 方法則會擷取結果。

    使用非同步通訊會改進系統使用情形,避免用戶端在等候 Web 服務結果時發生延遲。

    如需程式碼範例,請參閱<HOW TO:從 Web 服務用戶端發出非同步呼叫>。如需非同步通訊的詳細資訊,請參閱與 XML Web Service 進行非同步通訊

  • 跨網際網路提出多個服務要求,會影響用戶端應用程式的效能。在設計 Web 服務時,您可以建立將相關資訊群組在一起的方法,有效使用服務要求。例如,假設您有擷取書籍相關資訊的 Web 服務。您可以建立會在一個服務要求中傳回書名、作者和出版商等所有資訊的方法,而不要用個別方法分別擷取每項資訊。每次傳輸一個大型資訊區塊會比多個小型資訊區塊更有效率。

  • 如需程式碼範例,請參閱<HOW TO:將相關資訊群組成單一 Web 服務方法>。在設計 Web 服務時,務必使用標準的物件導向程式設計做法。您可以使用封裝來隱藏實作詳細資料。對於更複雜的 Web 服務,您可以使用繼承和多型,重複使用程式碼及簡化設計。

  • 如需程式碼範例,請參閱<HOW TO:在 Web 服務中使用繼承>。您可以使用輸出快取,來改善 Web 服務效能。開啟輸出快取時,服務要求結果會在指定持續期間內儲存在輸出快取中。如果提出相似的 Web 服務要求,則會從快取中取得結果,而不會重新計算。這會減少 Web 服務伺服器所需的處理,因此改進 Web 服務的反應時間。在用戶端和伺服器上都可以執行快取。Duration 屬性可讓您指定快取 Web 服務輸出的時間量。

    在用戶端上,啟用輸出快取的指示詞為:

    <%@ OutputCache Duration="60" %>
    For a code example, see How to: Enable Output Caching on a Web Service Client.You can also use the CacheDuration property of the WebMethod attribute class to enable caching on the server. For a code example, see How to: Enable Server-Side Output Caching for a Web Service.
    
  • 設計 Web 服務時,請遵循結構描述的格式結構。

  • Web 服務使用 SOAP 做為主要的傳輸和序列化通訊協定。SOAP 訊息由一組選擇性標頭和訊息本文組成。標頭區段包含可由 Web 伺服器基礎結構處理的資訊。SOAP 不會定義任何標頭。本文區段包含應用程式處理的資訊,例如 Web 服務的參數或傳回值。

    如需使用 SOAP 標頭的詳細資訊,請參閱使用 SOAP 標頭

  • 為 Web 服務提供描述服務作業和資料結構的相關文件,例如靜態 HTML 檔案。此外,也包含示範 Web 服務用法的範例。不要仰賴服務描述或服務說明頁面做為唯一文件。

另請參閱

工作

HOW TO:從 Web 服務用戶端發出非同步呼叫
HOW TO:將相關資訊群組成單一 Web 服務方法
HOW TO:在 Web 服務中使用繼承
HOW TO:在 Web 服務用戶端上啟用輸出快取
HOW TO:為 Web 服務啟用伺服器端輸出快取

概念

以非同步方式與 XML Web Service 通訊

其他資源

使用 ASP.NET 的 XML Web Service
使用 SOAP 標頭