ContractDescription Klasa

Definicja

Opisuje kontrakt Windows Communication Foundation (WCF) określający, co punkt końcowy komunikuje się ze światem zewnętrznym.Describes a Windows Communication Foundation (WCF) contract that specifies what an endpoint communicates to the outside world.

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

Przykłady

W poniższym przykładzie pokazano kilka sposobów tworzenia lub pobierania ContractDescription obiektu.The following example shows a number of ways to create or retrieve a ContractDescription object. Następnie wyświetla różne informacje przechowywane w ContractDescription obiekcie.It then displays the various pieces of information that are stored in the ContractDescription object.

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.A WCF contract is a collection of operations that specifies what the endpoint communicates to the outside world. Każda operacja jest wymianą komunikatów.Each operation is a message exchange. Na przykład komunikat żądania i skojarzony z nim komunikat odpowiedzi stanowią wymianę komunikatów żądania/odpowiedzi.For example, a request message and an associated reply message form a request/reply message exchange.

ContractDescriptionObiekt służy do opisywania kontraktów i ich operacji WCF.A ContractDescription object is used to describe WCF contracts and their operations. W ramach ContractDescription , każda operacja kontraktu ma odpowiednie OperationDescription informacje, które opisują aspekty każdej operacji, która jest częścią kontraktu, na przykład czy operacja jest jednokierunkowa, czy żądanie/odpowiedź.Within a ContractDescription, each contract operation has a corresponding OperationDescription that describes aspects of the each operation that is part of the contract, such as whether the operation is one-way or request/reply. Każdy z nich OperationDescription również opisuje komunikaty, które składają się na operację przy użyciu MessageDescriptionCollection .Each OperationDescription also describes the messages that make up the operation using a MessageDescriptionCollection. ContractDescription zawiera odwołanie do interfejsu, który definiuje kontrakt przy użyciu modelu programowania.ContractDescription contains a reference to an interface that defines the contract using the programming model. Ten interfejs jest oznaczony przy użyciu ServiceContractAttribute , a jego metody odpowiadające operacjom punktu końcowego są oznaczone OperationContractAttribute .This interface is marked with ServiceContractAttribute and its methods that correspond to endpoint operations are marked with the OperationContractAttribute.

Kontrakt dupleksowy definiuje następujące logiczne zestawy operacji:A duplex contract defines the following logical sets of operations:

  • Zestaw, który zostanie wyznaczony przez usługę do wywołania przez klienta.A set that the service exposes for the client to call.

  • Zestaw, który klient ujawnia na potrzeby wywołania usługi.A set that the client exposes for the service to call.

Model programowania służący do definiowania kontraktu dupleksowego polega na rozdzieleniu każdego zestawu w oddzielnym interfejsie i zastosowaniu atrybutów do poszczególnych interfejsów.The programming model for defining a duplex contract is to split each set in a separate interface and apply attributes to each interface. W tym przypadku ContractDescription zawiera odwołanie do każdego z interfejsów, które grupuje je do jednego kontraktu dupleksowego.In this case, ContractDescription contains a reference to each of the interfaces that groups them into one duplex contract.

Podobnie jak w przypadku powiązań, każdy kontrakt ma Name i Namespace jednoznacznie identyfikuje go w metadanych usługi.Similar to bindings, each contract has a Name and Namespace that uniquely identify it in the metadata of the service.

Konstruktory

ContractDescription(String)

Inicjuje nowe wystąpienie ContractDescription klasy o określonej nazwie.Initializes a new instance of the ContractDescription class with a specified name.

ContractDescription(String, String)

Inicjuje nowe wystąpienie ContractDescription klasy z określoną nazwą kwalifikowaną przestrzenią nazw.Initializes a new instance of the ContractDescription class with a namespace-qualified name specified.

Właściwości

Behaviors

Pobiera zachowania skojarzone z opisem kontraktu.Gets the behaviors associated with the contract description.

CallbackContractType

Pobiera lub ustawia typ kontraktu wywołania zwrotnego, który określa opis kontraktu.Gets or sets the type of callback contract that the contract description specifies.

ConfigurationName

Pobiera lub ustawia nazwę konfiguracji dla opisu kontraktu.Gets or sets the configuration name for the contract description.

ContractBehaviors

Pobiera kolekcję zachowań dla kontraktu.Gets the collection of behavior for the contract.

ContractType

Pobiera lub ustawia typ kontraktu określany przez opis kontraktu.Gets or sets the contract type that the contract description specifies.

HasProtectionLevel

Pobiera wartość wskazującą, czy kontrakt ma ustawiony poziom ochrony.Gets a value that indicates whether the contract has had a protection level set.

Name

Pobiera lub ustawia nazwę kontraktu.Gets or sets the name of the contract.

Namespace

Pobiera lub ustawia przestrzeń nazw kontraktu.Gets or sets the namespace for the contract.

Operations

Pobiera kolekcję opisów operacji skojarzonych z umową.Gets the collection of operation descriptions associated with the contract.

ProtectionLevel

Pobiera lub ustawia poziom ochrony zabezpieczeń skojarzonej z umową.Gets or sets the level of security protection associated with the contract.

SessionMode

Pobiera lub ustawia wartość wskazującą, czy sesja jest wymagana przez kontrakt.Gets or sets a value that indicates whether a session is required by the contract.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetContract(Type)

Zwraca opis kontraktu dla określonego typu kontraktu.Returns the contract description for a specified type of contract.

GetContract(Type, Object)

Zwraca opis kontraktu dla określonego typu kontraktu i implementacji usługi.Returns the contract description for a specified type of contract and service implementation.

GetContract(Type, Type)

Zwraca opis kontraktu dla określonego typu kontraktu i określonego typu usługi.Returns the contract description for a specified type of contract and a specified type of service.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetInheritedContracts()

Zwraca kolekcję opisów kontraktu, które są dziedziczone przez bieżący opis kontraktu.Returns a collection of contract descriptions that are inherited by the current contract description.

GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ShouldSerializeProtectionLevel()

Zwraca wartość wskazującą, czy ProtectionLevel Właściwość została zmieniona z wartości domyślnej i powinna być serializowana.Returns a value that indicates whether the ProtectionLevel property has changed from its default value and should be serialized.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy