Preparazione all'adozione di Windows Communication Foundation: facilitare l'integrazione futura
Se si sta utilizzando ASP.NET ma si prevede di passare a WCF in futuro, in questo argomento vengono fornite indicazioni per assicurare il corretto funzionamento dei nuovi servizi Web ASP.NET con le applicazioni WCF.
Suggerimenti generali
Adottare ASP.NET 2.0 per qualsiasi nuovo servizio. In tal modo sarà possibile accedere ai miglioramenti e ai potenziamenti della nuova versione. Sarà tuttavia possibile anche utilizzare i componenti ASP.NET 2.0 con i componenti WCF nella stessa applicazione.
Protocolli
Utilizzare la nuova funzionalità di ASP.NET 2.0 per convalidare la conformità a WS-I Basic Profile 1.1:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(
ConformsTo = WsiProfiles.BasicProfile1_1,
EmitConformanceClaims=true)]
public interface IEcho
Per garantire l'interoperabilità tra i servizi Web ASP.NET conformi alla specifica WS-I Basic Profile 1.1 e i client WCF è possibile utilizzare un'associazione predefinita di WCF, ovvero BasicHttpBinding.
Sviluppo del servizio
Evitare di utilizzare l'attributo SoapDocumentServiceAttribute per instradare i messaggi a metodi basati sul nome completo dell'elemento del corpo del messaggio SOAP al posto dell'intestazione HTTP SOAPAction. WCF utilizza l'intestazione HTTP SOAPAction per instradare i messaggi.
Rappresentazione dei dati
Il codice XML in cui l'oggetto XmlSerializer serializza un tipo è, per impostazione predefinita, semanticamente identico al codice XML in cui l'oggetto DataContractSerializer serializza un tipo, purché lo spazio dei nomi per XML sia stato definito in modo esplicito. Quando si definisce un tipo di dati da utilizzare in servizi Web ASP.NET perché si prevede di utilizzare WCF in futuro, eseguire le operazioni seguenti:
- Definire il tipo utilizzando classi .NET Framework anziché lo schema XML.
- Aggiungere solo gli attributi SerializableAttribute e XmlRootAttribute alla classe, utilizzando quest'ultimo per definire in modo esplicito lo spazio dei nomi per il tipo. Evitare di aggiungere attributi aggiuntivi dallo spazio dei nomi System.Xml.Serialization per controllare la modalità di conversione della classe .NET Framework in XML.
Tramite questo approccio è possibile convertire successivamente le classi .NET in contratti di dati aggiungendo gli attributi DataContractAttribute e DataMemberAttribute senza modificare in modo significativo il codice XML nel quale le classi vengono serializzate per la trasmissione. I tipi utilizzati nei messaggi dai servizi Web ASP.NET potranno essere elaborati come contratti di dati dalle applicazioni WCF. Ciò offre diversi vantaggi, tra cui il miglioramento delle prestazioni delle applicazioni WCF.
Protezione
Evitare di utilizzare le opzioni di autenticazione fornite in Internet Information Services (IIS), poiché i client WCF non le supportano. Se occorre proteggere un servizio, utilizzare le opzioni fornite in WCF. Queste opzioni sono infatti più affidabili e sono basate su protocolli standard.