Basic AJAX-service
Het SimpleAjaxService-voorbeeld laat zien hoe u Windows Communication Foundation (WCF) gebruikt om een eenvoudige ASP.NET Asynchrone JavaScript- en XML-service (AJAX) te maken (een service die u kunt openen met behulp van JavaScript-code vanuit een webbrowserclient). De service gebruikt het WebGetAttribute kenmerk om ervoor te zorgen dat de service reageert op HTTP GET-aanvragen en is geconfigureerd voor het gebruik van de JSON-gegevensindeling (JavaScript Object Notation) voor antwoorden.
AJAX-ondersteuning in WCF is geoptimaliseerd voor gebruik met ASP.NET AJAX via het ScriptManager
besturingselement. Zie de AJAX-voorbeelden voor een voorbeeld van het gebruik van WCF met ASP.NET AJAX.
Notitie
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
In de volgende code wordt het WebGetAttribute kenmerk toegepast op de Add
bewerking om ervoor te zorgen dat de service reageert op HTTP GET-aanvragen. De code maakt gebruik van GET voor het gemak (u kunt een HTTP GET-aanvraag maken vanuit elke webbrowser). U kunt GET ook gebruiken om caching in te schakelen. HTTP POST is de standaardinstelling bij afwezigheid van het WebGetAttribute
kenmerk.
[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
[WebGet]
double Add(double n1, double n2);
//Other operations omitted…
}
Het voorbeeldbestand .svc gebruikt WebScriptServiceHostFactory, waarmee een WebScriptEndpoint standaardeindpunt aan de service wordt toegevoegd. Het eindpunt wordt geconfigureerd op een leeg adres ten opzichte van het .svc-bestand. Dit betekent dat het adres van de service is http://localhost/ServiceModelSamples/service.svc
, zonder dat er andere achtervoegsels zijn dan de naam van de bewerking.
<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
De WebScriptEndpoint service is vooraf geconfigureerd om de service toegankelijk te maken vanaf een ASP.NET AJAX-clientpagina. De volgende sectie in Web.config kan worden gebruikt om aanvullende configuratiewijzigingen aan te brengen in het eindpunt. Deze kan worden verwijderd als er geen extra wijzigingen nodig zijn.
<system.serviceModel>
<standardEndpoints>
<webScriptEndpoint>
<!-- Use this element to configure the endpoint -->
<standardEndpoint name="" />
</webScriptEndpoint>
</standardEndpoints>
</system.serviceModel>
Hiermee WebScriptEndpoint wordt de standaardgegevensindeling voor de service ingesteld op JSON in plaats van XML. Als u de service wilt aanroepen, gaat u naar http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200
na het voltooien van de installatie- en buildstappen die verderop in dit onderwerp worden weergegeven. Deze testfunctionaliteit wordt ingeschakeld door het gebruik van een HTTP GET-aanvraag.
De clientwebpagina SimpleAjaxClientPage.aspx bevat ASP.NET code om de service aan te roepen wanneer de gebruiker op een van de bewerkingsknoppen op de pagina klikt. Het ScriptManager
besturingselement wordt gebruikt om een proxy voor de service toegankelijk te maken via JavaScript.
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="service.svc" />
</Services>
</asp:ScriptManager>
De lokale proxy wordt geïnstantieerd en bewerkingen worden aangeroepen met behulp van de volgende JavaScript-code.
// Code for extracting arguments n1 and n2 omitted…
// Instantiate a service proxy
var proxy = new SimpleAjaxService.ICalculator();
// Code for selecting operation omitted…
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);
Als de service-aanroep slaagt, roept de code de onSuccess
handler aan en wordt het resultaat van de bewerking weergegeven in een tekstvak.
function onSuccess(mathResult){
document.getElementById("result").value = mathResult;
}