Condividi tramite


Servizio AJAX di base

L'esempio SimpleAjaxService illustra come usare Windows Communication Foundation (WCF) per creare un servizio JavaScript e XML (AJAX) asincrono di base ASP.NET (un servizio a cui è possibile accedere tramite codice JavaScript da un client web browser). Il servizio usa l'attributo WebGetAttribute per garantire che il servizio risponda alle richieste HTTP GET ed è configurato per l'uso del formato di dati JSON (JavaScript Object Notation) per le risposte.

Il supporto AJAX in WCF è ottimizzato per l'uso con ASP.NET AJAX tramite il ScriptManager controllo . Per un esempio di utilizzo di WCF con ASP.NET AJAX, vedere gli esempi AJAX.

Annotazioni

La procedura di configurazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

Nel codice seguente, l'attributo viene applicato all'operazione WebGetAttributeAdd per assicurarsi che il servizio risponda alle richieste HTTP GET. Il codice usa GET per semplicità (è possibile costruire una richiesta HTTP GET da qualsiasi Web browser). È anche possibile usare GET per abilitare la memorizzazione nella cache. HTTP POST è l'impostazione predefinita in assenza dell'attributo WebGetAttribute .

[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
    [WebGet]
    double Add(double n1, double n2);
    //Other operations omitted…
}

Il file con estensione svc di esempio usa WebScriptServiceHostFactory, che aggiunge un WebScriptEndpoint endpoint standard al servizio. L'endpoint è configurato in un indirizzo vuoto relativo al file con estensione svc. Ciò significa che l'indirizzo del servizio è http://localhost/ServiceModelSamples/service.svc, senza suffissi aggiuntivi diversi dal nome dell'operazione.

<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>

WebScriptEndpoint è preconfigurato per rendere il servizio accessibile da una pagina client AJAX ASP.NET. La sezione seguente in Web.config può essere usata per apportare modifiche di configurazione aggiuntive all'endpoint. Può essere rimosso se non sono necessarie modifiche aggiuntive.

<system.serviceModel>
  <standardEndpoints>
    <webScriptEndpoint>
      <!-- Use this element to configure the endpoint -->
      <standardEndpoint name=""  />
    </webScriptEndpoint>
  </standardEndpoints>
</system.serviceModel>

Imposta WebScriptEndpoint il formato di dati predefinito per il servizio su JSON anziché su XML. Per richiamare il servizio, passare a http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 dopo aver completato i passaggi di configurazione e compilazione illustrati più avanti in questo argomento. Questa funzionalità di test è abilitata dall'uso di una richiesta HTTP GET.

La pagina Web client SimpleAjaxClientPage.aspx contiene ASP.NET codice per richiamare il servizio ogni volta che l'utente fa clic su uno dei pulsanti dell'operazione nella pagina. Il ScriptManager controllo viene usato per rendere accessibile un proxy al servizio tramite JavaScript.

<asp:ScriptManager ID="ScriptManager" runat="server">
    <Services>
        <asp:ServiceReference Path="service.svc" />
    </Services>
</asp:ScriptManager>

Viene creata un'istanza del proxy locale e vengono richiamate le operazioni usando il codice JavaScript seguente.

// 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);

Se la chiamata al servizio ha esito positivo, il codice richiama il onSuccess gestore e il risultato dell'operazione viene visualizzato in una casella di testo.

function onSuccess(mathResult){
     document.getElementById("result").value = mathResult;
}