EndpointAddress Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona una dirección de red única que un cliente usa para comunicarse con un punto de conexión de servicio.
public ref class EndpointAddress
public class EndpointAddress
type EndpointAddress = class
Public Class EndpointAddress
- Herencia
-
EndpointAddress
Ejemplos
using System;
using System.Configuration;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.Text;
namespace Microsoft.WCF.Documentation
{
class HostApplication
{
static void Main()
{
HostApplication app = new HostApplication();
app.Run();
}
private void Run()
{
// Get base address from app settings in configuration
Uri baseAddress = new Uri(ConfigurationManager.AppSettings["baseAddress"]);
//Create new address headers for special services and add them to an array
AddressHeader addressHeader1 = AddressHeader.CreateAddressHeader(
"specialservice1", "http://localhost:8000/service", 1);
AddressHeader addressHeader2 = AddressHeader.CreateAddressHeader(
"specialservice2", "http://localhost:8000/service", 2);
// Enumerate address headers and their properties from the array.
AddressHeader[] addressHeaders = new AddressHeader[2] { addressHeader1, addressHeader2 };
foreach (AddressHeader addressHeader in addressHeaders)
{
Console.WriteLine("AddressHeader - namespace:\t\t{0}", addressHeader.Namespace);
Console.WriteLine(" - name:\t\t\t{0}", addressHeader.Name);
Console.WriteLine(" - value:\t\t\t{0}", addressHeader.GetValue<int>());
Console.WriteLine(" - type:\t\t\t{0}", addressHeader.GetType());
Console.WriteLine(" - hashcode:\t\t{0}", addressHeader.GetHashCode());
Console.WriteLine(" - equals addressHeader1:\t{0}", addressHeader.Equals(addressHeader1));
// Console.WriteLine(" - Is SOAP1.1 supported:\t{0}", addressHeader.ToMessageHeader().IsMessageVersionSupported(MessageVersion.WSAddressingSoap10));
Console.WriteLine();
}
Console.WriteLine();
//Add the array of address headers to an endpoint address
EndpointAddress endpointAddress = new EndpointAddress(
new Uri("http://localhost:8003/servicemodelsamples/service"), addressHeaders);
//Create a "special" service endpoint that uses the endpointAddress.
string WSHttpBindingName = "Binding1";
ServiceEndpoint specialServiceEndpoint = new ServiceEndpoint(
ContractDescription.GetContract(typeof(CalculatorService)), new WSHttpBinding(WSHttpBindingName), endpointAddress
);
// Create a ServiceHost for the CalculatorService type that uses the base address.
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
//Add the specialServiceEndpoint to the serviceHost.
serviceHost.Description.Endpoints.Add(specialServiceEndpoint);
// Enumerate the service endpoints and some of their properties from the serviceHost.
Console.WriteLine("Service endpoints:");
ServiceDescription desc = serviceHost.Description;
foreach (ServiceEndpoint endpoint in desc.Endpoints)
{
Console.WriteLine("Endpoint - address: {0}", endpoint.Address);
Console.WriteLine(" - binding name:\t\t{0}", endpoint.Binding.Name);
// Console.WriteLine(" - binding name:\t\t{0}", endpoint.);
Console.WriteLine(" - contract name:\t\t{0}", endpoint.Contract.Name);
Console.WriteLine(" - contains addressHeader1:\t{0}", endpoint.Address.Headers.Contains(addressHeader1));
Console.WriteLine(" - count of address headers:\t{0}", endpoint.Address.Headers.Count);
Console.WriteLine();
}
Console.WriteLine();
// Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open();
// The service can now be accessed.
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();
}
}
}
Comentarios
Una dirección de punto de conexión identifica de forma única el punto de conexión de un servicio.
La dirección del punto de conexión pertenece al punto de conexión de servicio, que también contiene el enlace, el contrato y los comportamientos del punto de conexión.
EndpointAddress contiene un URI y propiedades de dirección que incluyen una identidad, elementos WSDL y una colección de encabezados opcionales. Los encabezados opcionales se usan para proporcionar información de direccionamiento adicional y más detallada para identificar o interactuar con el punto de conexión. Por ejemplo, se pueden usar para indicar qué instancia de un servicio se va a usar para procesar un mensaje entrante de un usuario determinado cuando hay varias instancias disponibles.
La dirección del punto de conexión de un servicio se puede especificar de forma imperativa mediante código o mediante declaración a través de la configuración. La definición de puntos de conexión en el código no suele ser práctica porque los enlaces y direcciones de un servicio implementado suelen ser diferentes de los usados mientras se desarrolla el servicio. Es más práctico definir puntos de conexión de servicio mediante la configuración.
EndpointAddress no implementa la ISerializable interfaz y, por tanto, no es serializable. Para que un punto de conexión se exponga como parte de un contrato de servicio, debe ser serializable y también debe ser compatible con el protocolo De direccionamiento de servicios web (WS-Addressing). Los puntos de conexión serializables compatibles con la versión 1.0 y la versión de agosto de 2004 de WS-Addressing se proporcionan, respectivamente, por las EndpointAddress10 clases y EndpointAddressAugust2004 .
Constructores
| Nombre | Description |
|---|---|
| EndpointAddress(String) |
Inicializa una nueva instancia de la EndpointAddress clase con una cadena de URI especificada. |
| EndpointAddress(Uri, AddressHeader[]) |
Inicializa una nueva instancia de la EndpointAddress clase con un URI y encabezados especificados. |
| EndpointAddress(Uri, EndpointIdentity, AddressHeader[]) |
Inicializa una nueva instancia de la EndpointAddress clase con un URI, una identidad y encabezados especificados. |
| EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection, XmlDictionaryReader, XmlDictionaryReader) |
Inicializa una nueva instancia de la EndpointAddress clase con un identificador URI, una identidad, una colección de encabezados y lectores de metadatos y extensiones especificados. |
| EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection) |
Inicializa una nueva instancia de la EndpointAddress clase con un URI, una identidad y una colección de encabezados especificadas. |
Propiedades
| Nombre | Description |
|---|---|
| AnonymousUri |
Obtiene una representación neutral de la versión del URI anónimo. |
| Headers |
Obtiene la colección de encabezados de dirección para los puntos de conexión que el generador puede crear. |
| Identity |
Obtiene la identidad del punto de conexión que se usa para autenticarlo. |
| IsAnonymous |
Obtiene un valor que indica si el punto de conexión es anónimo. |
| IsNone |
Obtiene un valor que indica si el URI del punto de conexión es .NoneUri |
| NoneUri |
Obtiene un URI independiente de la versión que se usa para la dirección de un punto de conexión al que no se debe enviar un mensaje. |
| Uri |
Obtiene el URI del punto de conexión. |
Métodos
| Nombre | Description |
|---|---|
| ApplyTo(Message) |
Asigna el URI y las propiedades de la dirección del punto de conexión a los valores de los encabezados de un mensaje especificado. |
| Equals(Object) |
Devuelve un valor que indica si un objeto especificado es equivalente a la dirección del punto de conexión actual. |
| GetHashCode() |
Proporciona un código hash único para la dirección del punto de conexión actual. |
| GetReaderAtExtensions() |
Obtiene el lector de diccionarios XML que proporciona acceso a las extensiones. |
| GetReaderAtMetadata() |
Obtiene el lector de diccionarios XML que proporciona acceso a los metadatos de un punto de conexión. |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ReadFrom(AddressingVersion, XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString) |
Lee una dirección de punto de conexión para una versión de dirección especificada con un nombre completo especificado de un lector de diccionario XML especificado. |
| ReadFrom(AddressingVersion, XmlDictionaryReader) |
Lee una dirección de punto de conexión de una versión de dirección especificada de un lector de diccionario XML especificado. |
| ReadFrom(AddressingVersion, XmlReader, String, String) |
Lee una dirección de punto de conexión para una versión de dirección especificada con un nombre completo especificado de un lector XML especificado. |
| ReadFrom(AddressingVersion, XmlReader) |
Lee una dirección de punto de conexión para una versión de dirección especificada de un lector XML especificado. |
| ReadFrom(XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString) |
Lee una dirección de punto de conexión con un nombre completo especificado de un lector de diccionario XML especificado. |
| ReadFrom(XmlDictionaryReader) |
Lee una dirección de punto de conexión de un lector de diccionario XML especificado. |
| ToString() |
Devuelve una representación de cadena canónica del URI que se encuentra en la dirección del punto de conexión. |
| WriteContentsTo(AddressingVersion, XmlDictionaryWriter) |
Guarda todos los nodos secundarios del nodo en el escritor de diccionarios XML especificado. |
| WriteContentsTo(AddressingVersion, XmlWriter) |
Guarda todos los nodos secundarios del nodo en el escritor XML especificado. |
| WriteTo(AddressingVersion, XmlDictionaryWriter, XmlDictionaryString, XmlDictionaryString) |
Guarda la dirección del punto de conexión actual de una versión especificada en un escritor de diccionarios XML con un espacio de nombres y un nombre local especificados. |
| WriteTo(AddressingVersion, XmlDictionaryWriter) |
Guarda la dirección del punto de conexión actual de una versión especificada en un escritor de diccionarios XML especificado. |
| WriteTo(AddressingVersion, XmlWriter, String, String) |
Guarda la dirección del punto de conexión actual de una versión especificada en un escritor XML con un espacio de nombres y un nombre local especificados. |
| WriteTo(AddressingVersion, XmlWriter) |
Guarda la dirección del punto de conexión actual de una versión especificada en un escritor XML especificado. |
Operadores
| Nombre | Description |
|---|---|
| Equality(EndpointAddress, EndpointAddress) |
Devuelve un valor que indica si las direcciones de punto de conexión especificadas no son equivalentes. |
| Inequality(EndpointAddress, EndpointAddress) |
Devuelve un valor que indica si las direcciones de punto de conexión especificadas no son equivalentes. |