ContractDescription Klas

Definitie

Beschrijft een WCF-contract (Windows Communication Foundation) dat aangeeft wat een eindpunt communiceert met de buitenwereld.

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

Voorbeelden

In het volgende voorbeeld ziet u een aantal manieren om een ContractDescription object te maken of op te halen. Vervolgens worden de verschillende stukjes informatie weergegeven die in het ContractDescription object zijn opgeslagen.

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

Opmerkingen

Een WCF-contract is een verzameling bewerkingen die aangeeft wat het eindpunt communiceert met de buitenwereld. Elke bewerking is een berichtuitwisseling. Een aanvraagbericht en een gekoppeld antwoordbericht vormen bijvoorbeeld een aanvraag-/antwoordberichtuitwisseling.

Een ContractDescription object wordt gebruikt om WCF-contracten en hun activiteiten te beschrijven. Binnen een ContractDescription, elke contractbewerking heeft een overeenkomstige OperationDescription die aspecten beschrijft van elke bewerking die deel uitmaakt van het contract, zoals of de bewerking eenrichtings- of aanvraag/antwoord is. Elk OperationDescription beschrijft ook de berichten waaruit de bewerking bestaat met behulp van een MessageDescriptionCollection. ContractDescription bevat een verwijzing naar een interface die het contract definieert met behulp van het programmeermodel. Deze interface is gemarkeerd met ServiceContractAttribute en de bijbehorende methoden die overeenkomen met eindpuntbewerkingen worden gemarkeerd met de OperationContractAttribute.

Een dubbelzijdig contract definieert de volgende logische sets bewerkingen:

  • Een set die de service beschikbaar maakt voor de client die moet worden aangeroepen.

  • Een set die de client beschikbaar maakt voor de service die moet worden aangeroepen.

Het programmeermodel voor het definiëren van een dubbelzijdig contract bestaat uit het splitsen van elke set in een afzonderlijke interface en het toepassen van kenmerken op elke interface. In dit geval ContractDescription bevat een verwijzing naar elk van de interfaces die deze in één dubbelzijdig contract groeperen.

Net als bij bindingen heeft elk contract een Name en Namespace die het uniek identificeert in de metagegevens van de service.

Constructors

Name Description
ContractDescription(String, String)

Initialiseert een nieuw exemplaar van de ContractDescription klasse met een naamruimte-gekwalificeerde naam die is opgegeven.

ContractDescription(String)

Initialiseert een nieuw exemplaar van de ContractDescription klasse met een opgegeven naam.

Eigenschappen

Name Description
Behaviors

Hiermee haalt u het gedrag op dat is gekoppeld aan de beschrijving van het contract.

CallbackContractType

Hiermee haalt u het type callbackcontract op dat door de beschrijving van het contract wordt opgegeven.

ConfigurationName

Hiermee haalt u de configuratienaam voor de beschrijving van het contract op of stelt u deze in.

ContractBehaviors

Hiermee haalt u de verzameling gedrag voor het contract op.

ContractType

Hiermee haalt u het contracttype op dat door de beschrijving van het contract wordt opgegeven.

HasProtectionLevel

Hiermee wordt een waarde opgehaald die aangeeft of het contract een beveiligingsniveau heeft ingesteld.

Name

Hiermee haalt u de naam van het contract op of stelt u deze in.

Namespace

Hiermee haalt u de naamruimte voor het contract op of stelt u deze in.

Operations

Hiermee haalt u de verzameling bewerkingsbeschrijvingen op die aan het contract zijn gekoppeld.

ProtectionLevel

Hiermee haalt u het beveiligingsniveau op dat aan het contract is gekoppeld of stelt u deze in.

SessionMode

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of een sessie vereist is voor het contract.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetContract(Type, Object)

Retourneert de contractbeschrijving voor een opgegeven type contract en service-implementatie.

GetContract(Type, Type)

Retourneert de contractbeschrijving voor een opgegeven type contract en een opgegeven servicetype.

GetContract(Type)

Retourneert de contractbeschrijving voor een opgegeven type contract.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetInheritedContracts()

Hiermee wordt een verzameling contractbeschrijvingen geretourneerd die worden overgenomen door de huidige contractbeschrijving.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ShouldSerializeProtectionLevel()

Retourneert een waarde die aangeeft of de eigenschap is gewijzigd van de ProtectionLevel standaardwaarde en moet worden geserialiseerd.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op