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) добавляет кодировку по умолчанию. По умолчанию для транспортов HTTP и HTTPS используется текстовое/XML-кодирование, для остальных — двоичное.

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

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

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

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

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

Свойство времени ожидания Значение по умолчанию
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)

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