Einführung in die Erweiterbarkeit

Mit dem WCF-Anwendungsmodell (Windows Communication Foundation) wird den meisten Kommunikationsanforderungen aller beliebigen verteilten Anwendungen entsprochen. Es treten jedoch häufig Szenarien auf, die das Standardanwendungsmodell und vom System bereitgestellte Implementierungen nicht unterstützen. Mit dem WCF-Erweiterbarkeitsmodell werden benutzerdefinierte Szenarios unterstützt, indem das Systemverhalten auf jeder Ebene geändert werden kann. Dies ist sogar bis zum Ersatz des gesamten Anwendungsmodells möglich. Dieses Thema gliedert die verschiedenen Bereiche der Erweiterung und verweist auf weitere Informationen zu jeder Erweiterung.

Zu erweiternde Bereiche

Folgende Werte können erweitert werden:

  • Die Anwendungslaufzeit. Dies erweitert das Zustellen und Verarbeiten von Nachrichten für die Anwendung. Dieser Bereich beinhaltet auch die Erweiterung von Sicherheitssystem, Metadatensystem, Serialisierungssystem und der Bindungen und Bindungselemente, die die Anwendung mit dem zugrunde liegenden Kanalsystem verbinden.

  • Der Kanal und die Kanallaufzeit. Dadurch wird das auf Nachrichtenebene funktionierende System erweitert und Protokoll-, Transport- und Codierungsunterstützung bereitgestellt.

  • Die Hostlaufzeit. Dadurch wird die Beziehung der Hostinganwendungsdomäne zum Kanal und der Anwendungslaufzeit erweitert.

Erweitern der Anwendungslaufzeit

In WCF-Anwendungen unterscheidet man zwischen Nachrichten, die für einen entsprechenden Kanal und Nachrichten, die für die Anwendung selbst vorgesehen sind. Kanalnachrichten unterstützen einige kanalbezogene Funktionen, zum Beispiel das Einrichten einer sicheren Konversation oder einer zuverlässigen Sitzung. Diese Nachrichten sind nicht für die Anwendungslaufzeit verfügbar; sie werden vor Einbeziehung der Anwendungsebene verarbeitet.

Anwendungsnachrichten beinhalten Daten für einen Client- oder einen Dienstvorgang, der von Ihnen oder einem Kunden erstellt wurde. Diese Nachrichten sind je nach Anforderung für das Erweiterungssystem auf Anwendungsebene in Nachrichten- oder Objektform verfügbar.

Alle Nachrichten durchlaufen das Kanalsystem; nur Anwendungsnachrichten werden vom Kanalsystem an die Anwendung weitergegeben. Um neue Funktionen auf Kanalebene zu erstellen, muss das Kanalsystem erweitert werden. Sollen neue Funktionen auf Anwendungsebene erstellt werden, muss die Dienst- oder Clientlaufzeit (Verteiler bzw. Kanalfactorys) erweitert werden. Weitere Informationen zum Erweitern der Anwendungslaufzeit finden Sie unter Erweitern von ServiceHost und der Dienstmodellebene.

Erweitern der Sicherheit

Um benutzerdefinierte Sicherheitsmechanismen (zum Beispiel Token und Anmeldeinformationen) zu erstellen, muss das Sicherheitssystem erweitert werden. Weitere Informationen finden Sie unter Erweitern der Sicherheit.

Erweitern von Metadaten

Sollen die Metadaten nicht nur im Standardsystem verfügbar gemacht werden, muss das Metadatensystem erweitert werden. Weitere Informationen finden Sie unter Erweitern des Metadatensystems.

Erweitern der Serialisierung

Wenn Sie benutzerdefinierte Encoder erstellen und Datenersatzzeichen oder andere Elemente, bei denen übertragene Daten angepasst werden, bereitstellen möchten, erweitern Sie das Serialisierungssystem. Weitere Informationen finden Sie unter Erweitern von Encodern und Serialisierungsprogrammen.

Erweitern von Bindungen

Sollen Transport- oder Protokollkanäle der Anwendungsebene zugeordnet werden, muss das Bindungssystem erweitert werden. Weitere Informationen finden Sie unter Erweitern von Bindungen.

Erweitern des Kanalsystems

Informationen zum Erstellen von Kanälen, die benutzerdefinierte Transporte oder Protokollfunktionen unterstützen, erhalten Sie unter Erweitern der Kanalschicht.

Erweitern des Diensthostsystems

Soll das dienstweite Anwendungsmodell geändert werden, ist eine Erweiterung der System.ServiceModel.ServiceHostBase-Klasse erforderlich. Weitere Informationen finden Sie unter Erweitern von ServiceHost und der Dienstmodellebene.

Soll die Beziehung zwischen der Hostanwendungsdomäne und dem Diensthost geändert werden, ist eine Erweiterung der System.ServiceModel.Activation.ServiceHostFactory-Klasse erforderlich. Weitere Informationen finden Sie unter Erweitern des Hostings mithilfe von ServiceHostFactory.

Siehe auch