Creazione di servizi WCF per ASP.NET AJAX

Microsoft ASP.NET AJAX consente di creare rapidamente pagine Web caratterizzate da un'esperienza utente più soddisfacente con i classici elementi dell'interfaccia utente di elevata reattività. ASP.NET AJAX fornisce librerie di script client in cui sono incorporate tecnologie multibrowser ECMAScript (JavaScript) e DHTML (HTML dinamico), nonché l'integrazione con la piattaforma di sviluppo basata su server ASP.NET 2.0. Con ASP.NET AJAX è possibile migliorare l'esperienza utente e l'efficienza delle applicazioni Web.

ASP.NET AJAX è costituito da librerie di script client e da componenti server integrati per fornire un framework di sviluppo affidabile. Per accedere a un servizio da una pagina ASP.NET: dopo l'aggiunta dell'URL del servizio al controllo Script Manager di ASP.NET nella pagina, è possibile richiamare le operazioni del servizio utilizzando codice JavaScript che assomiglia esattamente a una normale chiamata alla funzione JavaScript.

La maggior parte dei servizi WCF (Windows Communication Foundation) può essere esposta come servizio compatibile con ASP.NET AJAX aggiungendo un endpoint ASP.NET AJAX appropriato.

Se si sta usando Visual Studio, è possibile usare un modello predefinito per i servizi WCF compatibili AJAX, disponibile nella finestra di dialogo Aggiungi nuovo elemento quando si lavora con siti Web ASP.NET o applicazioni Web.

Se non si stanno utilizzando i modelli di Visual Studio, esistono due modalità per creare un endpoint ASP.NET AJAX:

Il modello di programmazione Web descritto nella Panoramica del modello di programmazione HTTP Web WCF può essere usato con servizi ASP.NET AJAX. In particolare:

  • È possibile utilizzare gli attributi WebGetAttribute e WebInvokeAttribute per selezionare tra i verbi HTTP GET e HTTP POST. Se utilizzati correttamente, possono migliorare notevolmente le prestazioni dell'applicazione. Per altre informazioni, vedere Procedura: scegliere tra richieste HTTP POST e HTTP GET per endpoint ASP.NET AJAX.

  • È possibile utilizzare le proprietà ResponseFormat e ResponseFormat affinché il servizio restituisca dati XML anziché la notazione JSON (JavaScript Object Notation) predefinita. L'utilizzo di questo approccio con il framework ASP.NET AJAX fa sì che il client JavaScript riceva un oggetto XML DOM.

    Avviso

    Per funzionare, l'operazione deve impostare il tipo di contenuto su Text/XML. In caso contrario, il client JavaScript riceverà una stringa che contiene XML anziché un oggetto XML DOM.

    Di seguito viene riportato l'esempio di un'operazione che restituisce dati XML con il tipo di contenuto impostato in modo appropriato:

    [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)]
    public XElement GetData()
    {
        XElement x;
        //Get some data here...
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        return x;
    }
    
  • Se è richiesta la compatibilità con ASP.NET AJAX, non è possibile modificare nessun'altra proprietà negli attributi WebGetAttribute e WebInvokeAttribute. Gli altri aspetti del modello di programmazione Web possono essere utilizzati a condizione che non vengano violate le convenzioni di chiamata ASP.NET AJAX.

Scenari più avanzati richiedono la comprensione di alcuni dettagli aggiuntivi di supporto AJAX in WCF:

  • Per capire come vengono trasferiti i dati tra un client della pagina AJAX e un servizio WCF usando JavaScript e per ulteriori informazioni sul mapping di tipi .NET Framework a tipi JavaScript, vedere Supporto per JSON e altri formati di trasferimento dati.

  • Per sfruttare le funzionalità di ASP.NET, ad esempio, l'autenticazione basata su URL e l'accesso alle informazioni della sessione ASP.NET, è consigliabile abilitare la modalità di compatibilità ASP.NET tramite la configurazione.

Gli endpoint AJAX in WCF possono essere usati anche senza il framework ASP.NET AJAX. Ciò richiede una comprensione dell'architettura di supporto di AJAX in WCF. Per una descrizione di questa architettura, vedere Modello a oggetti di programmazione WCF Web HTTP. Per un esempio di codice che illustra questo approccio, vedere Servizio AJAX con JSON e XML.

Vedi anche