ContractDescription Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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) |