Поделиться через


Канал (веб-службы Windows)

Каналы инкапсулируют контекст связи между двумя или более сторонами и используются для отправки и получения сообщений.

На клиенте используйте WsCreateChannel , чтобы создать канал. На сервере используйте WsCreateChannelForListener , чтобы создать канал, который может быть принят клиентом с помощью прослушивателя.

При создании канала укажите следующие сведения, которые определяют как локальное поведение канала, так и используемый проводной протокол.

  • WS_CHANNEL_TYPE, определяющий шаблон обмена сообщениями канала.
  • WS_CHANNEL_BINDING, определяющий используемый протокол передачи.
  • WS_SECURITY_DESCRIPTION, указывающая безопасность, используемую для канала. При создании каналов для использования на сервере этот параметр указывается один раз для всех каналов, которые будут приняты для данного прослушивателя.
  • Набор WS_CHANNEL_PROPERTYs, который задает дополнительные необязательные параметры (список этих параметров см. в перечислениях WS_CHANNEL_PROPERTY_ID ).

Перед использованием канала необходимо открыть его, вызвав функцию WsOpenChannel и указав адрес канала и конечной точки, а также другие необязательные сведения.

Сведения о переходе состояния для канала см. в разделе Состояния каналов .

Дополнительные сведения о каналах см. в разделе Общие сведения об уровне каналов .

С каналами используются следующие элементы API.

Обратный вызов Описание
WS_ABANDON_MESSAGE_CALLBACK Обрабатывает вызов WsAbandonMessage для канала с пользовательской привязкой канала.
WS_ABORT_CHANNEL_CALLBACK Обрабатывает вызов WsAbortChannel для канала с пользовательской привязкой канала.
WS_CLOSE_CHANNEL_CALLBACK Обрабатывает вызов WsCloseChannel для канала с пользовательской привязкой канала.
WS_CREATE_CHANNEL_CALLBACK Обрабатывает вызов WsCloseChannel для канала с пользовательской привязкой канала.
WS_CREATE_DECODER_CALLBACK Обрабатывает создание экземпляра декодера.
WS_CREATE_ENCODER_CALLBACK Обрабатывает создание экземпляра кодировщика.
WS_DECODER_DECODE_CALLBACK Декодирует сообщение.
WS_DECODER_END_CALLBACK Декодирует конец сообщения.
WS_DECODER_GET_CONTENT_TYPE_CALLBACK Возвращает тип источника сообщения.
WS_DECODER_START_CALLBACK Начинает декодирование сообщения.
WS_ENCODER_ENCODE_CALLBACK Кодирует сообщение.
WS_ENCODER_END_CALLBACK Кодирует конец сообщения.
WS_ENCODER_GET_CONTENT_TYPE_CALLBACK Возвращает тип источника сообщения.
WS_ENCODER_START_CALLBACK Начинает кодирование сообщения.
WS_FREE_CHANNEL_CALLBACK Обрабатывает вызов WsFreeChannel для канала с пользовательской привязкой канала.
WS_FREE_DECODER_CALLBACK Обрабатывает освобождение экземпляра декодера.
WS_FREE_ENCODER_CALLBACK Обрабатывает освобождение экземпляра кодировщика.
WS_GET_CHANNEL_PROPERTY_CALLBACK Обрабатывает вызов WsGetChannelProperty для канала с пользовательской привязкой канала.
WS_HTTP_REDIRECT_CALLBACK Вызывается, когда сообщение будет автоматически перенаправляться в другую службу, используя функцию автоматического перенаправления HTTP, как описано в документе RFC2616.
WS_OPEN_CHANNEL_CALLBACK Обрабатывает вызов WsOpenChannel для канала с пользовательской привязкой канала.
WS_READ_MESSAGE_END_CALLBACK Обрабатывает вызов WsReadMessageEnd для канала с пользовательской привязкой канала.
WS_READ_MESSAGE_START_CALLBACK Обрабатывает вызов WsReadMessageEnd для канала с пользовательской привязкой канала.
WS_RESET_CHANNEL_CALLBACK Обрабатывает вызов WsResetChannel для канала с пользовательской привязкой канала.
WS_SET_CHANNEL_PROPERTY_CALLBACK Обрабатывает вызов WsSetChannelProperty для канала с пользовательской привязкой канала.
WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK Обрабатывает вызов WsShutdownSessionChannel для канала с пользовательской привязкой канала.
WS_WRITE_MESSAGE_END_CALLBACK Обрабатывает вызов WsWriteMessageEnd для канала с пользовательской привязкой канала.
WS_WRITE_MESSAGE_START_CALLBACK Обрабатывает вызов WsWriteMessageStart для канала с пользовательской привязкой канала.

 

Перечисление Описание
WS_CHANNEL_BINDING Указывает стек протоколов, используемый для канала.
WS_CHANNEL_PROPERTY_ID Определяет каждое свойство канала по идентификатору.
WS_CHANNEL_STATE Состояние канала.
WS_CHANNEL_TYPE Указывает основные характеристики канала, такие как наличие сеансов и поддерживаемые направления связи.
WS_ENCODING Различные кодировки (форматы сообщений).
WS_RECEIVE_OPTION Указывает, требуется ли сообщение при получении из канала.
WS_TRANSFER_MODE Указывает, передаются ли отправленные или полученные сообщения в потоковую или буферизацию.

 

Функция Описание
WsAbandonMessage Пропускает оставшуюся часть сообщения для канала.
WsAbortChannel Отменяет все ожидающие ввода-вывода в указанном канале и устанавливает состояние канала в WS_CHANNEL_STATE_FAULTED.
WsCloseChannel Закрывает канал, когда он больше не нужен.
WsCreateChannel Создает канал.
WsCreateChannelForListener Создает канал для прослушивателя.
WsFreeChannel Освобождает ресурсы памяти, связанные с каналом.
WsGetChannelProperty Извлекает свойство канала, на которое ссылается параметр канала.
WsOpenChannel Открывает канал для конечной точки.
WsReadMessageEnd Считывает закрывающие элементы сообщения из канала.
WsReadMessageStart Считывает заголовки следующего сообщения из канала и готовится к чтению элементов основного текста.
WsReceiveMessage Получает сообщение и десериализует текст сообщения в качестве значения.
WsRequestReply Отправляет сообщение запроса и получает коррелированное ответное сообщение.
WsResetChannel Сбросьте канал, чтобы его можно было использовать повторно.
WsSendMessage Отправляет сообщение в канал с помощью сериализации для записи элемента body.
WsSendReplyMessage Отправляет сообщение, которое является ответом на полученное сообщение.
WsSetChannelProperty Задает свойство канала.
WsSetMessageProperty Задает свойство сообщения.
WsWriteMessageEnd Записывает закрывающие элементы сообщения в канал.
WsWriteMessageStart Записывает заголовки сообщения в канал и готовится к записи элементов основного текста.

 

Handle Описание
WS_CHANNEL Непрозрачный тип, используемый для ссылки на канал.

 

Структура Описание
WS_CHANNEL_DECODER Набор обратных вызовов, которые преобразуют тип контента и закодированные байты полученного сообщения.
WS_CHANNEL_ENCODER Набор обратных вызовов, которые могут преобразовывать тип контента и закодированные байты отправленного сообщения.
WS_CHANNEL_PROPERTIES Набор WS_CHANNEL_PROPERTY структур.
WS_CHANNEL_PROPERTY Параметр, зависящий от канала.
WS_CUSTOM_CHANNEL_CALLBACKS Набор обратных вызовов, образующих реализацию пользовательского канала.
WS_CUSTOM_HTTP_PROXY используется для указания настраиваемого прокси-сервера для канала, используя значение WS_CHANNEL_PROPERTY_CUSTOM_HTTP_PROXY перечисления WS_CHANNEL_PROPERTY_ID .
WS_HTTP_HEADER_MAPPING Представляет отдельный заголовок, сопоставленный как часть WS_HTTP_MESSAGE_MAPPING.
WS_HTTP_MESSAGE_MAPPING Сведения о том, как HTTP-запрос или ответ должны быть представлены в объекте сообщения.
WS_HTTP_REDIRECT_CALLBACK_CONTEXT Задает функцию обратного вызова и состояние для управления поведением автоматического перенаправления HTTP.
WS_MESSAGE_DESCRIPTION Схема входных и выходных WS_MESSAGE для описания данной операции.