EndpointAddress Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет уникальный сетевой адрес, который клиент использует для взаимодействия с конечной точкой службы.
public ref class EndpointAddress
public class EndpointAddress
type EndpointAddress = class
Public Class EndpointAddress
- Наследование
-
EndpointAddress
Примеры
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();
}
}
}
Комментарии
Адрес конечной точки однозначно идентифицирует конечную точку для службы.
Адрес конечной точки принадлежит конечной точке службы, которая также содержит привязку, контракт и поведение для конечной точки.
Содержит EndpointAddress URI и свойства адреса, включающие удостоверения, элементы WSDL и коллекцию необязательных заголовков. Необязательные заголовки используются для предоставления дополнительных, более подробных сведений об адресации для идентификации или взаимодействия с конечной точкой. Например, их можно использовать для указания того, какой экземпляр службы должен использоваться для обработки входящих сообщений от конкретного пользователя при наличии нескольких экземпляров.
Адрес конечной точки для службы можно указать либо императивно с помощью кода, либо декларативно с помощью конфигурации. Определение конечных точек в коде обычно не является практическим, так как привязки и адреса для развернутой службы обычно отличаются от используемых во время разработки службы. Более удобно определить конечные точки службы с помощью конфигурации.
EndpointAddress не реализует ISerializable интерфейс и поэтому не сериализуется. Для предоставления конечной точки в рамках контракта службы она должна быть сериализуемой, и она также должна соответствовать протоколу адресации веб-службы (WS-Addressing) . Сериализуемые конечные точки, совместимые с версией 1.0 и версией WS-Addressing августа 2004 года, предоставляются соответственно классами и EndpointAddress10 классамиEndpointAddressAugust2004.
Конструкторы
| Имя | Описание |
|---|---|
| EndpointAddress(String) |
Инициализирует новый экземпляр EndpointAddress класса с указанной строкой URI. |
| EndpointAddress(Uri, AddressHeader[]) |
Инициализирует новый экземпляр EndpointAddress класса с указанным URI и заголовками. |
| EndpointAddress(Uri, EndpointIdentity, AddressHeader[]) |
Инициализирует новый экземпляр EndpointAddress класса с указанным URI, удостоверением и заголовками. |
| EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection, XmlDictionaryReader, XmlDictionaryReader) |
Инициализирует новый экземпляр EndpointAddress класса с указанным URI, удостоверением, коллекцией заголовков и средствами чтения метаданных и расширений. |
| EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection) |
Инициализирует новый экземпляр EndpointAddress класса с указанным URI, удостоверением и коллекцией заголовков. |
Свойства
| Имя | Описание |
|---|---|
| AnonymousUri |
Возвращает нейтральное представление анонимного URI версии. |
| Headers |
Возвращает коллекцию заголовков адресов для конечных точек, которые может создать построитель. |
| Identity |
Возвращает удостоверение конечной точки, используемой для проверки подлинности. |
| IsAnonymous |
Возвращает значение, указывающее, является ли конечная точка анонимной. |
| IsNone |
Возвращает значение, указывающее, является NoneUriли универсальный код ресурса (URI) для конечной точки. |
| NoneUri |
Возвращает нейтральный от версии URI, используемый для адреса конечной точки, в которую не должно отправляться сообщение. |
| Uri |
Возвращает универсальный код ресурса (URI) для конечной точки. |
Методы
| Имя | Описание |
|---|---|
| ApplyTo(Message) |
Назначает URI и свойства адреса конечной точки значениям заголовков указанного сообщения. |
| Equals(Object) |
Возвращает значение, указывающее, эквивалентен ли указанный объект текущему адресу конечной точки. |
| GetHashCode() |
Предоставляет уникальный хэш-код для текущего адреса конечной точки. |
| GetReaderAtExtensions() |
Получает средство чтения словаря XML, которое предоставляет доступ к расширениям. |
| GetReaderAtMetadata() |
Получает средство чтения словаря XML, которое предоставляет доступ к метаданным конечной точки. |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ReadFrom(AddressingVersion, XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString) |
Считывает адрес конечной точки для указанной версии адреса с указанным полным именем из указанного средства чтения словаря XML. |
| ReadFrom(AddressingVersion, XmlDictionaryReader) |
Считывает адрес конечной точки для указанной версии адреса из указанного средства чтения словаря XML. |
| ReadFrom(AddressingVersion, XmlReader, String, String) |
Считывает адрес конечной точки для указанной версии адреса с указанным полным именем из указанного средства чтения XML. |
| ReadFrom(AddressingVersion, XmlReader) |
Считывает адрес конечной точки для указанной версии адреса из указанного средства чтения XML. |
| ReadFrom(XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString) |
Считывает адрес конечной точки с указанным полным именем из указанного средства чтения словаря XML. |
| ReadFrom(XmlDictionaryReader) |
Считывает адрес конечной точки из указанного средства чтения словаря XML. |
| ToString() |
Возвращает каноническое строковое представление URI, содержащегося в адресе конечной точки. |
| WriteContentsTo(AddressingVersion, XmlDictionaryWriter) |
Сохраняет все дочерние узлы узла в указанный модуль записи словаря XML. |
| WriteContentsTo(AddressingVersion, XmlWriter) |
Сохраняет все дочерние узлы узла в указанный модуль записи XML. |
| WriteTo(AddressingVersion, XmlDictionaryWriter, XmlDictionaryString, XmlDictionaryString) |
Сохраняет текущий адрес конечной точки указанной версии в модуль записи словаря XML с указанным пространством имен и локальным именем. |
| WriteTo(AddressingVersion, XmlDictionaryWriter) |
Сохраняет текущий адрес конечной точки указанной версии в указанный модуль записи словаря XML. |
| WriteTo(AddressingVersion, XmlWriter, String, String) |
Сохраняет текущий адрес конечной точки указанной версии в модуль записи XML с указанным пространством имен и локальным именем. |
| WriteTo(AddressingVersion, XmlWriter) |
Сохраняет текущий адрес конечной точки указанной версии в указанный модуль записи XML. |
Операторы
| Имя | Описание |
|---|---|
| Equality(EndpointAddress, EndpointAddress) |
Возвращает значение, указывающее, являются ли указанные адреса конечных точек эквивалентными. |
| Inequality(EndpointAddress, EndpointAddress) |
Возвращает значение, указывающее, являются ли указанные адреса конечных точек эквивалентными. |