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 с использованием элементов привязки ReliableSessionBindingElement и 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 | Нет |
Надежность | ReliableSessionBindingElement | Нет |
Безопасность | Симметричный, асимметричный, транспортного уровня | Нет |
Изменение формы | CompositeDuplexBindingElement | Нет |
Обновления транспорта | Поток SSL, поток Windows, распознаватель одноранговых узлов | Нет |
Кодирование | Текстовая, двоичная, MTOM, пользовательская | Да |
Транспорт | TCP, именованные каналы, HTTP, HTTPS, разновидности MSMQ, пользовательский | Да |
Кроме того, можно определить собственные элементы привязки и вставить их между любыми из приведенных выше заданных уровней.
Обсуждение использования пользовательской привязки для изменения привязки, предоставляемой системой, см. в разделе Практическое руководство. Настройка привязки System-Provided.
Примечание
При вызове службы 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) |
Инициализирует новый экземпляр класса CustomBinding. |
CustomBinding(String, String, BindingElement[]) |
Инициализирует новый экземпляр класса 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) |