CustomBinding Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет привязку из списка элементов привязки.
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- Наследование
- Атрибуты
Примеры
В следующем примере показано, как создать CustomBinding объект с помощью a ReliableSessionBindingElement и an HttpTransportBindingElement
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// 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();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' 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()
End Using
Комментарии
Используйте пользовательскую привязку, если одна из системных привязок не соответствует требованиям службы. Пользовательская привязка может использоваться, например, для включения использования нового транспорта или нового кодировщика в конечной точке службы.
Пользовательская привязка создается с помощью одной из CustomBinding коллекции элементов привязки, которые "стекаются" в определенном порядке:
В верхней части является необязательным TransactionFlowBindingElement , который позволяет выполнять потоки транзакций.
Далее является необязательным ReliableSessionBindingElement , который предоставляет механизм сеанса и упорядочивания, как определено в спецификации WS-ReliableMessaging. Это понятие сеанса может пересекать посредники SOAP и транспорта.
Далее — это необязательный элемент привязки безопасности, который предоставляет такие функции безопасности, как авторизация, проверка подлинности, защита и конфиденциальность. Следующие элементы привязки безопасности предоставляются Windows Communication Foundation (WCF):
Далее приведены необязательные шаблоны сообщений, указанные элементами привязки:
Далее приведены необязательные элементы привязки транспортных обновлений и вспомогательных элементов:
Далее следует обязательный элемент кодировки сообщений. Вы можете использовать собственный транспорт или использовать одну из следующих привязок кодирования сообщений:
Внизу находится обязательный транспортный элемент. Вы можете использовать собственный транспорт или использовать один из элементов привязки транспорта, предоставляемых Windows Communication Foundation (WCF):
В следующей таблице перечислены параметры каждого слоя.
| Уровень | Параметры | Обязательный |
|---|---|---|
| Поток транзакций | TransactionFlowBindingElement | Нет |
| Reliability | ReliableSessionBindingElement | Нет |
| Безопасность | Симметричная, асимметричная, Transport-Level | Нет |
| Изменение фигуры | CompositeDuplexBindingElement | Нет |
| Обновления транспорта | SSL-поток, поток Windows, одноранговый сопоставитель | Нет |
| Кодирование | Текст, бинарный, MTOM, пользовательский | Yes |
| Transport | TCP, именованные каналы, HTTP, HTTPS, вкусы MSMQ, Custom | Yes |
Кроме того, можно определить собственные элементы привязки и вставить их между любым из предыдущих определенных слоев.
Сведения о том, как использовать пользовательскую привязку для изменения предоставленной системой привязки, см. в статье "Практическое руководство. Настройка привязки System-Provided".
Note
При вызове службы WCF, созданной с помощью .NET Framework 4.0 или более поздней версии, из клиентского приложения WCF, созданного с помощью .NET Framework 3.5 или более ранней версии, файл конфигурации, созданный svcutil.exe или добавив ссылку на службу из Visual Studio, будет содержать атрибут допустимости в конфигурации привязки. Этот атрибут не распознается средой выполнения .NET Framework 3.5, и приложение создаст ConfigurationErrorsException с сообщением "Нераспознанное значение допустимости атрибута". Чтобы устранить эту проблему, удалите атрибут допустимости из конфигурации привязки.
Конструкторы
| Имя | Описание |
|---|---|
| CustomBinding() |
Инициализирует новый экземпляр класса CustomBinding. |
| CustomBinding(Binding) |
Инициализирует новый экземпляр CustomBinding класса из значений указанной привязки. |
| CustomBinding(BindingElement[]) |
Инициализирует новый экземпляр CustomBinding класса из массива элементов привязки. |
| CustomBinding(IEnumerable<BindingElement>) |
Инициализирует новый экземпляр класса с элементами привязки CustomBinding из полного стека каналов. |
| CustomBinding(String, String, BindingElement[]) |
Инициализирует новый экземпляр CustomBinding класса из массива элементов привязки с указанным именем и пространством имен. |
| CustomBinding(String) |
Инициализирует новый экземпляр класса CustomBinding. |
Свойства
| Имя | Описание |
|---|---|
| CloseTimeout |
Возвращает или задает интервал времени, предоставленный для закрытия соединения перед тем, как транспорт вызывает исключение. (Унаследовано от Binding) |
| Elements |
Возвращает элементы привязки из пользовательской привязки. |
| MessageVersion |
Возвращает версию сообщения, используемую клиентами и службами, настроенными с привязкой. (Унаследовано от Binding) |
| Name |
Возвращает или задает имя привязки. (Унаследовано от Binding) |
| Namespace |
Возвращает или задает пространство имен XML привязки. (Унаследовано от Binding) |
| OpenTimeout |
Возвращает или задает интервал времени, предоставленный для открытия подключения, прежде чем транспорт вызывает исключение. (Унаследовано от Binding) |
| ReceiveTimeout |
Возвращает или задает интервал времени, в течение которого соединение не может оставаться неактивным, в течение которого сообщения приложения не будут получены до удаления. (Унаследовано от Binding) |
| Scheme |
Возвращает схему URI для транспорта, используемого пользовательской привязкой. |
| SendTimeout |
Возвращает или задает интервал времени, предоставленный для выполнения операции записи перед тем, как транспорт вызывает исключение. (Унаследовано от Binding) |
Методы
| Имя | Описание |
|---|---|
| BuildChannelFactory<TChannel>(BindingParameterCollection) |
Создает стек фабрики каналов на клиенте, который создает указанный тип канала и удовлетворяет функциям, указанным в коллекции параметров привязки. (Унаследовано от Binding) |
| BuildChannelFactory<TChannel>(Object[]) |
Создает стек фабрики каналов на клиенте, который создает указанный тип канала и удовлетворяет функциям, указанным массивом объектов. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(BindingParameterCollection) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет функциям, указанным в коллекции параметров привязки. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Object[]) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Uri, Object[]) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| BuildChannelListener<TChannel>(Uri, String, Object[]) |
Создает прослушиватель каналов в службе, которая принимает указанный тип канала и удовлетворяет указанным функциям. (Унаследовано от Binding) |
| CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
Возвращает значение, указывающее, может ли текущая привязка создавать стек фабрики каналов на клиенте, который удовлетворяет коллекции указанных параметров привязки. (Унаследовано от Binding) |
| CanBuildChannelFactory<TChannel>(Object[]) |
Возвращает значение, указывающее, может ли текущая привязка создавать стек фабрики каналов на клиенте, удовлетворяющим требованиям, заданным массивом объектов. (Унаследовано от Binding) |
| CanBuildChannelListener<TChannel>(BindingParameterCollection) |
Возвращает значение, указывающее, может ли текущая привязка создать стек прослушивателя каналов в службе, которая удовлетворяет коллекции указанных параметров привязки. (Унаследовано от Binding) |
| CanBuildChannelListener<TChannel>(Object[]) |
Возвращает значение, указывающее, может ли текущая привязка создавать стек прослушивателя каналов в службе, удовлетворяющей критериям, указанным в массиве объектов. (Унаследовано от Binding) |
| CreateBindingElements() |
Возвращает универсальную коллекцию элементов привязки из пользовательской привязки. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetProperty<T>(BindingParameterCollection) |
Возвращает типизированный объект, запрошенный, если он присутствует, из соответствующего слоя в стеке привязки. (Унаследовано от Binding) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ShouldSerializeName() |
Возвращает, следует ли сериализовать имя привязки. (Унаследовано от Binding) |
| ShouldSerializeNamespace() |
Возвращает, следует ли сериализовать пространство имен привязки. (Унаследовано от Binding) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |