Каналы (RPC)
Конструктор типа канала — это эффективный механизм для передачи больших объемов данных или любого количества данных, которые одновременно не все доступны в памяти. Используя канал, время выполнения RPC обрабатывает фактическую передачу данных, устраняя издержки, связанные с повторяющимися удаленными вызовами процедур.
После того как клиент вызывает удаленную процедуру с параметром канала, клиент и сервер входят в циклы для передачи данных. Данные могут быть созданы на клиенте или сервере. В любом случае объем данных (в байтах) не должен быть известен заранее. Данные можно производить или использовать постепенно. В цикле передачи данных сервер вызывает подпрограммы-заглушки, которые загружают или выгружают буфер данных. Клиент вызывает определяемые программистом процедуры для выделения буферов, загрузки данных в буферы и их выгрузки из буферов.
В этом разделе представлен обзор использования каналов для удаленных вызовов процедур. В ней представлен обзор в следующих разделах:
- Терминология основных каналов
- Состояние канала
- Определение каналов в IDL-файлах
- Реализация канала на стороне клиента
- Реализация канала на стороне сервера
- Правила для нескольких каналов
- Объединение параметров pipe и nonpipe
Дополнительные сведения о синтаксисе и ограничениях канала см. в разделе Pipe в справочнике по языку MIDL. Пример программы PIPES в каталоге Samples\rpc пакета sdk для платформы демонстрирует использование каналов [in,out] для передачи данных между клиентом и сервером.