Condividi tramite


Creazione di servizi WCF per ASP.NET AJAX

Microsoft ASP.NET AJAX consente di creare rapidamente pagine Web che includono un'esperienza utente avanzata con elementi dell'interfaccia utente reattivi e familiari. ASP.NET AJAX fornisce librerie di script client che incorporano tecnologie ECMAScript (JavaScript) e DHTML (Dynamic HTML) e le integra con la piattaforma di sviluppo basata su server ASP.NET 2.0. Usando 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 di ASP.NET: dopo l'aggiunta dell'URL del servizio al controllo ASP.NET Script Manager nella pagina, le operazioni del servizio possono essere richiamate usando codice JavaScript esattamente come una normale chiamata di funzione JavaScript.

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

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

Se non si usano i modelli di Visual Studio, è possibile creare un endpoint ASP.NET AJAX in due modi:

Il modello di programmazione Web descritto in Wcf Web HTTP Programming Model Overview può essere usato con ASP.NET servizi AJAX. In particolare:

  • È possibile usare gli WebGetAttribute attributi e WebInvokeAttribute per selezionare i verbi HTTP GET e HTTP POST. Se usato correttamente, questo può migliorare significativamente le prestazioni dell'applicazione. Per altre informazioni, vedere Procedura: Scegliere tra richieste HTTP POST e HTTP GET per ASP.NET endpoint AJAX.

  • È possibile usare le ResponseFormat proprietà e ResponseFormat per fare in modo che il servizio restituisca dati XML anziché la notazione JSON (JavaScript Object Notation) predefinita. Questa operazione con il framework AJAX ASP.NET fa sì che il client JavaScript riceva un oggetto DOM XML.

    Avvertimento

    Per il corretto funzionamento dell'operazione, è necessario impostare il tipo di contenuto su text/xml. In caso contrario, il client JavaScript riceverà una stringa contenente il codice XML anziché un oggetto DOM XML.

    Di seguito è riportato un esempio di 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;
    }
    
  • Non è possibile modificare altre proprietà sugli WebGetAttribute attributi e WebInvokeAttribute se è necessaria la compatibilità con ASP.NET AJAX. È possibile usare altri aspetti del modello di programmazione Web purché le convenzioni di chiamata AJAX ASP.NET non vengano violate.

Gli scenari più avanzati richiedono alcuni dettagli aggiuntivi del supporto AJAX in WCF:

  • Per informazioni sul modo in cui i dati vengono trasferiti tra un client di pagina AJAX e un servizio WCF con JavaScript e per informazioni dettagliate sul mapping dei tipi .NET Framework ai tipi JavaScript, vedere Supporto per JSON e altri formati di trasferimento dati.

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

Gli endpoint AJAX in WCF possono anche essere utilizzati senza il framework AJAX ASP.NET. In questo modo è necessaria una conoscenza dell'architettura di supporto del supporto AJAX in WCF. Per una descrizione di questa architettura, vedere WCF Web HTTP Programming Object Model. Per un esempio di codice che illustra questo approccio, vedere servizio AJAX con JSON e XML.

Vedere anche