ContractDescription Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Descreve um contrato da Windows Communication Foundation (WCF) que especifica o que um endpoint comunica ao mundo exterior.
public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
- Herança
-
ContractDescription
Exemplos
O exemplo seguinte mostra várias formas de criar ou recuperar um ContractDescription objeto. Depois, apresenta as várias informações armazenadas no ContractDescription objeto.
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()
Observações
Um contrato WCF é um conjunto de operações que especifica o que o endpoint comunica ao mundo exterior. Cada operação é uma troca de mensagens. Por exemplo, uma mensagem de pedido e uma mensagem de resposta associada formam uma troca de mensagens de pedido/resposta.
Um ContractDescription objeto é usado para descrever contratos WCF e as suas operações. Dentro de um ContractDescription, cada operação contratual tem um correspondente OperationDescription que descreve aspetos de cada operação que faz parte do contrato, como se a operação é unidirecional ou pedido/resposta. Cada um OperationDescription também descreve as mensagens que compõem a operação usando um MessageDescriptionCollection. ContractDescription contém uma referência a uma interface que define o contrato usando o modelo de programação. Esta interface é marcada com ServiceContractAttribute e os seus métodos que correspondem às operações de endpoint são marcados com o OperationContractAttribute.
Um contrato duplex define os seguintes conjuntos lógicos de operações:
Um conjunto que o serviço expõe para o cliente chamar.
Um conjunto que o cliente expõe para o serviço chamar.
O modelo de programação para definir um contrato duplex é dividir cada conjunto numa interface separada e aplicar atributos a cada interface. Neste caso, ContractDescription contém uma referência a cada uma das interfaces que as agrupa num único contrato duplex.
Semelhante às vinculações, cada contrato tem um Name e Namespace que o identifica de forma única nos metadados do serviço.
Construtores
| Name | Description |
|---|---|
| ContractDescription(String, String) |
Inicializa uma nova instância da ContractDescription classe com um nome qualificado para espaço de nomes especificado. |
| ContractDescription(String) |
Inicializa uma nova instância da ContractDescription classe com um nome especificado. |
Propriedades
| Name | Description |
|---|---|
| Behaviors |
Obtém os comportamentos associados à descrição do contrato. |
| CallbackContractType |
Obtém ou define o tipo de contrato de callback que a descrição do contrato especifica. |
| ConfigurationName |
Obtém ou define o nome da configuração para a descrição do contrato. |
| ContractBehaviors |
Recebe a coleção de comportamentos para o contrato. |
| ContractType |
Obtém ou define o tipo de contrato que a descrição do contrato especifica. |
| HasProtectionLevel |
Recebe um valor que indica se o contrato teve um nível de proteção definido. |
| Name |
Obtém ou define o nome do contrato. |
| Namespace |
Obtém ou define o espaço de nomes para o contrato. |
| Operations |
Obtém a coleção de descrições de operações associadas ao contrato. |
| ProtectionLevel |
Obtém ou definem o nível de proteção de segurança associado ao contrato. |
| SessionMode |
Recebe ou define um valor que indica se uma sessão é exigida pelo contrato. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetContract(Type, Object) |
Devolve a descrição do contrato para um tipo específico de contrato e implementação de serviços. |
| GetContract(Type, Type) |
Devolve a descrição do contrato para um tipo específico de contrato e um tipo específico de serviço. |
| GetContract(Type) |
Devolve a descrição do contrato para um tipo específico de contrato. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetInheritedContracts() |
Devolve uma coleção de descrições contratuais herdadas pela descrição atual do contrato. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ShouldSerializeProtectionLevel() |
Devolve um valor que indica se a ProtectionLevel propriedade mudou em relação ao seu valor padrão e deve ser serializada. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |