Skapa WCF-tjänster för ASP.NET AJAX
Med Microsoft ASP.NET AJAX kan du snabbt skapa webbsidor som innehåller en omfattande användarupplevelse med dynamiska och välbekanta användargränssnittselement. ASP.NET AJAX tillhandahåller klientskriptbibliotek som innehåller ECMAScript-tekniker (JavaScript) och dynamiska HTML-tekniker (DHTML) och integrerar dem med ASP.NET 2.0-serverbaserad utvecklingsplattform. Genom att använda ASP.NET AJAX kan du förbättra användarupplevelsen och effektiviteten i dina webbprogram.
ASP.NET AJAX består av klientskriptbibliotek och serverkomponenter som är integrerade för att tillhandahålla ett robust utvecklingsramverk. För att komma åt en tjänst från en ASP.NET sida: När tjänst-URL:en har lagts till i ASP.NET Script Manager-kontrollen på sidan kan tjänståtgärder anropas med JavaScript-kod som ser exakt ut som ett vanligt JavaScript-funktionsanrop.
De flesta WCF-tjänster (Windows Communication Foundation) kan exponeras som en tjänst som är kompatibel med ASP.NET AJAX genom att lägga till en lämplig ASP.NET AJAX-slutpunkt.
Om du använder Visual Studio kan du använda en fördefinierad mall för AJAX-aktiverade WCF-tjänster, som är tillgänglig i dialogrutan Lägg till nytt objekt när du arbetar med ASP.NET webbplatser eller webbprogram.
Om du inte använder Visual Studio-mallarna finns det två sätt att skapa en ASP.NET AJAX-slutpunkt:
Skapa slutpunkten med dynamisk värdaktivering utan att använda någon konfiguration. Det här är den mest grundläggande metoden om du inte är bekant med WCF-konfigurationssystemet. Mer information finns i Så här lägger du till en ASP.NET AJAX-slutpunkt utan att använda konfiguration.
Lägg till en AJAX-aktiverad slutpunkt i en WCF-tjänst med hjälp av konfiguration. Mer information finns i How to: Use Configuration to Add an ASP.NET AJAX Endpoint (Använda konfiguration för att lägga till en ASP.NET AJAX-slutpunkt).
Webbprogrammeringsmodellen som beskrivs i översikten över WCF Web HTTP Programming Model kan användas med ASP.NET AJAX-tjänster. Specifikt:
Du kan använda attributen WebGetAttribute och WebInvokeAttribute för att välja mellan HTTP GET- och HTTP POST-verb. Om det används på rätt sätt kan detta avsevärt förbättra programmets prestanda. Mer information finns i Så här väljer du mellan HTTP POST- och HTTP GET-begäranden för ASP.NET AJAX-slutpunkter.
Du kan använda ResponseFormat egenskaperna och ResponseFormat för att få tjänsten att returnera XML-data i stället för JSON (Standard JavaScript Object Notation). Om du gör detta med ASP.NET AJAX-ramverket tar JavaScript-klienten emot ett XML DOM-objekt.
Varning
Åtgärden måste ange innehållstypen till text/xml för att det ska fungera. Annars får JavaScript-klienten en sträng som innehåller XML i stället för ett XML DOM-objekt.
Följande är ett exempel på en åtgärd som returnerar XML-data med innehållstypen inställd på rätt sätt:
[OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)] public XElement GetData() { XElement x; //Get some data here... WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; return x; }
Inga andra egenskaper för attributen WebGetAttribute och WebInvokeAttribute kan ändras om kompatibilitet med ASP.NET AJAX krävs. Andra aspekter av webbprogrammeringsmodellen kan användas så länge de ASP.NET AJAX-anropskonventionerna inte överträds.
Mer avancerade scenarier kräver viss ytterligare information om AJAX-stöd i WCF förstås:
Information om hur data överförs mellan en AJAX-sidklient och en WCF-tjänst med hjälp av JavaScript och mer information om hur .NET Framework-typer mappas till JavaScript-typer finns i Stöd för JSON- och andra dataöverföringsformat.
Om du vill dra nytta av ASP.NET funktioner, till exempel URL-baserad autentisering och åtkomst till ASP.NET sessionsinformation, kanske du vill aktivera ASP.NET kompatibilitetsläge via konfiguration.
AJAX-slutpunkter i WCF kan till och med förbrukas utan det ASP.NET AJAX-ramverket. För att göra det krävs en förståelse för stödarkitekturen för AJAX-stöd i WCF. En diskussion om den här arkitekturen finns i WCF Web HTTP Programming Object Model(WCF Web HTTP Programming Object Model). Ett kodexempel som visar den här metoden finns i AJAX-tjänsten med JSON och XML.