Выбор последовательности протоколов

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

Microsoft RPC поддерживает три протокола RPC:

  • Протокол, ориентированный на подключение архитектуры сетевых вычислений (NCACN)
  • Протокол datagram архитектуры сетевых вычислений (NCADG)
  • Вызов локальной удаленной процедуры архитектуры сетевых вычислений (NCALRPC)

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

Транспортный и сетевой протоколы, которые использует приложение, зависят от того, какие протоколы поддерживает сеть. Многие сети сегодня, включая Интернет, поддерживают TCP/IP. Другие распространенные транспортные и сетевые протоколы: IPX/SPX, NetBIOS и DSP AppleTalk. Microsoft RPC поддерживает эти и другие протоколы транспорта и сети. Полный список см. в разделе Константы последовательности протоколов.

Если приложение использует автоматические дескрипторы привязки, ему не нужно указывать последовательность протоколов. Если используются неявные или явные дескрипторы, необходимо получить или указать последовательность протокола. Каждая распределенная система должна изучить среду, в которой она будет развернута, чтобы определить, какая последовательность протоколов лучше всего подходит для этой среды.

Не все последовательности протоколов имеют эквивалентную функциональность. Разработчики должны убедиться, что выбранная последовательность протоколов поддерживает необходимые функции. Как правило, рекомендуется использовать ncalrpc для локальной связи и ncacn_ip_tcp или ncacn_http для удаленной связи; они работают во всех средах, имеют оптимальную производительность и поддерживают все необходимые функции.

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

После того как клиентская программа имеет допустимую строку последовательности протокола, она может передать эти сведения в функции RpcStringBindingCompose и RpcBindingFromStringBinding для создания дескриптора привязки.