建立 ASP.NET AJAX 的 WCF 服務
Microsoft ASP.NET AJAX 可讓您使用反應靈敏和熟悉的使用者介面項目,快速建立包含豐富使用者經驗的 Web 網頁。 ASP.NET AJAX 提供用戶端指令碼的程式庫,其中加入跨平台的 ECMAScript (JavaScript) 和動態 HTML (DHTML) 技術,並將它們與 ASP.NET 2.0 伺服器基礎的開發平台整合。 您可以使用 ASP.NET AJAX 功能來改善使用者經驗和 Web 應用程式的效率。
ASP.NET AJAX 包含內建的用戶端指令碼程式庫與伺服器元件,以提供您穩固的開發架構。 若要從 ASP.NET 頁面存取服務:一旦服務 URL 新增至頁面上的 ASP.NET 指令碼管理員控制項,服務作業可能會透過看起來與正常 JavaScript 函式呼叫沒兩樣的 JavaScript 程式碼來叫用。
透過新增適當的 ASP.NET AJAX 端點,大多數 Windows Communication Foundation (WCF) 服務可以公開為與 ASP.NET AJAX 相容的服務。
如果您使用的是 Visual Studio,則可以在使用 ASP.NET 網站或 Web 應用程式時,使用預先為啟用 AJAX 的 WCF 服務所建立的範本 (可在 [新增項目] 中取得)。
如果您不是使用 Visual Studio 範本,則您可以透過下列兩種方法來建立 ASP.NET AJAX 端點:
使用動態主機啟動 (而不是透過任何組態) 來建立端點。 如果您不熟悉 WCF 組態系統的話,這是最基本的操作方式。 如需更多資訊,請參閱如何:不使用設定新增 ASP.NET AJAX 端點。
透過設定將啟用 AJAX 的端點新增至 WCF 服務。 如需詳細資訊,請參閱如何:使用設定新增 ASP.NET AJAX 端點。
WCF Web HTTP 程式設計模型概觀中所述的 Web 程式設計模型可以搭配 ASP.NET AJAX 服務使用。 具體而言:
您可以使用 WebGetAttribute 和 WebInvokeAttribute 屬性,在 HTTP GET 和 HTTP POST 動詞之間進行選擇。 如果使用方式正確的話,可能會大幅改善應用程式的效能。 如需更多資訊,請參閱如何:在 ASP.NET AJAX 端點的 HTTP POST 和 HTTP GET 要求之間進行選擇。
您可以使用 ResponseFormat 和 ResponseFormat 屬性,讓您的服務傳回 XML 資料,而不是預設的 JavaScript Object Notation (JSON)。 使用 ASP.NET AJAX 架構來執行這項作業會導致 JavaScript 用戶端接收 XML DOM 物件。
警告
您的作業必須將內容類型設定為文字/xml,才能讓此作業運作。 否則,JavaScript 用戶端將收到包含 XML 物件 (而非 XML DOM 物件) 的字串。
以下是內容類型設定正確時,傳回 XML 資料的範例:
[OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)] public XElement GetData() { XElement x; //Get some data here... WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; return x; }
如需與 ASP.NET AJAX 相容,則 WebGetAttribute 和 WebInvokeAttribute 屬性 (Attribute) 上的其他屬性 (Property) 都將無法變更。 只要不違反 ASP.NET AJAX 呼叫慣例的話,就可以一直使用其他的 Web 程式設計模型方式。
如果是更進階的案例,則您需要瞭解 WCF 中的其他 AJAX 支援詳細資料:
若要了解資料如何透過 JavaScript 在 AJAX 頁面用戶端與 WCF 服務之間互相傳輸,以及 .NET Framework 型別對應至 JavaScript 型別的方式,請參閱 JSON 和其他資料傳輸格式的支援。
為了善加利用各項 ASP.NET 功能,例如 URL 驗證與存取 ASP.NET 工作階段資訊,您可能會想要透過組態來啟用 ASP.NET 相容性模式。
您甚至不需要透過 ASP.NET AJAX 架構,就可以取用 WCF 中的 AJAX 端點。 要進行這項作業之前,您必須先瞭解對 AJAX 支援的支援架構。 如需此架構的討論,請參閱 WCF Web HTTP 程式設計物件模型。 如需示範此方法的程式碼範例,請參閱使用 JSON 和 XML 的 AJAX 服務。