ContractDescription Klasa

Definicja

Opisuje kontrakt 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

W poniższym przykładzie pokazano wiele sposobów tworzenia lub pobierania ContractDescription obiektu. Następnie wyświetla różne informacje przechowywane w ContractDescription obiekcie.

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 jest wymianą komunikatów. Na przykład wiadomość żądania i skojarzona wiadomość odpowiedzi tworzą wymianę wiadomości żądania/odpowiedzi.

Obiekt ContractDescription służy do opisywania kontraktów programu WCF i ich operacji. ContractDescriptionW ramach elementu każda operacja kontraktu ma odpowiadający OperationDescription element opisujący aspekty każdej operacji będącej częścią kontraktu, takie jak to, czy operacja jest jednokierunkowa, czy żądanie/odpowiedź. Każdy z nich OperationDescription opisuje również komunikaty tworzące operację przy użyciu elementu MessageDescriptionCollection. ContractDescription Zawiera odwołanie do interfejsu definiującego kontrakt przy użyciu modelu programowania. Ten interfejs jest oznaczony za pomocą ServiceContractAttribute polecenia i jego metody, które odpowiadają operacjom punktu końcowego, są oznaczone znakiem OperationContractAttribute.

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

  • Zestaw uwidaczniany przez usługę do wywołania przez klienta.

  • Zestaw uwidaczniany przez klienta do wywołania usługi.

Model programowania do definiowania kontraktu dwukierunkowego polega na podzieleniu każdego zestawu w osobnym interfejsie i zastosowaniu atrybutów do każdego interfejsu. W tym przypadku zawiera odwołanie do każdego interfejsu, ContractDescription który grupuje je w jeden kontrakt dwukierunkowy.

Podobnie jak w przypadku powiązań, każdy kontrakt ma Name element i Namespace , który jednoznacznie identyfikuje go w metadanych usługi.

Konstruktory

ContractDescription(String)

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

ContractDescription(String, String)

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

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ę zachowań 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 dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetContract(Type)

Zwraca opis kontraktu dla określonego typu kontraktu.

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.

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

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
ShouldSerializeProtectionLevel()

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

ToString()

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

(Odziedziczone po Object)

Dotyczy