Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile accedere ai servizi AJAX di Windows Communication Foundation (WCF) da qualsiasi pagina Web abilitata per JavaScript, senza richiedere ASP.NET AJAX. In questo argomento viene descritto come creare un servizio WCF di questo tipo.
Per istruzioni sull'uso di WCF con ASP.NET AJAX, vedere Creazione di servizi WCF per ASP.NET AJAX.
Esistono tre parti di una creazione di un servizio WCF AJAX:
Creazione di un endpoint AJAX accessibile dal browser.
Creazione di un contratto di servizio compatibile con AJAX.
Accesso ai servizi WCF AJAX.
Creazione di un endpoint AJAX
Il modo più semplice per abilitare il supporto AJAX in un servizio WCF consiste nell'usare WebServiceHostFactory nel file con estensione svc associato al servizio, come nell'esempio seguente.
<%ServiceHost
language=c#
Debug="true"
Service="Microsoft.Ajax.Samples.CityService"
Factory=System.ServiceModel.Activation.WebServiceHostFactory
%>
In alternativa, è anche possibile usare la configurazione per aggiungere un endpoint AJAX. Usa WebHttpBinding sull'endpoint del servizio e configura quell'endpoint con WebHttpBehavior come illustrato nel frammento di codice seguente.
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="Microsoft.Ajax.Samples.CityService">
<endpoint
address="ajaxEndpoint"
behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding"
contract="Microsoft.Ajax.Samples.ICityService" />
</service>
</services>
</system.serviceModel>
</configuration>
Per un esempio funzionante, vedere servizio AJAX con JSON e XML.
Creazione di un contratto di servizio AJAX-Compatible
Per impostazione predefinita, i contratti di servizio esposti su un endpoint AJAX restituiscono dati nel formato XML. Inoltre, per impostazione predefinita, le operazioni del servizio sono accessibili tramite richieste HTTP POST agli URL che includono l'indirizzo dell'endpoint seguito dal nome dell'operazione, come illustrato nell'esempio seguente.
[OperationContract]
string[] GetCities(string firstLetters);
Questa operazione è accessibile usando un HTTP POST per http://serviceaddress/endpointaddress/GetCities e restituire un messaggio XML.
È possibile usare il modello di programmazione Web completo per personalizzare questi aspetti di base. Ad esempio, è possibile usare gli WebGetAttribute attributi o WebInvokeAttribute per controllare il verbo HTTP a cui risponde l'operazione o usare la UriTemplate proprietà di questi rispettivi attributi per specificare URI personalizzati. Per altre informazioni, vedere l'argomento Wcf Web HTTP Programming Model .
Il formato di dati JSON viene spesso usato nei servizi AJAX. Per creare un'operazione che restituisce JSON anziché XML, impostare la ResponseFormat proprietà (o ) ResponseFormatsu Json. L'argomentoStand-Alone serializzazione JSON mostra come i tipi predefiniti di .NET e i tipi di contratto-dati vengono mappati a JSON.
In genere, le richieste e le risposte JSON sono costituite da un solo elemento. Per l'operazione precedente GetCities , la richiesta è simile all'istruzione seguente.
"na"
La risposta a tale richiesta è simile alla dichiarazione seguente.
["Nairobi", "Naples", "Nashville"]
Se l'operazione accetta un parametro aggiuntivo, è necessario eseguire il wrapping dello stile della richiesta per eseguire il wrapping di entrambi i parametri in un singolo oggetto JSON. Un esempio di questo messaggio JSON di stile è nell'esempio seguente.
{"firstLetters": "na", "maxNumber": 2}
Il contratto seguente accetta questo messaggio.
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
string[] GetCities(string firstLetters, int maxNumber);
Accesso ai servizi AJAX
Gli endpoint WCF AJAX accettano sempre richieste JSON e XML.
Le richieste HTTP POST con un tipo di contenuto "application/json" vengono considerate come JSON e quelle con tipo di contenuto che indicano XML (ad esempio, "text/xml") vengono considerate come XML.
Le richieste HTTP GET contengono tutti i parametri della richiesta nell'URL stesso.
Spetta all'utente decidere come creare la richiesta HTTP all'endpoint. Inoltre, l'utente ha il controllo completo sulla costruzione del codice JSON che costituisce il corpo della richiesta. Per un esempio di creazione di una richiesta da JavaScript, vedere servizio AJAX con JSON e XML.