BindingElement Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Элементы привязок, которые создают фабрики каналов и прослушиватели каналов для различных типов каналов, которые используются для обработки исходящих и входящих сообщений.
public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
- Наследование
-
BindingElement
- Производный
Примеры
В следующем примере показано, как добавить элемент привязки транспорта в настраиваемую привязку, а затем создать прослушиватель канала, который может принимать входящие сообщения.
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new HttpTransportBindingElement());
BindingParameterCollection paramCollection = new BindingParameterCollection();
IChannelListener<IReplyChannel> listener = binding.BuildChannelListener<IReplyChannel>
(new Uri("http://localhost:8000/ChannelApp"), paramCollection);
listener.Open();
IReplyChannel channel = listener.AcceptChannel();
Console.WriteLine("Listening for messages");
channel.Open();
RequestContext request = channel.ReceiveRequest();
Message msg = request.RequestMessage;
Console.WriteLine("Message Received");
Console.WriteLine("Message Action: {0}", msg.Headers.Action);
if (msg.Headers.Action == "hello")
{
Message reply = Message.CreateMessage(MessageVersion.Default, "wcf");
request.Reply(reply);
}
msg.Close();
channel.Close();
listener.Close();
Dim binding As New CustomBinding()
binding.Elements.Add(New HttpTransportBindingElement())
Dim paramCollection As New BindingParameterCollection()
Dim listener As IChannelListener(Of IReplyChannel)
listener = binding.BuildChannelListener(Of IReplyChannel)(New Uri("http://localhost/channelApp"), paramCollection)
listener.Open()
Dim channel As IReplyChannel = listener.AcceptChannel()
Console.WriteLine("Listening for messages")
channel.Open()
Dim request As RequestContext = channel.ReceiveRequest()
Dim msg As Message = request.RequestMessage
Console.WriteLine("Message Received")
Console.WriteLine("Message Action: {0}", msg.Headers.Action)
If (msg.Headers.Action = "hello") Then
Dim reply As Message = Message.CreateMessage(MessageVersion.Default, "wcf")
request.Reply(reply)
End If
msg.Close()
channel.Close()
listener.Close()
Комментарии
Привязка состоит из упорядоченного набора элементов привязки, наследуемых от этого абстрактного базового класса. Класс TransportBindingElement наследует от класса BindingElement.
Создание элемента привязки и привязки для транспорта является необязательным, если вы используете модель канала. Вы можете сделать все, что вам нужно через фабрику каналов и прослушиватель до тех пор, пока они становятся общедоступными.
Модель службы Windows Communication Foundation (WCF) использует шаблон фабрики, в котором привязка используется для создания стека каналов. Если вы хотите использовать модель службы WCF, необходимо использовать элемент привязки транспорта. При размещении этого элемента привязки в привязку рекомендуется, так как он удаляет требование для пользователей создавать собственную пользовательскую привязку для вашего транспорта. Рекомендуется создать как элемент привязки, так и привязку, а также скрыть фабрику каналов и прослушиватель внутри сборки.
На стороне отправки привязка используется для сборки IChannelFactory, которая, в свою очередь, создает стек каналов и возвращает ссылку на верхний канал в стеке. Затем приложение может использовать этот канал для отправки сообщений.
Аналогичным образом, на принимающей стороне привязка используется для сборки IChannelListener, которая прослушивает входящие сообщения. Предоставляет IChannelListener сообщения приложению для прослушивания, создавая стеки каналов и передавая приложению ссылку на верхний канал. Затем приложение использует этот канал для получения входящих сообщений.
Note
Если вы добавляете заголовки сообщений, которые должны быть зашифрованы, необходимо вернуть ChannelProtectionRequirements экземпляр с вашими требованиями из метода при запросеGetProperty<T>(BindingContext)ChannelProtectionRequirements.
Конструкторы
| Имя | Описание |
|---|---|
| BindingElement() |
Инициализирует новый экземпляр класса BindingElement. |
| BindingElement(BindingElement) |
Инициализирует новый экземпляр класса из указанного BindingElement элемента привязки. |
Методы
| Имя | Описание |
|---|---|
| BuildChannelFactory<TChannel>(BindingContext) |
Инициализирует фабрику каналов для создания каналов указанного типа из контекста привязки. |
| BuildChannelListener<TChannel>(BindingContext) |
Инициализирует прослушиватель каналов для приема каналов указанного типа из контекста привязки. |
| CanBuildChannelFactory<TChannel>(BindingContext) |
Возвращает значение, указывающее, может ли элемент привязки создать фабрику каналов для определенного типа канала. |
| CanBuildChannelListener<TChannel>(BindingContext) |
Возвращает значение, указывающее, может ли элемент привязки создать прослушиватель для определенного типа канала. |
| Clone() |
При переопределении в производном классе возвращает копию объекта элемента привязки. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetProperty<T>(BindingContext) |
При переопределении в производном классе возвращает запрошенный типизированный объект( если он присутствует) из соответствующего слоя в стеке привязки. |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |