Delen via


Interoperabiliteit met ASP.NET Web Services

Interoperabiliteit tussen ASP.NET webservices en WCF-webservices (Windows Communication Foundation) kan worden bereikt door ervoor te zorgen dat services die worden geïmplementeerd met behulp van beide technologieën voldoen aan de WS-I Basic Profile 1.1-specificatie. ASP.NET webservices die voldoen aan WS-I Basic Profile 1.1 zijn interoperabel met WCF-clients door gebruik te maken van door het WCF-systeem geleverde binding, BasicHttpBinding.

Gebruik ASP.NET optie 2.0 om de WebService en WebMethodAttribute kenmerken toe te voegen aan een interface in plaats van aan een klasse en een klasse te schrijven om de interface te implementeren, zoals wordt weergegeven in de volgende voorbeeldcode.

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

Het gebruik van deze optie heeft de voorkeur, omdat de interface met het WebService kenmerk een contract vormt voor de bewerkingen die worden uitgevoerd door de service die opnieuw kan worden gebruikt met verschillende klassen die hetzelfde contract op verschillende manieren kunnen implementeren.

Vermijd het gebruik van het SoapDocumentServiceAttribute kenmerk om berichten te laten routeren naar methoden op basis van de volledig gekwalificeerde naam van het hoofdtekstelement van het SOAP-bericht in plaats van de SOAPAction HTTP-header. WCF gebruikt de SOAPAction HTTP-header voor routeringsberichten.

De XML waarin XmlSerializer een type standaard wordt geserialiseerd, is semantisch identiek aan de XML waarin een DataContractSerializer type wordt geserialiseerd, mits de naamruimte voor de XML expliciet is gedefinieerd. Bij het definiëren van een gegevenstype voor gebruik met ASP. NETWeb-services in afwachting van de overstap naar WCF, doet u het volgende:

  • Definieer het type met behulp van .NET Framework-klassen in plaats van XML-schema.

  • Voeg alleen de SerializableAttribute en de XmlRootAttribute klasse toe met behulp van de laatste om expliciet de naamruimte voor het type te definiëren. Voeg geen extra kenmerken toe uit de System.Xml.Serialization naamruimte om te bepalen hoe de .NET Framework-klasse moet worden omgezet in XML.

  • Door deze benadering te gebruiken, moet u de .NET-klassen later in gegevenscontracten kunnen maken met de toevoeging van de DataContractAttribute en DataMemberAttribute zonder de XML-indeling te wijzigen waarin de klassen worden geserialiseerd voor verzending. De typen die worden gebruikt in berichten door ASP.NET webservices kunnen worden verwerkt als gegevenscontracten door WCF-toepassingen, wat onder andere voordelen oplevert, betere prestaties in WCF-toepassingen.

Vermijd het gebruik van de verificatieopties van Internet Information Services (IIS). WCF-clients bieden geen ondersteuning voor deze clients. Als een service moet worden beveiligd, gebruikt u de opties van WCF, omdat deze opties robuust zijn en zijn gebaseerd op standaardprotocollen.

Invloed op de prestaties veroorzaakt door het laden van de ServiceModel HttpModule

In .NET Framework 3.0 is de WCF HttpModule geïnstalleerd in het hoofdbestand Web.config, zodat elke ASP.NET toepassing WCF is ingeschakeld. Dit kan van invloed zijn op de prestaties, zodat u het web.config-bestand kunt verwijderen ServiceModel , zoals wordt weergegeven in het volgende voorbeeld.

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

Zie ook