Sdílet prostřednictvím


ContractDescription Třída

Definice

Popisuje kontrakt WCF (Windows Communication Foundation), který určuje, co koncový bod komunikuje s vnějším světem.

public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
Dědičnost
ContractDescription

Příklady

Následující příklad ukazuje řadu způsobů, jak vytvořit nebo načíst objekt ContractDescription. Pak zobrazí různé informace, které jsou uloženy v objektu 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()

Poznámky

Kontrakt WCF je kolekce operací, které určují, co koncový bod komunikuje s vnějším světem. Každá operace je výměna zpráv. Například zpráva požadavku a přidružená zpráva odpovědi tvoří výměnu zpráv žádosti nebo odpovědi.

Objekt ContractDescription slouží k popisu kontraktů WCF a jejich operací. V rámci ContractDescriptionmá každá operace kontraktu odpovídající OperationDescription, která popisuje aspekty každé operace, která je součástí smlouvy, například jestli je operace jednosměrná, nebo žádost/odpověď. Každý OperationDescription také popisuje zprávy, které tvoří operaci pomocí MessageDescriptionCollection. ContractDescription obsahuje odkaz na rozhraní, které definuje kontrakt pomocí programovacího modelu. Toto rozhraní je označeno ServiceContractAttribute a jeho metodami, které odpovídají operacím koncových bodů, jsou označeny OperationContractAttribute.

duplexní kontrakt definuje následující logické sady operací:

  • Sada, kterou služba zveřejňuje pro volání klienta.

  • Sada, kterou klient zveřejňuje pro volání služby.

Programovací model pro definování duplexního kontraktu je rozdělit každou sadu v samostatném rozhraní a použít atributy na každé rozhraní. V tomto případě ContractDescription obsahuje odkaz na všechna rozhraní, která je seskupují do jednoho duplexního kontraktu.

Podobně jako vazby má každý kontrakt Name a Namespace, které ho jednoznačně identifikují v metadatech služby.

Konstruktory

ContractDescription(String, String)

Inicializuje novou instanci třídy ContractDescription se zadaným názvem kvalifikovaným oborem názvů.

ContractDescription(String)

Inicializuje novou instanci třídy ContractDescription se zadaným názvem.

Vlastnosti

Behaviors

Získá chování přidružené k popisu kontraktu.

CallbackContractType

Získá nebo nastaví typ zpětného volání kontraktu, který určuje popis kontraktu.

ConfigurationName

Získá nebo nastaví název konfigurace popisu kontraktu.

ContractBehaviors

Získá kolekci chování kontraktu.

ContractType

Získá nebo nastaví typ kontraktu, který určuje popis kontraktu.

HasProtectionLevel

Získá hodnotu, která označuje, zda kontrakt má nastavenou úroveň ochrany.

Name

Získá nebo nastaví název kontraktu.

Namespace

Získá nebo nastaví obor názvů pro kontrakt.

Operations

Získá kolekci popisů operací přidružených ke smlouvě.

ProtectionLevel

Získá nebo nastaví úroveň ochrany zabezpečení přidružené ke smlouvě.

SessionMode

Získá nebo nastaví hodnotu, která určuje, zda je relace požadována kontraktem.

Metody

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetContract(Type, Object)

Vrátí popis kontraktu pro zadaný typ kontraktu a implementace služeb.

GetContract(Type, Type)

Vrátí popis smlouvy pro zadaný typ smlouvy a zadaný typ služby.

GetContract(Type)

Vrátí popis kontraktu pro zadaný typ kontraktu.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetInheritedContracts()

Vrátí kolekci popisů kontraktů, které jsou zděděny aktuálním popisem kontraktu.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ShouldSerializeProtectionLevel()

Vrátí hodnotu, která určuje, zda se vlastnost ProtectionLevel změnila z výchozí hodnoty a měla by být serializována.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro