Привязка строк
Строковая привязка — это строка без знака символов, состоящая из строк, представляющих объект привязки UUID, последовательность протокола RPC, сетевой адрес, а также параметры конечной точки и конечной точки.
ObjectUUID@ProtocolSequence:NetworkAddress[Endpoint,Option]
Параметры
-
ObjectUUID
-
UUID объекта, с которым управляет удаленный вызов процедуры. На сервере библиотека времени выполнения RPC сопоставляет тип объекта с вектором точки входа диспетчера (массив указателей функций), чтобы вызвать правильную подпрограмму диспетчера. Сведения о том, как сопоставить UUID объекта с векторами точек входа диспетчера, см. в разделе Регистрация интерфейсов.
-
ProtocolSequence
-
Символьная строка, представляющая допустимое сочетание протокола RPC (например, ncacn), транспортного протокола (например, TCP) и сетевого протокола (например, IP). Microsoft RPC поддерживает следующие протоколы, указанные в разделе Константы последовательности протоколов.
-
NetworkAddress
-
Сетевой адрес системы для приема удаленных вызовов процедур.
Примечание
Следующие последовательности протоколов не поддерживаются в Windows XP:
Формат и содержимое сетевого адреса зависят от указанной последовательности протоколов, как показано ниже.
Последовательность протоколов Сетевой адрес Примеры ncacn_nb_tcp Имя компьютера Myserver ncacn_nb_ipx Имя компьютера Myserver ncacn_nb_nb Имя компьютера Myserver ncacn_ip_tcp Интернет-адрес с четырьмя октетами или имя узла. Если сетевой стек IPv6 установлен, IPv6 полностью поддерживается и IPv6-адрес также принимается. 128.10.2.30 anynode.microsoft.com ncacn_np Имя сервера (в начале двойная обратная косая черта является необязательным) myserver \\myotherserver ncacn_spx IPX Интернет-адрес или имя сервера ~000000108002B30612C myserver ncacn_dnet_nsp Синтаксис области и узла 4.120 ncacn_at_dsp Имя компьютера, за которым при необходимости следует @ и имя зоны AppleTalk. По умолчанию используется @*, зона клиента, если зона не указана. servername@zonename servername ncacn_vns_spp Имя сервера StreetTalk формы item@group@organization printserver@sdkdocs@microsoft ncadg_mq Имя сервера Myserver ncacn_http Адрес в Интернете (либо четырехэттовое, либо понятное имя, либо имя локального сервера 128.10.2.30 somesvr@anywhere.com mylocalsvr ncadg_ip_udp Интернет-адрес с четырьмя октетами или имя узла 128.10.2.30 anynode.microsoft.com ncadg_ipx IPX Интернет-адрес или имя сервера ~000000108002B30612C myserver ncalrpc Имя компьютера thismachine Поле сетевого адреса является необязательным. Если сетевой адрес не указан, строковая привязка ссылается на локальный узел. При использовании последовательности протокола ncalrpc можно указать имя локального компьютера, однако это совершенно не требуется.
-
Конечной точки
-
Конечная точка или адрес процесса для получения удаленных вызовов процедур. Конечной точке может предшествовать ключевое слово endpoint=. Указание конечной точки является необязательным, если сервер зарегистрировал свои привязки в сопоставитель конечных точек. См . раздел RpcEpRegister.
Формат и содержимое конечной точки зависят от указанной последовательности протоколов, как показано в следующей таблице конечных точек и параметров.
-
Параметр
-
Параметры, относящиеся к протоколу. Поле параметра не является обязательным. Каждый параметр задается парой {name, value}, которая используетзначение параметра с именем= синтаксиса. Параметры определяются для каждой последовательности протоколов, как показано в следующей таблице Endpoint/Option.
Последовательность протоколов Конечная точка Примеры Имя параметра ncacn_nb_tcp Целое число от 1 до 254. Многие значения от 0 до 32 зарезервированы корпорацией Майкрософт. 100 Нет ncacn_nb_ipx (как описано выше) (как описано выше) Нет ncacn_nb_nb (как описано выше) (как описано выше) Нет ncacn_ip_tcp Номер интернет-порта. 1025 Нет ncacn_np Именованный канал. Имя должно начинаться с "\\pipe". \\pipe\\pipename Безопасность ncacn_spx Целое число от 1 до 65535. 5000 Нет ncacn_dnet_nsp DeCnet phase IV номер объекта (должен предшествовать символ #) или имя объекта. mailserver #17 Нет ncacn_at_dsp Строка символов длиной до 22 байт. myservicesendpoint Нет ncacn_vns_spp Номер порта Vines SPP от 250 до 511. 500 Нет ncadg_mq Целое число от 1 до 65535. 5000 Нет ncacn_http Номер интернет-порта. 2215 Имена прокси-серверов HTTP и RPC, параметр HttpConnection ncadg_ip_udp Номер интернет-порта. 1025 Нет ncadg_ipx Целое число от 1 до 65535. 5000 Нет ncalrpc Строка, указывающая имя приложения или службы. Строка не может содержать символы обратной косой черты. my_printer Безопасность Имя параметра HttpConnectionOption , поддерживаемое для последовательности протокола ncacn_http, принимает следующее значение.
Имя параметра Значение HttpConnectOption ИспользованиеHttpProxy HttpConnectionOption позволяет направлять поведение RPC при создании HTTP-подключений. Значение UseHttpProxy указывает RPC маршрутизировать свой трафик через прокси-сервер HTTP в любое время, в том числе, если для клиента заданы свойства браузера в Обозреватель Internet Обозреватель обход прокси-сервера для локальных адресов. Этот параметр указывает клиенту принудительно подключиться к прокси-серверу RPC через прокси-сервер HTTP. Это ускоряет время установки подключения, так как оно обходит любую задержку поиска RPC-сервера непосредственно перед использованием прокси-сервера HTTP.
Если используется этот параметр HttpConnectionOption и Обозреватель Интернета на клиенте не настроен для использования этого прокси-сервера HTTP, подключения могут завершиться сбоем с RPC_S_INVALID_NETWORK_OPTIONS.
HttpConnectOption=UseHttpProxy
Дополнительные сведения о HttpConnectionOption см. в разделе Использование HTTP в качестве транспорта RPC.
Имя параметра Безопасности , поддерживаемого для последовательностей протоколов ncalrpc, ncacn_np, ncadg_ip_udp и ncadg_ipx, принимает следующие значения параметров.
Имя параметра Значение параметра Безопасность {identification | anonymous | impersonation} {dynamic | static} {true | false} Если указано имя параметра безопасности, необходимо также указать одну запись из каждого набора значений параметров безопасности. Значения параметров должны быть разделены символом с одним пробелом. Например, допустимы следующие поля Option :
Security=identification dynamic true Security=impersonation static true
Значения параметров безопасности имеют следующие значения.
Значение параметра безопасности Описание Анонимные Клиент анонимен по отношению к серверу. Динамический Изменения в удостоверении безопасности клиента отображаются сервером, когда сервер использует безопасность транспорта. Это режим по умолчанию для безопасности на уровне транспорта LRPC (ncalrpc) и для безопасности на уровне транспорта локального именованного канала (ncacn_np). False Effective = FALSE; Все параметры привилегий маркера, включая параметры OFF, включаются в маркер на сервере и могут быть включены сервером. Привилегии применимы только для вызовов RPC на одном компьютере. Идентификация Сервер имеет сведения о клиенте, но не может олицетворить себя. Олицетворение Сервер может действовать от имени клиента в локальной системе (безопасность на уровне транспорта не поддерживает делегирование). статически. Изменения в удостоверении безопасности клиента не отображаются сервером, когда сервер использует безопасность транспорта. Это единственный режим, доступный для безопасности на уровне транспорта удаленного именованного канала (ncacn_np). Удостоверение вызывающего объекта сохраняется во время первого удаленного вызова процедуры для этого дескриптора привязки, а не во время создания дескриптора привязки. True Effective = TRUE; В маркер на сервере включаются только параметры привилегий маркера, для которых задано значение ON. Если используется этот параметр, сервер не может включить привилегии off. Привилегии применимы только для вызовов RPC на одном компьютере. Дополнительные сведения о параметрах безопасности см. в разделе Безопасность.
Комментарии
Пробелы не допускаются в привязках строк, за исключением случаев, когда это необходимо для синтаксиса Option . Параметры по умолчанию для полей NetworkAddress, Endpoint и Option зависят от значения элемента ProtocolSequence .
Для всех полей привязки строк один символ обратной косой черты (\) интерпретируется как escape-символ. Чтобы указать один литеральный символ обратной косой черты, необходимо указать два символа обратной косой черты (\\).
Строковая привязка содержит символьное представление дескриптора привязки, а иногда и части дескриптора привязки. Строковые привязки удобны для представления частей дескриптора привязки, но их нельзя использовать для выполнения удаленных вызовов процедур. Сначала их необходимо преобразовать в дескриптор привязки, вызвав RpcBindingFromStringBinding.
Кроме того, привязка строки не содержит всю информацию из дескриптора привязки. Например, сведения о проверке подлинности, если таковые имеются, связанные с дескриптором привязки, не превратятся в привязку строки, возвращаемую путем вызова RpcBindingToStringBinding.
Во время разработки распределенного приложения серверы могут передавать сведения о привязке клиентам с помощью привязок строк, чтобы установить связь "клиент-сервер" без использования базы данных сопоставления конечной точки или базы данных "имя-служба". Чтобы установить такую связь, используйте функцию RpcBindingToStringBinding для преобразования одного или нескольких дескрипторов привязки из вектора обработки привязки в привязку строки и предоставления привязки строки клиенту.
Примеры
Ниже приведены примеры допустимых строковых привязок. В этих примерах obj-uuid используется для удобства для представления допустимого UUID в строковой форме. Вместо UUID 308FB580-1EB2-11CA-923B-08002B1075A7 в примерах показан obj-uuid.
obj-uuid@ncadg_mq:mymqserver
obj-uuid@ncacn_http:major7.microsoft.com[2225]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
RpcProxy=websvr1.microsoft.com:80]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
RpcProxy=websvr1.microsoft.com:80,HttpConnectOption=UseHttpProxy]
obj-uuid@ncacn_ip_tcp:16.20.16.27[2001]
obj-uuid@ncacn_ip_tcp:16.20.16.27[endpoint=2001]
obj-uuid@ncacn_nb_nb:
obj-uuid@ncacn_nb_nb:[100]
obj-uuid@ncacn_np:
obj-uuid@ncacn_np:[\\pipe\\p3,Security=impersonation static true]
obj-uuid@ncacn_np:\\\\marketing[\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\marketing[endpoint=\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\sales
obj-uuid@ncacn_np:\\\\sales[\\pipe\\p1,Security=identification dynamic true]
obj-uuid@ncalrpc:
obj-uuid@ncalrpc:[object1_name_demonstrating_that_these_can_be_lengthy]
obj-uuid@ncalrpc:[object2_name,Security=anonymous static true]
obj-uuid@ncacn_vns_spp:server@group@org[500]
obj-uuid@ncacn_dnet_nsp:took[elf_server]
obj-uuid@ncacn_dnet_nsp:took[endpoint=elf_server]
obj-uuid@ncadg_ip_udp:128.10.2.30
obj-uuid@ncadg_ip_udp:maryos.microsoft.com[1025]
obj-uuid@ncadg_ipx: ~0000000108002B30612C[5000]
obj-uuid@ncadg_ipx:printserver
obj-uuid@ncacn_spx:annaw[4390]
obj-uuid@ncacn_spx:~0000000108002B30612C