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 предоставляет сообщения прослушивающему приложению, создавая стеки каналов и обрабатывая ссылку приложения на верхний канал. Затем приложение использует этот канал для приема входящих сообщений.
Примечание
При добавлении заголовков сообщений, которые должны быть зашифрованы, необходимо вернуть 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) |