Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase ContractDescription

 

Publicado: octubre de 2016

Describe un contrato Windows Communication Foundation (WCF) que especifica lo que un extremo comunica al mundo exterior.

Espacio de nombres:   System.ServiceModel.Description
Ensamblado:  System.ServiceModel (en System.ServiceModel.dll)

System.Object
  System.ServiceModel.Description.ContractDescription

public class ContractDescription

NombreDescripción
System_CAPS_pubmethodContractDescription(String)

Inicializa una nueva instancia de la clase ContractDescription con un nombre especificado.

System_CAPS_pubmethodContractDescription(String, String)

Inicializa una nueva instancia de la clase ContractDescription con un nombre completo de espacio de nombres concreto.

NombreDescripción
System_CAPS_pubpropertyBehaviors

Obtiene los comportamientos asociados a la descripción del contrato.

System_CAPS_pubpropertyCallbackContractType

Obtiene o establece el tipo de contrato de devolución de llamada que la descripción del contrato especifica.

System_CAPS_pubpropertyConfigurationName

Obtiene o establece el nombre de la configuración para la descripción del contrato.

System_CAPS_pubpropertyContractBehaviors

Obtiene la colección de comportamiento del contrato.

System_CAPS_pubpropertyContractType

Obtiene o establece el tipo de contrato que especifica su descripción.

System_CAPS_pubpropertyHasProtectionLevel

Obtiene un valor que indica si se ha establecido un nivel de protección para el contrato.

System_CAPS_pubpropertyName

Obtiene o establece el nombre del contrato.

System_CAPS_pubpropertyNamespace

Obtiene o establece el espacio de nombres del contrato.

System_CAPS_pubpropertyOperations

Obtiene la colección de descripciones de la operación asociada al contrato.

System_CAPS_pubpropertyProtectionLevel

Obtiene o establece el nivel de protección de seguridad asociado al contrato.

System_CAPS_pubpropertySessionMode

Obtiene o establece un valor que indica si el contrato requiere o no una sesión.

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de que sea reclamado por la recolección de elementos no utilizados.(Heredado de Object).

System_CAPS_pubmethodSystem_CAPS_staticGetContract(Type)

Devuelve la descripción del contrato de un tipo de contrato concreto.

System_CAPS_pubmethodSystem_CAPS_staticGetContract(Type, Object)

Devuelve la descripción del contrato para un tipo especificado de contrato e implementación del servicio.

System_CAPS_pubmethodSystem_CAPS_staticGetContract(Type, Type)

Devuelve la descripción del contrato para un tipo especificado de contrato y servicio.

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetInheritedContracts()

Devuelve una colección de descripciones de contrato heredadas por la descripción del contrato actual.

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodShouldSerializeProtectionLevel()

Devuelve un valor que indica si la propiedad ProtectionLevel ha cambiado respecto de su valor predeterminado y se debe serializar.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa el objeto actual.(Heredado de Object).

A indigo2 contract is a collection of operations that specifies what the endpoint communicates to the outside world. Each operation is a message exchange. For example, a request message and an associated reply message form a request/reply message exchange.

A T:System.ServiceModel.Description.ContractDescription object is used to describe indigo2 contracts and their operations. Within a T:System.ServiceModel.Description.ContractDescription, each contract operation has a corresponding T:System.ServiceModel.Description.OperationDescription that describes aspects of the each operation that is part of the contract, such as whether the operation is one-way or request/reply. Each T:System.ServiceModel.Description.OperationDescription also describes the messages that make up the operation using a T:System.ServiceModel.Description.MessageDescriptionCollection. T:System.ServiceModel.Description.ContractDescription contains a reference to an interface that defines the contract using the programming model. This interface is marked with T:System.ServiceModel.ServiceContractAttribute and its methods that correspond to endpoint operations are marked with the T:System.ServiceModel.OperationContractAttribute.

A duplex contract defines the following logical sets of operations:

  • A set that the service exposes for the client to call.

  • A set that the client exposes for the service to call.

The programming model for defining a duplex contract is to split each set in a separate interface and apply attributes to each interface. In this case, T:System.ServiceModel.Description.ContractDescription contains a reference to each of the interfaces that groups them into one duplex contract.

Similar to bindings, each contract has a P:System.ServiceModel.Description.ContractDescription.Name and P:System.ServiceModel.Description.ContractDescription.Namespace that uniquely identify it in the metadata of the service.

The following example shows a number of ways to create or retrieve a T:System.ServiceModel.Description.ContractDescription object. It then displays the various pieces of information that are stored in the T:System.ServiceModel.Description.ContractDescription object.

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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: