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 ottenere l'interoperabilità tra i servizi Web ASP.NET e i servizi Web WCF (Windows Communication Foundation) assicurandosi che i servizi implementati usando entrambe le tecnologie siano conformi alla specifica WS-I Profilo basic 1.1. ASP.NET i servizi web conformi a WS-I profilo Basic 1.1 sono interoperabili con i client WCF tramite il binding fornito dal sistema WCF, BasicHttpBinding.
Usare ASP.NET opzione 2.0 per aggiungere gli WebService attributi e WebMethodAttribute a un'interfaccia anziché a una classe e scrivere una classe per implementare l'interfaccia, come illustrato nel codice di esempio seguente.
[WebService]
public interface IEcho
{
[WebMethod]
string Echo(string input);
}
public class Service : IEcho
{
public string Echo(string input)
{
return input;
}
}
L'uso di questa opzione è preferibile, perché l'interfaccia con l'attributo WebService costituisce un contratto per le operazioni eseguite dal servizio che può essere riutilizzato con varie classi che potrebbero implementare lo stesso contratto in modi diversi.
Evitare di usare l'attributo SoapDocumentServiceAttribute per fare in modo che i messaggi vengano indirizzati ai metodi in base al nome completo dell'elemento corpo del messaggio SOAP anziché all'intestazione SOAPAction
HTTP. WCF utilizza l'intestazione HTTP SOAPAction
per il routing dei messaggi.
Il codice XML in cui XmlSerializer serializza un tipo per impostazione predefinita è semanticamente identico al codice XML in cui serializza DataContractSerializer un tipo, purché lo spazio dei nomi per il codice XML sia definito in modo esplicito. Quando si definisce un tipo di dati da usare con i servizi Web ASP.NET in previsione dell'adozione di WCF, eseguire le seguenti operazioni:
Definire il tipo usando classi .NET Framework anziché XML Schema.
Aggiungere solo SerializableAttribute e XmlRootAttribute alla classe, utilizzando quest'ultimo per definire esplicitamente lo spazio dei nomi per il tipo. Non aggiungere altri attributi dallo System.Xml.Serialization spazio dei nomi per controllare la modalità di conversione della classe .NET Framework in XML.
Adottando questo approccio, sarà possibile rendere le classi .NET in un secondo momento in contratti dati con l'aggiunta di DataContractAttribute e DataMemberAttribute senza modificare significativamente il codice XML in cui le classi vengono serializzate per la trasmissione. I tipi usati nei messaggi da ASP.NET servizi Web possono essere elaborati come contratti dati dalle applicazioni WCF, ottenendo, tra gli altri vantaggi, prestazioni migliori nelle applicazioni WCF.
Evitare di usare le opzioni di autenticazione fornite da Internet Information Services (IIS). I client WCF non li supportano. Se un servizio deve essere protetto, usare le opzioni fornite da WCF, perché queste opzioni sono affidabili e sono basate su protocolli standard.
Impatto sulle prestazioni causato dal caricamento di ServiceModel HttpModule
In .NET Framework 3.0, WCF HttpModule
è stato installato nel file Web.config radice in modo che ogni applicazione ASP.NET sia stata abilitata per WCF. Ciò potrebbe influire sulle prestazioni, quindi è possibile rimuovere ServiceModel
per il file Web.config, come illustrato nell'esempio seguente.
<httpModules>
<remove name="ServiceModel" />
</httpModules>