Поделиться через


Binding Класс

Определение

Содержит элементы привязки, которые указывают протоколы, транспорты и кодировщики сообщений, используемые для обмена данными между клиентами и службами.

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
Наследование
Binding
Производный
Реализации

Примеры

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

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

Комментарии

Представляет коллекцию элементов привязки, каждый из которых описывает аспект взаимодействия конечной точки с другими конечными точками и которые создаются последовательно в фабрику каналов на клиенте и прослушиватель каналов в службе. Привязка содержит коллекцию элементов привязки, соответствующих каналам протокола, каналам транспорта и кодировщикам сообщений. Для каналов протокола может быть любое количество элементов привязки, но только один элемент привязки для каждого транспортного и кодировщика сообщений. Обычно в привязке есть шесть уровней элементов привязки. Требуются только элементы привязки транспорта и кодирования в нижней части стека. Так как для каждой привязки требуется кодировка, если кодировка не указана, Windows Communication Foundation (WCF) добавляет кодировку по умолчанию. Значением по умолчанию является Text/XML для транспорта HTTP и HTTPS и двоичного файла для других транспортных операций.

В следующей таблице перечислены параметры каждого слоя.

Уровень Options Обязательный
Поток транзакций TransactionFlowBindingElement Нет
Reliability ReliableSessionBindingElement Нет
Безопасность Симметричная, асимметричная, Transport-Level Нет
Изменение фигуры CompositeDuplexBindingElement Нет
Обновления транспорта SSL-поток, поток Windows, одноранговый сопоставитель Нет
Кодирование Текст, бинарный, MTOM, пользовательский Да
Транспорт TCP, именованные каналы, HTTP, HTTPS, MSMQ, Custom Да

Каждый элемент привязки предоставляет спецификацию для создания фабрики каналов на клиенте и прослушивателя каналов в службе. При построении стека фабрики каналов, например, в стеке для каждого элемента привязки в привязке существует одна фабрика каналов. Такое же сопоставление применяется к прослушивателям каналов в стеке службы. Согласованность клиента и службы крайне важна для установления подключения на основе канала между этими конечными точками. Каждая фабрика и прослушиватель, в свою очередь, обрабатывает отправку и прием соответствующих каналов в стеке каналов, который подключает их, и эти каналы затем могут отправлять и получать сообщения, используемые для обмена данными.

Каждый экземпляр Binding имеет и NameNamespace который вместе однозначно идентифицирует его в метаданных службы. Если имя или пространство имен не указано, WCF добавляет значения по умолчанию. Имя по умолчанию — это null пространство http://tempuri.org/имен по умолчанию. Это имя пользователя для привязки отличается от спецификации имени протокола, указанного свойством Scheme . Если вы хотите добавить дополнительные привязки HTTP, например, можно присвоить им имя и задать для всех своих схем значение http. На основе приложения или компьютера не существует встроенных Schemeприложений или машинных диспетчеров. Поэтому не удается зарегистрировать дополнительные обработчики для известных протоколов. Вы также можете легко работать с несколькими версиями привязки параллельно, предоставив каждой версии другое имя.

Класс Binding реализует IDefaultCommunicationTimeouts интерфейс для устранения атак типа "отказ в обслуживании" (DOS), которые полагаются на связывание ресурсов для расширенных интервалов времени. Реализация задает значения времени ожидания связи для открытия и закрытия подключений, а также операций чтения и записи, связанных с получением и отправкой сообщений. Свойства, используемые для получения и задания этих тайм-аутов, и их операции значений по умолчанию приведены в следующей таблице.

Свойство timeout Значение по умолчанию
OpenTimeout 1 минута
CloseTimeout 1 минута
SendTimeout 1 минута
ReceiveTimeout 10 минут

При создании привязки, наследуемой от Binding, необходимо переопределить CreateBindingElements.

Кроме того, можно определить собственные элементы привязки и вставить их между любыми определенными слоями в предыдущей таблице. Дополнительные сведения см. в описании класса CustomBinding.

Конструкторы

Имя Описание
Binding()

Инициализирует новый экземпляр Binding класса с именем и пространством имен по умолчанию.

Binding(String, String)

Инициализирует новый экземпляр Binding класса из указанной привязки службы.

Свойства

Имя Описание
CloseTimeout

Возвращает или задает интервал времени, предоставленный для закрытия соединения перед тем, как транспорт вызывает исключение.

MessageVersion

Возвращает версию сообщения, используемую клиентами и службами, настроенными с привязкой.

Name

Возвращает или задает имя привязки.

Namespace

Возвращает или задает пространство имен XML привязки.

OpenTimeout

Возвращает или задает интервал времени, предоставленный для открытия подключения, прежде чем транспорт вызывает исключение.

ReceiveTimeout

Возвращает или задает интервал времени, в течение которого соединение не может оставаться неактивным, в течение которого сообщения приложения не будут получены до удаления.

Scheme

При реализации в производном классе задает схему URI, указывающую транспорт, используемый каналами и фабриками прослушивателя, созданными привязками.

SendTimeout

Возвращает или задает интервал времени, предоставленный для выполнения операции записи перед тем, как транспорт вызывает исключение.

Методы

Имя Описание
BuildChannelFactory<TChannel>(BindingParameterCollection)

Создает стек фабрики каналов на клиенте, который создает указанный тип канала и удовлетворяет функциям, указанным в коллекции параметров привязки.

BuildChannelFactory<TChannel>(Object[])

Создает стек фабрики каналов на клиенте, который создает указанный тип канала и удовлетворяет функциям, указанным массивом объектов.

BuildChannelListener<TChannel>(BindingParameterCollection)

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет функциям, указанным в коллекции параметров привязки.

BuildChannelListener<TChannel>(Object[])

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

BuildChannelListener<TChannel>(Uri, Object[])

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

BuildChannelListener<TChannel>(Uri, String, Object[])

Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Возвращает значение, указывающее, может ли текущая привязка создавать стек фабрики каналов на клиенте, который удовлетворяет коллекции указанных параметров привязки.

CanBuildChannelFactory<TChannel>(Object[])

Возвращает значение, указывающее, может ли текущая привязка создавать стек фабрики каналов на клиенте, удовлетворяющим требованиям, заданным массивом объектов.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Возвращает значение, указывающее, может ли текущая привязка создать стек прослушивателя каналов в службе, которая удовлетворяет коллекции указанных параметров привязки.

CanBuildChannelListener<TChannel>(Object[])

Возвращает значение, указывающее, может ли текущая привязка создавать стек прослушивателя каналов в службе, удовлетворяющей критериям, указанным в массиве объектов.

CreateBindingElements()

При переопределении в производном классе создает коллекцию, содержащую элементы привязки, которые являются частью текущей привязки.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetProperty<T>(BindingParameterCollection)

Возвращает типизированный объект, запрошенный, если он присутствует, из соответствующего слоя в стеке привязки.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ShouldSerializeName()

Возвращает, следует ли сериализовать имя привязки.

ShouldSerializeNamespace()

Возвращает, следует ли сериализовать пространство имен привязки.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к