Udostępnij za pośrednictwem


ContractDescription Klasa

Definicja

Opisuje kontrakt programu Windows Communication Foundation (WCF), który określa, co punkt końcowy komunikuje się ze światem zewnętrznym.

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

Przykłady

Poniższy przykład przedstawia kilka sposobów tworzenia lub pobierania obiektu ContractDescription. Następnie wyświetla różne informacje przechowywane w obiekcie ContractDescription.

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()

Uwagi

Kontrakt WCF to kolekcja operacji, która określa, co punkt końcowy komunikuje się ze światem zewnętrznym. Każda operacja to wymiana komunikatów. Na przykład wiadomość żądania i skojarzona wiadomość odpowiedzi tworzą wymianę żądania/wiadomości odpowiedzi.

Obiekt ContractDescription służy do opisywania kontraktów programu WCF i ich operacji. W ramach ContractDescriptionkażda operacja kontraktu ma odpowiadający OperationDescription opisujący aspekty każdej operacji, która jest częścią kontraktu, na przykład czy operacja jest jednokierunkowa, czy żądanie/odpowiedź. Każda OperationDescription opisuje również komunikaty tworzące operację przy użyciu MessageDescriptionCollection. ContractDescription zawiera odwołanie do interfejsu definiującego kontrakt przy użyciu modelu programowania. Ten interfejs jest oznaczony ServiceContractAttribute i jego metody, które odpowiadają operacjom punktu końcowego, są oznaczone OperationContractAttribute.

Kontrakt dwukierunkowy definiuje następujące logiczne zestawy operacji:

  • Zestaw, który usługa uwidacznia dla klienta do wywołania.

  • Zestaw, który klient uwidacznia dla usługi do wywołania.

Model programowania do definiowania kontraktu dwustronnego polega na podzieleniu każdego zestawu w osobnym interfejsie i zastosowaniu atrybutów do każdego interfejsu. W tym przypadku ContractDescription zawiera odwołanie do każdego z interfejsów, które grupują je w jeden kontrakt dwudupleksowy.

Podobnie jak powiązania, każdy kontrakt ma Name i Namespace, które jednoznacznie identyfikują je w metadanych usługi.

Konstruktory

ContractDescription(String, String)

Inicjuje nowe wystąpienie klasy ContractDescription z określoną nazwą kwalifikowaną przestrzeni nazw.

ContractDescription(String)

Inicjuje nowe wystąpienie klasy ContractDescription o określonej nazwie.

Właściwości

Behaviors

Pobiera zachowania skojarzone z opisem kontraktu.

CallbackContractType

Pobiera lub ustawia typ kontraktu wywołania zwrotnego określonego przez opis kontraktu.

ConfigurationName

Pobiera lub ustawia nazwę konfiguracji dla opisu kontraktu.

ContractBehaviors

Pobiera kolekcję zachowania dla kontraktu.

ContractType

Pobiera lub ustawia typ kontraktu określony przez opis kontraktu.

HasProtectionLevel

Pobiera wartość wskazującą, czy kontrakt miał ustawiony poziom ochrony.

Name

Pobiera lub ustawia nazwę kontraktu.

Namespace

Pobiera lub ustawia przestrzeń nazw dla kontraktu.

Operations

Pobiera kolekcję opisów operacji skojarzonych z kontraktem.

ProtectionLevel

Pobiera lub ustawia poziom ochrony zabezpieczeń skojarzony z kontraktem.

SessionMode

Pobiera lub ustawia wartość wskazującą, czy sesja jest wymagana przez kontrakt.

Metody

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
GetContract(Type, Object)

Zwraca opis kontraktu dla określonego typu kontraktu i implementacji usługi.

GetContract(Type, Type)

Zwraca opis kontraktu dla określonego typu kontraktu i określony typ usługi.

GetContract(Type)

Zwraca opis kontraktu dla określonego typu kontraktu.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetInheritedContracts()

Zwraca kolekcję opisów kontraktów, które są dziedziczone przez bieżący opis kontraktu.

GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ShouldSerializeProtectionLevel()

Zwraca wartość wskazującą, czy właściwość ProtectionLevel została zmieniona z wartości domyślnej i powinna być serializowana.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy