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