ContractDescription Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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) |