Partager via


ContractDescription Classe

Définition

Décrit un contrat Windows Communication Foundation (WCF) qui spécifie ce qu’un point de terminaison communique avec le monde extérieur.

public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
Héritage
ContractDescription

Exemples

L’exemple suivant montre plusieurs façons de créer ou de récupérer un objet ContractDescription. Il affiche ensuite les différentes informations stockées dans l’objet 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()

Remarques

Un contrat WCF est une collection d’opérations qui spécifie ce que le point de terminaison communique avec le monde extérieur. Chaque opération est un échange de messages. Par exemple, un message de demande et un message de réponse associé forment un échange de messages de demande/réponse.

Un objet ContractDescription est utilisé pour décrire les contrats WCF et leurs opérations. Dans un ContractDescription, chaque opération de contrat a un OperationDescription correspondant qui décrit les aspects de chaque opération qui fait partie du contrat, par exemple si l’opération est unidirectionnelle ou demande/réponse. Chaque OperationDescription décrit également les messages qui composent l’opération à l’aide d’un MessageDescriptionCollection. ContractDescription contient une référence à une interface qui définit le contrat à l’aide du modèle de programmation. Cette interface est marquée avec ServiceContractAttribute et ses méthodes qui correspondent aux opérations de point de terminaison sont marquées avec le OperationContractAttribute.

Un contrat duplex définit les ensembles logiques d’opérations suivants :

  • Ensemble que le service expose pour que le client appelle.

  • Ensemble que le client expose pour que le service appelle.

Le modèle de programmation permettant de définir un contrat duplex consiste à fractionner chaque ensemble dans une interface distincte et à appliquer des attributs à chaque interface. Dans ce cas, ContractDescription contient une référence à chacune des interfaces qui les regroupent dans un contrat duplex.

Comme pour les liaisons, chaque contrat a une Name et Namespace qui l’identifient de manière unique dans les métadonnées du service.

Constructeurs

ContractDescription(String, String)

Initialise une nouvelle instance de la classe ContractDescription avec un nom qualifié d’espace de noms spécifié.

ContractDescription(String)

Initialise une nouvelle instance de la classe ContractDescription avec un nom spécifié.

Propriétés

Behaviors

Obtient les comportements associés à la description du contrat.

CallbackContractType

Obtient ou définit le type de contrat de rappel spécifié par la description du contrat.

ConfigurationName

Obtient ou définit le nom de configuration de la description du contrat.

ContractBehaviors

Obtient la collection de comportements pour le contrat.

ContractType

Obtient ou définit le type de contrat spécifié par la description du contrat.

HasProtectionLevel

Obtient une valeur qui indique si le contrat a un jeu de niveau de protection.

Name

Obtient ou définit le nom du contrat.

Namespace

Obtient ou définit l’espace de noms du contrat.

Operations

Obtient la collection de descriptions d’opérations associées au contrat.

ProtectionLevel

Obtient ou définit le niveau de protection de sécurité associé au contrat.

SessionMode

Obtient ou définit une valeur qui indique si une session est requise par le contrat.

Méthodes

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetContract(Type, Object)

Retourne la description du contrat pour un type spécifié d’implémentation de contrat et de service.

GetContract(Type, Type)

Retourne la description du contrat pour un type de contrat spécifié et un type de service spécifié.

GetContract(Type)

Retourne la description du contrat pour un type de contrat spécifié.

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetInheritedContracts()

Retourne une collection de descriptions de contrat héritées par la description actuelle du contrat.

GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ShouldSerializeProtectionLevel()

Retourne une valeur qui indique si la propriété ProtectionLevel a changé de sa valeur par défaut et doit être sérialisée.

ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

S’applique à