Windows Communication Foundation-Glossar

Die folgenden Begriffe sind für Windows Communication Foundation (WCF) definiert.

Begriffe

Begriff Definition

Adresse (address)

Eine Adresse gibt den Ort an, an dem Nachrichten empfangen werden. Sie wird als ein Uniform Resource Identifier (URI) angegeben. Der URI-Schemateil benennt den Transportmechanismus, der zum Erreichen der Adresse verwendet wird, z. B. HTTP und TCP. Der hierarchische Teil des URI enthält einen eindeutigen Ort, dessen Format vom Transportmechanismus abhängt. Die Endpunktadresse ermöglicht es, für jeden Endpunkt in einem Dienst eindeutige Endpunktadressen zu erstellen oder unter bestimmten Voraussetzungen eine Adresse für mehrere Endpunkte zu verwenden.

Anwendungsendpunkt (application endpoint)

Ein von der Anwendung verfügbar gemachter Endpunkt, der einem Dienstvertrag entspricht, der von der Anwendung implementiert wurde.

Beendigungsvorgang (terminating operation)

Ein Vorgang, der als letzte Nachricht in einer vorhandenen Sitzung aufgerufen wird. Im Standardfall verwendet WCF das Dienstobjekt und seinen Kontext wieder, nachdem die Sitzung, der der Dienst zugeordnet war, geschlossen wurde.

Bindung (binding)

Eine Bindung definiert, wie ein Endpunkt mit der Umgebung kommuniziert. Sie besteht aus einer Reihe von Komponenten namens "Bindungselemente", die als Kommunikationsinfrastruktur aufeinander "gestapelt" werden. Eine Bindung definiert zumindest das Transportprotokoll (z. B. HTTP oder TCP) und die verwendete Codierung (z. B. Text oder binär). Eine Bindung kann Bindungselemente enthalten, die Details wie die Sicherheitsmechanismen zum Schützen von Nachrichten oder das von einem Endpunkt verwendete Nachrichtenmuster angeben.

Bindungselement (binding element)

Ein Bindungselement stellt einen bestimmten Teil der Bindung dar, z. B. einen Transport, eine Codierung, eine Implementierung eines Protokolls auf Infrastrukturebene (z. B. WS-ReliableMessaging) oder eine andere Komponente des Kommunikationsstapels.

Clientanwendung (client application)

Eine Clientanwendung ist ein Programm, das Nachrichten mit einem oder mehreren Endpunkten austauscht. Die Clientanwendung beginnt mit der Erstellung einer Instanz eines WCF-Clients und dem Aufrufen von Methoden des WCF-Clients. Es sollte beachtet werden, dass eine einzelne Anwendung sowohl ein Client als auch ein Dienst sein kann.

Codierung (coding)

Die Codierung ermöglicht es dem Entwickler, die genaue Kontrolle über alle Komponenten des Diensts oder Clients zu behalten, und alle Einstellungen, die über die Konfiguration gemacht werden, können überprüft und bei Bedarf durch den Code aufgehoben werden. Eine Anwendung kann entweder über die Codierung, über die Konfiguration oder über eine Kombination aus beidem gesteuert werden.

Datenvertrag (data contract)

Die von einem Dienst verwendeten Datentypen müssen in Metadaten beschrieben werden, damit andere mit dem Dienst interagieren können. Die Beschreibungen der Datentypen sind als Datenvertrag bekannt, und die Typen können in jedem Teil der Nachricht verwendet werden, z. B. als Parameter oder Rückgabetypen. Wenn der Dienst nur einfache Typen verwendet, ist es nicht erforderlich, unbedingt Datenverträge zu verwenden.

Dienst (service)

Ein Dienst ist ein Konstrukt, das einen oder mehrere Endpunkte verfügbar macht, wobei jeder Endpunkt wiederum einen oder mehrere Dienstvorgänge verfügbar macht.

Dienstvertrag (service contract)

Der Dienstvertrag verknüpft mehrere verwandte Vorgänge zu einer einzigen Funktionseinheit. Der Vertrag kann Einstellungen auf Dienstebene definieren, z. B. den Namespace des Diensts, einen entsprechenden Rückrufvertrag und andere derartige Einstellungen. In den meisten Fällen wird der Vertrag definiert, indem eine Schnittstelle in der gewünschten Programmiersprache erstellt wird und das T:System.ServiceModel.ServiceContractAttribute-Attribut auf die Schnittstelle angewendet wird. Der tatsächliche Dienstcode ergibt sich aus der Implementierung der Schnittstelle.

Dienstvorgang (service operation)

Ein Dienstvorgang ist ein Ablauf, der im Code eines Diensts definiert ist und der die Funktionalität für einen Vorgang implementiert. Dieser Vorgang wird anderen Clients in Form von Methoden auf einem WCF-Client verfügbar gemacht. Diese Methode kann einen Wert zurückgeben und eine optionale Anzahl an Argumenten übernehmen, oder sie kann keine Argumente übernehmen und keine Antwort zurückgeben. Beispielsweise kann ein Vorgang, der als ein einfaches "Hallo" fungiert, als Benachrichtigung über die Präsenz eines Clients und zum Starten einer Reihe von Vorgängen verwendet werden.

Endpunkt (endpoint)

Ein Endpunkt ist ein Konstrukt, von dem Nachrichten gesendet oder empfangen werden (oder beides). Er besteht aus einem Ort (einer Adresse), der definiert, wohin die Nachrichten gesendet werden können, einer Spezifikation des Kommunikationsmechanismus (einer Bindung), die beschreibt, wie die Nachrichten gesendet werden sollen, und einer Definition eines Satzes von Nachrichten, die an diesen Ort gesendet oder dort empfangen werden können (oder beides), sowie aus einem Dienstvertrag, der beschreibt, welche Nachricht gesendet werden kann. Ein WCF-Dienst wird allgemein als eine Auflistung von Endpunkten verfügbar gemacht.

Fehlervertrag (fault contract)

Ein Fehlervertrag kann einem Dienstvorgang zugeordnet werden, um Fehler anzumerken, die dem Anrufer zurückgegeben werden können. Einem Vorgang können keine oder mehrere Fehler zugeordnet werden. Diese Fehler sind SOAP-Fehler, die als Ausnahmen im Programmiermodell erstellt werden. Die Ausnahme wird in einen SOAP-Fehler konvertiert, der dann an den Client gesendet werden kann.

Hosting (hosting)

Ein Dienst muss in einem Prozess gehostet werden. Ein Host ist eine Anwendung, die die Lebensdauer des Diensts kontrolliert. Dienste können selbst gehostet werden oder durch einen vorhandenen Hostingprozess verwaltet werden.

Hostingprozess (hosting process)

Ein Hostingprozess ist eine Anwendung, die zum Hosten von Diensten dient. Dazu gehören Internetinformationsdienste (IIS), Windows Activation Services (WAS) und Windows-Dienste. In diesen gehosteten Szenarien kontrolliert der Host die Lebensdauer des Diensts. Mit IIS kann beispielsweise ein virtuelles Verzeichnis eingerichtet werden, das die Assembly- und die Konfigurationsdatei des Diensts enthält. Wenn eine Nachricht empfangen wird, startet IIS den Dienst und kontrolliert seine Lebensdauer.

Initiierungsvorgang (initiating operation)

Ein Vorgang, der als erster Vorgang einer neuen Sitzung aufgerufen wird. Nicht-Initiierungsvorgänge können nur aufgerufen werden, nachdem mindestens ein Initiierungsvorgang aufgerufen wurde.

Instanziierungsmodell (instancing model)

Ein Dienst verfügt über ein Instanziierungsmodell. Es gibt drei Instanziierungsmodelle: "einzeln", bei dem ein einzelnes CLR-Objekt alle Clients bedient; "pro Aufruf", bei dem ein neues CLR-Objekt erstellt wird, um jeden Client-Anruf abzuarbeiten; und "pro Sitzung", bei dem ein Satz von CLR-Objekten erstellt wird (jeweils einer für jede einzelne Sitzung). Die Wahl des Instanziierungsmodells hängt von den Anwendungsanforderungen und dem erwarteten Nutzungsmuster des Diensts ab.

Kanal (channel)

Ein Kanal ist eine konkrete Implementierung eines Bindungselements. Die Bindung stellt die Konfiguration dar, und der Kanal ist die Implementierung, die mit dieser Konfiguration verknüpft ist. Deshalb ist jedem Bindungselement ein Kanal zugeordnet. Kanäle werden übereinander gestapelt, um die konkrete Implementierung der Bindung zu erstellen: den Kanalstapel.

Konfiguration (configuration)

Die Konfiguration bietet den Vorteil, dass auch andere Personen als der Entwickler (z. B. ein Netzwerkadministrator) die Client- und die Dienstparameter festlegen können, nachdem der Code geschrieben wurde, ohne dass eine neue Kompilierung erforderlich wäre. Die Konfiguration ermöglicht nicht nur das Festlegen von Werten wie Endpunktadressen, sondern auch eine weitere Steuerung durch die Möglichkeit, Endpunkte, Bindungen und Verhalten hinzuzufügen. Eine Anwendung kann entweder über die Konfiguration, über die Codierung oder über eine Kombination aus beidem gesteuert werden.

Metadaten (metadata)

Die Metadaten eines Diensts beschreiben die Merkmale des Diensts, die eine externe Entität zur Kommunikation mit dem Dienst verstehen muss. Metadaten können über das ServiceModel Metadata Utility Tool (Svcutil.exe) verarbeitet werden, um einen WCF-Client und eine dazugehörige Konfiguration zu erstellen, die eine Clientanwendung zur Interaktion mit dem Dienst nutzen kann. Zu den vom Dienst verfügbar gemachten Metadaten gehören XML-Schemadokumente, die den Datenvertrag des Diensts definieren, und WSDL-Dokumente, die die Methoden des Diensts beschreiben. Bei Aktivierung werden die Metadaten für den Dienst automatisch von WCF erstellt, indem der Dienst und seine Endpunkte überprüft werden. Zum Veröffentlichen von Metadaten von einem Dienst aus müssen Sie das Metadatenverhalten explizit aktivieren.

Modus "Transport mit Nachrichtenanmeldeinformationen" (transport with message credential security mode)

Dieser Modus verwendet die Transportschicht, um Vertraulichkeit, Authentifizierung und Integrität der Nachrichten sicherzustellen, während jede der Nachrichten mehrere Anmeldeinformationen (Ansprüche) enthalten kann, die von den Empfängern der Nachricht benötigt werden.

Nachricht (message)

Eine Nachricht ist eine eigenständige Dateneinheit, die aus mehreren Teilen bestehen kann, unter anderem aus Text und Headern.

Nachrichtenvertrag (message contract)

Ein Nachrichtenvertrag beschreibt das Format einer Nachricht. Er erklärt beispielsweise, ob Nachrichtenelemente in Header oder in den Text gehören, welches Sicherheitsniveau auf welche Elemente der Nachricht angewendet werden soll usw.

Nachrichtensicherheitsmodus (message security mode)

Der Nachrichtensicherheitsmodus gibt an, dass Sicherheit bereitgestellt wird, indem sicherheitstechnische Daten implementiert werden. Jede Nachricht enthält die erforderlichen Mechanismen, um während ihrer Übertragung Sicherheit zu gewährleisten und um den Empfängern die Möglichkeit zu bieten, Manipulationen zu erkennen und die Nachrichten zu entschlüsseln. So ist die Sicherheit in jeder einzelnen Nachricht integriert, sodass End-to-End-Sicherheit über mehrere Hops gewährleistet ist. Da Sicherheitsinformationen Teil der Nachricht werden, ist es außerdem möglich, mehrere Arten von Anmeldeinformationen in die Nachricht aufzunehmen (diese werden als Ansprüche bezeichnet). Dieser Ansatz hat außerdem den Vorteil, dass die Nachricht sicher über jeden Transport übermittelt werden kann, u. a. auch über mehrere Transporte zwischen Ursprungs- und Zielort. Der Nachteil dieses Ansatzes ist die Komplexität der eingesetzten kryptografischen Mechanismen, die zu Leistungsbeeinträchtigungen führen.

Selbst gehosteter Dienst (self-hosted service)

Ein selbst gehosteter Dienst wird innerhalb einer Prozessanwendung ausgeführt, die der Entwickler erstellt hat. Der Entwickler kontrolliert seine Lebensdauer, legt die Eigenschaften des Diensts fest, öffnet den Dienst (wodurch dieser in einen Überwachungsmodus versetzt wird) und schließt den Dienst.

Sicherheit (security)

Zur Sicherheit in WCF gehören Vertraulichkeit (Verschlüsselung von Nachrichten zum Verhindern von Lauschangriffen), Integrität (Erkennung von manipulierten Nachrichten), Authentifizierung (Prüfen von Servern und Clients) und Autorisierung (Kontrolle des Zugriffs auf Ressourcen). Diese Funktionen werden entweder durch die Nutzung vorhandener Sicherheitsmechanismen wie TLS über HTTP (auch als "HTTPS" bekannt) oder durch die Implementierung von verschiedenen WS-*-Sicherheitsspezifikationen geboten.

Transportsicherheitsmodus (transport security mode)

Sicherheit kann durch einen von drei Modi gewährleistet werden: Transportmodus, Nachrichtensicherheitsmodus und Modus "Transport mit Nachrichtenanmeldeinformationen". Der Transportsicherheitsmodus legt fest, dass Vertraulichkeit, Integrität und Authentifizierung über die Transportschichtmechanismen (wie HTTPS) gewährleistet werden. Bei Nutzung eines Transports wie HTTPS hat dieser Modus den Vorteil, dass er effizient und aufgrund seiner weiten Verbreitung im Internet gut verständlich ist. Der Nachteil ist, dass diese Art von Sicherheit auf jeden Hop im Kommunikationspfad einzeln angewendet wird, was die Kommunikation anfällig für einen Man-In-The-Middle-Angriff (MITM-Angriff, Janusangriff) macht.

Verhalten (behavior)

Ein Verhalten ist eine Komponente, die verschiedene Laufzeitaspekte eines Diensts, eines Endpunkts, eines bestimmten Vorgangs oder eines Clients steuert. Verhalten werden gemäß ihrem Umfang gruppiert: allgemeine Verhalten, die alle Endpunkte global beeinflussen, Dienstverhalten, die nur dienstbezogene Aspekte beeinflussen, Endpunktverhalten, die nur endpunktbezogene Eigenschaften beeinflussen, und Verhalten auf Vorgangsebene, die bestimmte Vorgänge beeinflussen.

Vertrag (contract)

Ein Vertrag ist eine Spezifikation der Unterstützung für den entsprechenden Vertragstyp. Ein Dienstvertrag ist beispielsweise eine Spezifikation für eine Gruppe von Vorgängen. In WCF verfügen Verträge über eine Hierarchie, die sich in den Beschreibungsobjekten des System.ServiceModel.Description-Namespace widerspiegeln. Ein Dienstvertrag ist der größte Vertragsbereich in WCF. Jeder Dienstvorgang in einem Dienstvertrag verfügt über einen Vorgangsvertrag, in dem die Nachrichten (einschließlich der Fehlernachrichten) angegeben sind, die vom Vorgang ausgetauscht werden können; ebenso wird die Richtung angegeben. Jede Nachricht in einem Vorgang verfügt über einen Nachrichtenvertrag und eine Spezifikation für die Struktur des SOAP-Nachrichtenumschlags. Darüber hinaus hat jeder Nachrichtenvertrag einen Datenvertrag, der die in den Nachrichten enthaltenen Datenstrukturen angibt.

Vom System bereitgestellte Bindungen (system-provided bindings)

WCF bietet einige vom System bereitgestellte Bindungen. Dies sind Auflistungen von Bindungselementen, die für bestimmte Szenarien optimiert werden. T:System.ServiceModel.WSHttpBinding ist beispielsweise für die Interoperabilität mit Diensten vorgesehen, die verschiedene WS-*-Spezifikationen implementieren. Diese Bindungen sparen Zeit, da sie nur diejenigen Optionen bereitstellen, die auf das spezifische Szenario korrekt angewendet werden können. Wenn eine dieser Bindungen die Anforderungen nicht erfüllt, können Sie eine eigene benutzerdefinierte Bindung erstellen.

Vorgangsvertrag (operation contract)

Ein Vorgangsvertrag definiert die Parameter und den Rückgabetyp eines Vorgangs. Beim Erstellen einer Schnittstelle, die den Dienstvertrag definiert, wird ein Vorgangsvertrag angegeben, indem das T:System.ServiceModel.OperationContractAttribute-Attribut auf jede Methodendefinition angewendet wird, die Teil des Vertrags ist. Die Vorgänge können so gestaltet werden, dass sie eine einzelne Nachricht annehmen und eine einzelne Nachricht zurückgeben oder dass sie einen Typensatz annehmen und einen Typ zurückgeben. Im letzteren Fall bestimmt das System das Format der Nachrichten, die für diesen Vorgang ausgetauscht werden müssen.

WCF-Client (WCF client)

Ein WCF-Client ist ein Clientanwendungskonstrukt, das die Dienstvorgänge als Methoden verfügbar macht (in der gewünschten .NET Framework-Programmiersprache, u. a. Visual Basic oder Visual C#). Jede Anwendung kann einen WCF-Client hosten, einschließlich einer Anwendung, die einen Dienst hostet. Deshalb ist es möglich, einen Dienst zu erstellen, der WCF-Clients anderer Dienste einschließt. Ein WCF-Client kann automatisch über das ServiceModel Metadata Utility Tool (Svcutil.exe) erstellt werden und auf einen ausgeführten Dienst verweisen, der Metadaten veröffentlicht.

WS-* (WS-*)

Kurzform für die ständig steigende Zahl von Web Service (WS)-Spezifikationen wie WS-Sicherheit, WS-ReliableMessaging usw., die in WCF implementiert sind.