Interoperabilität mit ASP.NET-WebdienstenInteroperability with ASP.NET Web Services

Interoperabilität zwischen ASP.NETASP.NET Webdienste und Windows Communication Foundation (WCF)-Webdienste erreichen, indem sichergestellt wird, dass mithilfe beider Technologien implementierte Dienste, die mit WS entsprechen-I Basic Profile 1.1-Spezifikation.Interoperability between ASP.NETASP.NET Web services and Windows Communication Foundation (WCF) Web services can be achieved by ensuring that services implemented using both technologies conform to the WS-I Basic Profile 1.1 specification. ASP.NETASP.NET Webdienste, die mit WS-I Basic Profile 1.1 werden mithilfe der vom System bereitgestellte Bindung WCF mit WCF-Clients interoperabel BasicHttpBinding. Web services that conform to WS-I Basic Profile 1.1 are interoperable with WCF clients by using WCF system-provided binding, BasicHttpBinding.

Verwenden Sie wie im folgenden Beispielcode gezeigt die in ASP.NET 2.0ASP.NET 2.0 gebotene Möglichkeit, das WebService-Attribut und das WebMethodAttribute-Attribut zu einer Schnittstelle anstatt zu einer Klasse hinzuzufügen und zum Implementieren der Schnittstelle eine Klasse zu schreiben.Use ASP.NET 2.0ASP.NET 2.0 option of adding the WebService and WebMethodAttribute attributes to an interface rather than to a class, and writing a class to implement the interface, as shown in the following sample code.

[WebService]  
public interface IEcho  
{  
    [WebMethod]  
    string Echo(string input);  
}  

public class Service : IEcho  
{  

   public string Echo(string input)  
   {  
        return input;  
    }  
}  

Die Verwendung dieser Option wird empfohlen, da die Schnittstelle mit dem WebService-Attribut einen Vertrag für die vom Dienst ausgeführten Vorgänge darstellt. Dieser Vertrag kann wiederholt für verschiedene Klassen verwendet werden, die den gleichen Vertrag möglicherweise auf unterschiedliche Art und Weise implementieren.Using this option is preferred, because the interface with the WebService attribute constitutes a contract for the operations performed by the service that can be reused with various classes that might implement that same contract in different ways.

Verwenden Sie das SoapDocumentServiceAttribute-Attribut nicht, um Nachrichten basierend auf dem voll qualifizierten Namen des Textelements der SOAP-Nachricht anstatt des SOAPAction-HTTP-Headers an Methoden weiterzuleiten.Avoid using the SoapDocumentServiceAttribute attribute to have messages routed to methods based on the fully-qualified name of the body element of the SOAP message rather than the SOAPAction HTTP header. WCF verwendet die SOAPAction HTTP-Header zum Weiterleiten von Nachrichten.WCF uses the SOAPAction HTTP header for routing messages.

Die XML, in die XmlSerializer standardmäßig einen Typ serialisiert, ist semantisch identisch mit der XML, in die DataContractSerializer einen Typ serialisiert, vorausgesetzt, der Namespace ist für die XML explizit definiert.The XML into which XmlSerializer serializes a type by default is semantically identical to the XML into which the DataContractSerializer serializes a type, provided the namespace for the XML is explicitly defined. Wenn Sie einen Datentyp für die Verwendung mit definieren ASP.NETASP.NETWebdienste in antizipation einer WCF, gehen Sie folgendermaßen vor:When defining a data type for use with ASP.NETASP.NETWeb services in anticipation of adopting WCF, do the following:

  • Definieren Sie den Typ mit .NET Framework-Klassen und nicht mit dem XML-Schema.Define the type using .NET Framework classes rather than XML Schema.

  • Fügen Sie der Klasse lediglich SerializableAttribute und XmlRootAttribute hinzu, wobei Sie mit dem zweiten Attribut den Namespace für den Typ explizit definieren.Add only the SerializableAttribute and the XmlRootAttribute to the class, using the latter to explicitly define the namespace for the type. Fügen Sie keine zusätzlichen Attribute aus dem System.Xml.Serialization-Namespace hinzu, um die Übersetzung der .NET Framework-Klasse in XML zu steuern.Do not add additional attributes from the System.Xml.Serialization namespace to control how the .NET Framework class is to be translated into XML.

  • Wenn Sie diese Vorgehensweise wählen, sollte es später kein Problem darstellen, die .NET-Klassen in Datenverträge umzuwandeln, indem Sie DataContractAttribute und DataMemberAttribute hinzufügen, ohne die XML erheblich zu ändern, in die die Klassen für die Übertragung serialisiert werden.By adopting this approach, you should be able to later make the .NET classes into data contracts with the addition of the DataContractAttribute and DataMemberAttribute without significantly altering the XML into which the classes are serialized for transmission. Die Nachrichten vom verwendeten Typen ASP.NETASP.NET Webdienste können von WCF-Clientanwendungen, was u. a. andere Vorteile, eine bessere Leistung in WCF-Anwendungen als Datenverträge verarbeitet werden.The types used in messages by ASP.NETASP.NET Web services can be processed as data contracts by WCF applications, yielding, among other benefits, better performance in WCF applications.

Vermeiden Sie die Verwendung der von den Internetinformationsdiensten (IIS) bereitgestellten Authentifizierungsoptionen.Avoid using the authentication options provided by Internet Information Services (IIS). WCF-Clients werden nicht unterstützt.WCF clients do not support them. Wenn ein Dienst geschützt werden muss, verwenden Sie die Optionen, die von WCF bereitgestellt werden, da diese Optionen robuster sind und auf Standardprotokollen basieren.If a service must be secured, use the options provided by WCF, because these options are robust and are based on standard protocols.

Durch das Laden von ServiceModel HttpModule verursachte LeistungsbeeinträchtigungenPerformance impact caused by loading the ServiceModel HttpModule

In .NET Framework 3.0 wurde das WCF-HttpModule-Element in der Stammdatei Web.config installiert, sodass jede ASP.NET-Anwendung WCF unterstützte.In the .NET Framework 3.0, the WCF HttpModule was installed in the root Web.config file such that every ASP.NET application was WCF enabled. Dies kann die Leistung beeinträchtigen. Sie können daher ServiceModel für die Datei Web.config entfernen, wie im folgenden Bespiel gezeigt.This might affect performance, so you can remove ServiceModel for the Web.config file as shown in the following example.

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

Siehe auchSee Also

Vorgehensweise: Konfigurieren eines WCF-Diensts für die Zusammenarbeit mit ASP.NET-WebdienstclientsHow to: Configure WCF Service to Interoperate with ASP.NET Web Service Clients