Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

ClientRuntime-Klasse

Aktualisiert: November 2007

Die Einfügemarke für Klassen, die den Funktionsumfang von Windows Communication Foundation (WCF)-Clientobjekten für alle durch die Clientanwendung verarbeiteten Nachrichten erweitert.

Namespace:  System.ServiceModel.Dispatcher
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public sealed class ClientRuntime
public final class ClientRuntime
public final class ClientRuntime

WCF-Clientobjekte, unabhängig davon, ob sie eine Erweiterung von ClientBase<TChannel> oder von IClientChannel sind, werden von Windows Communication Foundation (WCF)-Clientanwendungen verwendet, um Methodenaufrufe in ausgehende Nachrichten und eingehende Nachrichten in Objekte umzuwandeln, die dann an die Ergebnisse der Clientmethoden weitergeleitet werden.

Die ClientRuntime-Klasse ist ein Erweiterungspunkt, an den Sie Erweiterungsobjekte anhängen können, die Nachrichten abfangen und das Clientverhalten auf alle Vorgänge ausdehnen. Abfangobjekte können alle Nachrichten in einem bestimmten Vertrag verarbeiten, nur Nachrichten für bestimmte Vorgänge verarbeiten, eine benutzerdefinierte Kanalinitialisierung durchführen und sonstiges benutzerdefiniertes Verhalten von Clientanwendungen implementieren. Eine Übersicht über Clientarchitektur finden Sie unter Clientarchitektur. Weitere Informationen zur Clientprogrammierung finden Sie unter Zugreifen auf Dienste mithilfe eines Clients. Einzelheiten zur benutzerdefinierten Anpassung und deren Ausführung finden Sie unter Erweitern von Clients.

  • Die CallbackDispatchRuntime-Eigenschaft gibt das DispatchRuntime-Objekt für durch Dienste initiierte Rückrufvorgänge zurück.

  • Die OperationSelector-Eigenschaft akzeptiert ein benutzerdefiniertes Vorgangsauswahlobjekt, um das Routing von Clientnachrichten zu steuern.

  • Die ChannelInitializers-Eigenschaft ermöglicht das Hinzufügen eines Kanalinitialisierers, der den Clientkanal prüfen oder abändern kann.

  • Die InteractiveChannelInitializers-Eigenschaft kann zum Anzeigen einer visuellen Eingabeaufforderung verwendet werden, die es einem Benutzer ermöglicht, vor dem Öffnen eines Kanals Anmeldeinformationen auszuwählen.

  • Die Operations-Eigenschaft ruft eine Auflistung von ClientOperation-Objekten ab, denen Sie benutzerdefinierte Nachrichteninterceptoren hinzufügen können, die spezielle Funktonen für die Nachrichten dieses Vorgangs bereitstellen.

  • Die ManualAddressing-Eigenschaft ermöglicht es einer Anwendung, bestimmte automatische Adressierungsheader zu deaktivieren, um die Adressierung direkt zu steuern.

  • Die MaxFaultSize-Eigenschaft ermöglicht es dem Client, die Größe der Fehlermeldungen einzuschränken, die der Client entgegennimmt.

  • Die MessageInspectors-Eigenschaft ruft eine Auflistung von IClientMessageInspector-Objekten ab, denen Sie benutzerdefinierte Nachrichteninterceptoren für alle Nachrichten hinzufügen können, die einen Client durchlaufen.

  • Die UnhandledClientOperation-Eigenschaft gibt den Vorgang zurück, an den unerwartete Nachrichten übergeben werden.

  • Die ValidateMustUnderstand-Eigenschaft informiert das System, ob es prüfen sollte, dass als MustUnderstand markierte SOAP-Header in der Tat verstanden wurden.

  • Die Via-Eigenschaft legt den Wert des Ziels der Nachricht auf der Transportebene fest, um Vermittler und andere Szenarios zu unterstützen.

Außerdem gibt es eine Reihe weiterer Eigenschaften, die die Clientvertragsinformationen abrufen:

Wenn es sich bei dem Client um einen Duplexclient handelt, rufen die folgenden Eigenschaften auch Rückruftyp und Laufzeit des Clients ab.

Im folgenden Codebeispiel fügt ein System.ServiceModel.Description.IEndpointBehavior einen System.ServiceModel.Dispatcher.IClientMessageInspector in die Clientlaufzeit ein, indem dieser der MessageInspectors-Eigenschaft hinzugefügt wird.

#region IEndpointBehavior Members
public void AddBindingParameters(
  ServiceEndpoint endpoint, BindingParameterCollection bindingParameters
) { return; }

public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
  clientRuntime.MessageInspectors.Add(new Inspector());
  foreach (ClientOperation op in clientRuntime.Operations)
    op.ParameterInspectors.Add(new Inspector());
}

public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new Inspector());
  foreach (DispatchOperation op in endpointDispatcher.DispatchRuntime.Operations)
    op.ParameterInspectors.Add(new Inspector());
}

public void Validate(ServiceEndpoint endpoint){ return; }


Das folgende Codebeispiel zeigt eine Konfigurationsdatei, die das Endpunktverhalten in den Clientendpunkt lädt.

  <client>
      <endpoint 
        address="http://localhost:8080/SampleService" 
        behaviorConfiguration="clientInspectorsAdded" 
        binding="wsHttpBinding"
        bindingConfiguration="WSHttpBinding_ISampleService" 
        contract="ISampleService"
        name="WSHttpBinding_ISampleService"
      >
      </endpoint>
  </client>
<behaviors>
  <endpointBehaviors>
    <behavior name="clientInspectorsAdded">
      <clientInterceptors />
    </behavior>
  </endpointBehaviors>
</behaviors>
<extensions>
  <behaviorExtensions>
    <add 
      name="clientInterceptors" 
      type="Microsoft.WCF.Documentation.InspectorInserter, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
  />
  </behaviorExtensions>
</extensions>


System.Object
  System.ServiceModel.Dispatcher.ClientRuntime

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0
Anzeigen: