Dela via


Samverkan med ASP.NET Web Services

Samverkan mellan ASP.NET webbtjänster och WCF-webbtjänster (Windows Communication Foundation) kan uppnås genom att säkerställa att tjänster som implementeras med båda teknikerna överensstämmer med WS-I Basic Profile 1.1-specifikationen. ASP.NET webbtjänster som överensstämmer med WS-I Basic Profile 1.1 är kompatibla med WCF-klienter med hjälp av WCF-bindning som tillhandahålls av systemet. BasicHttpBinding

Använd ASP.NET 2.0-alternativet för att lägga till attributen WebService och WebMethodAttribute i ett gränssnitt i stället för till en klass och skriva en klass för att implementera gränssnittet, som du ser i följande exempelkod.

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

Det här alternativet rekommenderas eftersom gränssnittet med WebService attributet utgör ett kontrakt för de åtgärder som utförs av tjänsten som kan återanvändas med olika klasser som kan implementera samma kontrakt på olika sätt.

Undvik att använda SoapDocumentServiceAttribute attributet för att dirigera meddelanden till metoder baserat på det fullständigt kvalificerade namnet på brödtextelementet i SOAP-meddelandet i stället SOAPAction för HTTP-huvudet. WCF använder SOAPAction HTTP-huvudet för att dirigera meddelanden.

Xml-koden som XmlSerializer serialiserar en typ till är som standard semantiskt identisk med DEN XML som DataContractSerializer serialiserar en typ i, förutsatt att namnområdet för XML uttryckligen har definierats. När du definierar en datatyp för användning med ASP. NETWeb-tjänster i väntan på att införa WCF gör du följande:

  • Definiera typen med hjälp av .NET Framework-klasser i stället för XML-schema.

  • Lägg bara SerializableAttribute till och XmlRootAttribute till klassen med hjälp av det senare för att explicit definiera namnområdet för typen. Lägg inte till ytterligare attribut från System.Xml.Serialization namnområdet för att styra hur .NET Framework-klassen ska översättas till XML.

  • Genom att använda den här metoden bör du senare kunna göra .NET-klasserna till datakontrakt med tillägget av DataContractAttribute och DataMemberAttribute utan att avsevärt ändra XML-koden som klasserna serialiseras till för överföring. De typer som används i meddelanden av ASP.NET webbtjänster kan bearbetas som datakontrakt av WCF-program, vilket bland annat ger bättre prestanda i WCF-program.

Undvik att använda de autentiseringsalternativ som tillhandahålls av Internet Information Services (IIS). WCF-klienter stöder dem inte. Om en tjänst måste skyddas använder du de alternativ som tillhandahålls av WCF, eftersom dessa alternativ är robusta och baseras på standardprotokoll.

Prestandapåverkan som orsakas av inläsning av ServiceModel HttpModule

I .NET Framework 3.0 installerades WCF HttpModule i rotfilen Web.config så att varje ASP.NET program var WCF aktiverat. Detta kan påverka prestanda, så du kan ta bort ServiceModel för filen Web.config enligt följande exempel.

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

Se även