ContractDescription Třída

Definice

Popisuje kontrakt Windows Communication Foundation (WCF), 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 ContractDescription objekt. Zobrazí různé informace uložené 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 o žádosti nebo odpovědi.

Objekt ContractDescription se používá k popisu kontraktů WCF a jejich operací. ContractDescriptionKaždá operace kontraktu obsahuje odpovídající OperationDescription aspekty každé operace, která je součástí kontraktu, 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 metody, které odpovídají operacím koncového bodu, jsou označeny značkou OperationContractAttribute.

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

  • Sada, kterou služba zveřejňuje, aby klient volal.

  • 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 aplikovat atributy na každé rozhraní. V tomto případě ContractDescription obsahuje odkaz na každé rozhraní, které je seskupí do jednoho duplexního kontraktu.

Podobně jako vazby má Name každý kontrakt jedinečnou Namespace identifikaci v metadatech služby.

Konstruktory

ContractDescription(String)

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

ContractDescription(String, String)

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

Vlastnosti

Behaviors

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

CallbackContractType

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

ConfigurationName

Získá nebo nastaví název konfigurace pro popis 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á označuje, zda je relace požadovaná kontraktem.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

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

GetContract(Type, Object)

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

GetContract(Type, Type)

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

GetHashCode()

Slouží jako výchozí funkce hash.

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

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

GetType()

Type Získá aktuální instanci.

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

Vytvoří použádnou kopii aktuálního souboru Object.

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

Vrátí hodnotu, která označuje, zda se ProtectionLevel vlastnost 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