Freigeben über


ContractDescription Klasse

Definition

Beschreibt einen Windows Communication Foundation-Vertrag (WCF), der angibt, was ein Endpunkt an die Außenwelt kommuniziert.

public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
Vererbung
ContractDescription

Beispiele

Im folgenden Beispiel werden mehrere Möglichkeiten gezeigt, ein ContractDescription-Objekt zu erstellen oder abzurufen. Es zeigt dann die verschiedenen Informationen an, die im ContractDescription-Objekt gespeichert sind.

Uri baseAddress = new Uri("http://localhost:8001/Simple");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

serviceHost.AddServiceEndpoint(
    typeof(ICalculator),
    new WSHttpBinding(),
    "CalculatorServiceObject");

// Enable Mex
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);

serviceHost.Open();

ContractDescription cd0 = new ContractDescription("ICalculator");
ContractDescription cd1 = new ContractDescription("ICalculator", "http://www.tempuri.org");
ContractDescription cd2 = ContractDescription.GetContract(typeof(ICalculator));
CalculatorService calcSvc = new CalculatorService();
ContractDescription cd3 = ContractDescription.GetContract(typeof(ICalculator), calcSvc);
ContractDescription cd4 = ContractDescription.GetContract(typeof(ICalculator), typeof(CalculatorService));
ContractDescription cd = serviceHost.Description.Endpoints[0].Contract;

Console.WriteLine("Displaying information for contract: {0}", cd.Name.ToString());

KeyedByTypeCollection<IContractBehavior> behaviors = cd.Behaviors;
Console.WriteLine("\tDisplay all behaviors:");
foreach (IContractBehavior behavior in behaviors)
{
    Console.WriteLine("\t\t" + behavior.ToString());
}

Type type = cd.CallbackContractType;

string configName = cd.ConfigurationName;
Console.WriteLine("\tConfiguration name: {0}", configName);

Type contractType = cd.ContractType;
Console.WriteLine("\tContract type: {0}", contractType.ToString());

bool hasProtectionLevel = cd.HasProtectionLevel;
if (hasProtectionLevel)
{
    ProtectionLevel protectionLevel = cd.ProtectionLevel;
    Console.WriteLine("\tProtection Level: {0}", protectionLevel.ToString());
}

string name = cd.Name;
Console.WriteLine("\tName: {0}", name);

string namespc = cd.Namespace;
Console.WriteLine("\tNamespace: {0}", namespc);

OperationDescriptionCollection odc = cd.Operations;
Console.WriteLine("\tDisplay Operations:");
foreach (OperationDescription od in odc)
{
    Console.WriteLine("\t\t" + od.Name);
}

SessionMode sm = cd.SessionMode;
Console.WriteLine("\tSessionMode: {0}", sm.ToString());

Collection<ContractDescription> inheretedContracts = cd.GetInheritedContracts();
Console.WriteLine("\tInherited Contracts:");
foreach (ContractDescription contractdescription in inheretedContracts)
{
    Console.WriteLine("\t\t" + contractdescription.Name);
}

Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();

// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
Dim baseAddress As New Uri("http://localhost:8001/Simple")
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)

serviceHost.AddServiceEndpoint(GetType(ICalculator), New WSHttpBinding(), "CalculatorServiceObject")

' Enable Mex
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
serviceHost.Description.Behaviors.Add(smb)

serviceHost.Open()

Dim cd0 As New ContractDescription("ICalculator")
Dim cd1 As New ContractDescription("ICalculator", "http://www.tempuri.org")
Dim cd2 As ContractDescription = ContractDescription.GetContract(GetType(ICalculator))
Dim calcSvc As New CalculatorService()
Dim cd3 As ContractDescription = ContractDescription.GetContract(GetType(ICalculator), calcSvc)
Dim cd4 As ContractDescription = ContractDescription.GetContract(GetType(ICalculator), GetType(CalculatorService))
Dim cd As ContractDescription = serviceHost.Description.Endpoints(0).Contract

Console.WriteLine("Displaying information for contract: {0}", cd.Name.ToString())

Dim behaviors As KeyedByTypeCollection(Of IContractBehavior) = cd.Behaviors
Console.WriteLine(Constants.vbTab & "Display all behaviors:")
For Each behavior As IContractBehavior In behaviors
    Console.WriteLine(Constants.vbTab + Constants.vbTab + CType(behavior, Object).ToString())
Next behavior

Dim type As Type = cd.CallbackContractType

Dim configName As String = cd.ConfigurationName
Console.WriteLine(Constants.vbTab & "Configuration name: {0}", configName)

Dim contractType As Type = cd.ContractType
Console.WriteLine(Constants.vbTab & "Contract type: {0}", contractType.ToString())

Dim hasProtectionLevel As Boolean = cd.HasProtectionLevel
If hasProtectionLevel Then
    Dim protectionLevel As ProtectionLevel = cd.ProtectionLevel
    Console.WriteLine(Constants.vbTab & "Protection Level: {0}", protectionLevel.ToString())
End If


Dim name As String = cd.Name
Console.WriteLine(Constants.vbTab & "Name: {0}", name)

Dim namespc As String = cd.Namespace
Console.WriteLine(Constants.vbTab & "Namespace: {0}", namespc)

Dim odc As OperationDescriptionCollection = cd.Operations
Console.WriteLine(Constants.vbTab & "Display Operations:")
For Each od As OperationDescription In odc
    Console.WriteLine(Constants.vbTab + Constants.vbTab + od.Name)
Next od

Dim sm As SessionMode = cd.SessionMode
Console.WriteLine(Constants.vbTab & "SessionMode: {0}", sm.ToString())

Dim inheretedContracts As Collection(Of ContractDescription) = cd.GetInheritedContracts()
Console.WriteLine(Constants.vbTab & "Inherited Contracts:")
For Each contractdescription As ContractDescription In inheretedContracts
    Console.WriteLine(Constants.vbTab + Constants.vbTab + contractdescription.Name)
Next contractdescription

Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()

' Close the ServiceHostBase to shutdown the service.
serviceHost.Close()

Hinweise

Ein WCF-Vertrag ist eine Auflistung von Vorgängen, die angibt, was der Endpunkt an die Außenwelt kommuniziert. Jeder Vorgang ist ein Nachrichtenaustausch. Beispielsweise bilden eine Anforderungsmeldung und eine zugeordnete Antwortmeldung einen Anforderung/Antwort-Nachrichtenaustausch.

Ein ContractDescription -Objekt wird verwendet, um WCF-Verträge und deren Vorgänge zu beschreiben. Innerhalb eines ContractDescription verfügt jeder Vertragsvorgang über einen entsprechenden OperationDescription, der Aspekte jedes zu dem Vertrag gehörenden Vorgangs beschreibt, wie beispielsweise, ob es sich um einen unidirektionalen Vorgang oder einen Anforderung/Antwort-Vorgang handelt. Jede OperationDescription beschreibt auch die Nachrichten, aus denen der Vorgang besteht, unter Verwendung einer MessageDescriptionCollection. ContractDescription enthält einen Verweis auf eine Schnittstelle, die den Vertrag über das Programmiermodell definiert. Diese Schnittstelle ist mit ServiceContractAttribute gekennzeichnet, und ihre Methoden, die Endpunktvorgängen entsprechen, sind mit dem OperationContractAttribute markiert.

Ein Duplexvertrag definiert die folgenden logischen Vorgänge:

  • Ein Satz, den der Dienst dem Client zum Aufrufen verfügbar macht.

  • Ein Satz, den der Client dem Dienst zum Aufrufen verfügbar macht.

Das Programmiermodell zur Definition eines Duplexvertrags teilt jeden Satz in eine separate Schnittstelle und wendet auf jede Schnittstelle Attribute an. In diesem Fall enthält ContractDescription einen Verweis auf jede der Schnittstellen, der diese zu einem Duplexvertrag zusammenfasst.

Ähnlich wie bei Bindungen verfügt jeder Vertrag über einen Name und einen Namespace, die ihn in den Metadaten des Diensts eindeutig kennzeichnen.

Konstruktoren

ContractDescription(String)

Initialisiert eine neue Instanz der ContractDescription-Klasse mit einem angegebenen Namen.

ContractDescription(String, String)

Initialisiert eine neue Instanz der ContractDescription-Klasse mit einem angegebenen, durch Namespace gekennzeichneten Namen.

Eigenschaften

Behaviors

Ruft die der Vertragsbeschreibung zugeordneten Verhaltensweisen ab.

CallbackContractType

Ruft den in der Vertragsbeschreibung angegebenen Rückrufvertragstyp ab oder legt diesen fest.

ConfigurationName

Ruft den Konfigurationsnamen für die Vertragsbeschreibung ab oder legt diesen fest.

ContractBehaviors

Ruft die Verhaltenauflistung für den Vertrag ab.

ContractType

Ruft den in der Vertragsbeschreibung angegebenen Vertragstyp ab oder legt diesen fest.

HasProtectionLevel

Ruft einen Wert ab, der angibt, ob für den Vertrag eine Schutzebene festgelegt ist.

Name

Ruft den Namen des Vertrags ab oder legt ihn fest.

Namespace

Ruft den Namespace für den Vertrag ab oder legt ihn fest.

Operations

Ruft die Auflistung der dem Vertrag zugeordneten Vorgangsbeschreibungen ab.

ProtectionLevel

Ruft die dem Vertrag zugeordnete Schutzebene ab oder legt sie fest.

SessionMode

Ruft einen Wert ab, der angibt, ob eine Sitzung durch den Vertrag benötigt wird, oder legt ihn fest.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetContract(Type)

Gibt die Vertragsbeschreibung für einen angegebenen Vertragstyp zurück.

GetContract(Type, Object)

Gibt die Vertragsbeschreibung für einen angegebenen Vertragstyp und eine angegebene Dienstimplementierung zurück.

GetContract(Type, Type)

Gibt die Vertragsbeschreibung für einen angegebenen Vertragstyp und einen angegebenen Diensttyp zurück.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetInheritedContracts()

Gibt eine Auflistung von Vertragsbeschreibungen zurück, die von der aktuellen Vertragsbeschreibung geerbt werden.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ShouldSerializeProtectionLevel()

Gibt einen Wert zurück, der angibt, ob die ProtectionLevel-Eigenschaft ihren Standardwert geändert hat und serialisiert werden soll.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: