Condividi tramite


Interoperabilità con i servizi Web ASP.NET

L'interoperabilità tra i servizi Web ASP.NET e i servizi Web Windows Communication Foundation (WCF) può essere ottenuta assicurando che i servizi implementati usando entrambe le tecnologie siano conformi alla specifica WS-I Basic Profile 1.1. Per garantire l'interoperabilità fra i servizi Web ASP.NET conformi alla specifica WS-I Basic Profile 1.1 e i client WCF è possibile usare un binding di sistema fornito da WCF, ovvero BasicHttpBinding.

Usare l'opzione ASP.NET 2.0 che consente di aggiungere gli attributi WebService e WebMethodAttribute a un'interfaccia anziché a una classe e di scrivere una classe per implementare l'interfaccia, come mostrato nell'esempio di codice seguente.

[WebService]  
public interface IEcho  
{  
    [WebMethod]  
    string Echo(string input);  
}  
  
public class Service : IEcho  
{  
  
   public string Echo(string input)  
   {  
        return input;  
    }  
}  

È preferibile utilizzare questa opzione. Infatti, l'interfaccia avente l'attributo WebService costituisce un contratto per le operazioni eseguite dal servizio che può essere riutilizzato con varie classi in grado di implementare tale contratto in modi diversi.

Evitare di utilizzare l'attributo SoapDocumentServiceAttribute per instradare i messaggi a metodi basati sul nome completo dell'elemento del corpo del messaggio SOAP anziché sull'intestazione HTTP SOAPAction. WCF usa l'intestazione HTTP SOAPAction per il routing dei messaggi.

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 del codice XML sia stato definito in modo esplicito. Quando si definisce un tipo di dati da usare con ASP. I servizi NETWeb in previsione dell'adozione di WCF eseguono le operazioni seguenti:

  • Definire il tipo utilizzando classi .NET Framework anziché l'XML Schema.

  • Aggiungere solo gli attributi SerializableAttribute e XmlRootAttribute alla classe, utilizzando quest'ultimo per definire in modo esplicito lo spazio dei nomi del tipo. Evitare di aggiungere attributi aggiuntivi dello 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 usati nei messaggi dai servizi Web ASP.NET possono essere elaborati come contratti di dati dalle applicazioni WCF. Ciò offre diversi vantaggi, tra cui il miglioramento delle prestazioni delle applicazioni WCF.

Evitare di utilizzare le opzioni di autenticazione fornite in Internet Information Services (IIS), I client WCF non le supportano. Se occorre proteggere un servizio, usare le opzioni fornite in WCF. Queste opzioni sono infatti 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 di primo livello in modo tale che qualsiasi applicazione ASP.NET supporti WCF. Ciò può avere effetti negativi sulle prestazioni, pertanto è possibile eliminare ServiceModel per il file Web.config come illustrato nell'esempio seguente.

<httpModules>  
    <remove name="ServiceModel" />  
</httpModules>

Vedi anche