ContractDescription Classe

Définition

Décrit un contrat Windows Communication Foundation (WCF) qui spécifie ce qu’un point de terminaison communique au 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 récupérer un objet ContractDescription. Il affiche alors 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 au monde extérieur. Chaque opération est un échange de messages. Par exemple, un message de demande et un message de réponse associé constituent un échange de messages de demande/réponse.

Un ContractDescription objet est utilisé pour décrire les contrats WCF et leurs opérations. Dans une ContractDescription, chaque opération de contrat a une OperationDescription correspondante qui décrit les aspects de chaque opération qui fait partie du contrat (par exemple, si l'opération est à sens unique ou de type demande/réponse). Chaque OperationDescription décrit également les messages qui composent l'opération à l'aide d'un objet MessageDescriptionCollection. La 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 l'ServiceContractAttribute et ses méthodes qui correspondent aux opérations de point de terminaison sont marquées avec l'OperationContractAttribute.

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

  • Ensemble que le service expose pour le client à appeler.

  • Ensemble que le client expose pour le service à appeler.

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

Semblable aux liaisons, chaque contrat a une Name et un Namespace qui l'identifient uniquement dans les métadonnées du service.

Constructeurs

ContractDescription(String)

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

ContractDescription(String, String)

Initialise une nouvelle instance de la classe ContractDescription avec un nom qualifié par un espace de noms 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 que spécifie la description du contrat.

ConfigurationName

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

ContractBehaviors

Obtient la collection de comportements pour le contrat.

ContractType

Obtient ou définit le type du contrat que spécifie la description du contrat.

HasProtectionLevel

Obtient une valeur qui indique si un niveau de protection a été défini pour le contrat.

Name

Obtient ou définit le nom du contrat.

Namespace

Obtient ou définit l'espace de noms pour le contrat.

Operations

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

ProtectionLevel

Obtient ou définit le niveau des mesures de protection et 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)

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

GetContract(Type, Object)

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

GetContract(Type, Type)

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

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetInheritedContracts()

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

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ShouldSerializeProtectionLevel()

Retourne une valeur qui indique si la propriété ProtectionLevel utilise une autre valeur que 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 à