Средство удаленного вызова процедур (Remote
Procedure Call, RFC)
Средство удаленного вызова процедур позволяет создавать
распределенные приложения, вызывающие функции, реализованные как локально,
так и на удаленных компьютерах. RPC предоставляет модель работы с сетью,
ориентированную на процедуры, а не на транспорты, что позволяет упростить
разработку распределенных приложений. Библиотека RPC (rpcrt4.dll) и компилятор
MIDL (Microsoft Interface Definition Language, MIDL - язык описания интерфейса
фирмы Microsoft) позволяют программистам с легкостью создавать распределенные
приложения.
Библиотека RPC периода выполнения включает процедуры для управления RPC
по сети, а также разновидность RPC, называемою локальным RPC. Локальный
RPG может быть использован для взаимодействия между двумя процессами,
располагающимися на одной и той же машине, для этого библиотека RPC периода
выполнения использует средство LPC в режиме ядра в качестве локального
сетевого API. Когда RPC базируется на нелокальных механизмах взаимодействия,
библиотека RPC использует такие интерфейсы как Winsock и именованные каналы
(см. рис. 21).
Рис. 21. Интерфейс RPC
Для регистрации и поиска имен RPC-приложещя связываются
с клиентской библиотекой сервиса имен RPC - rpcns4.dll. Эта DLL взаимодействует
с подсистемой
RPCSS (RPCSS.exe для WinNT, RPCSS.dll для Win2000), стартующей автоматически
при загрузке ОС, и реализованной как Win32-сервис. Сервис Rpcss сам является
RFC-приложением, которое взаимодействует с такими же приложениями на других
системах для выполнения поиска имен и регистрации.
Сервис Rpcss реализует некоторые RPC и OLE сервисы, включая динамическое
назначение и разрешение адреса серверного процесса и разрешение DCOM-объектов
(Distributed Component Object Model). Также при загрузке ОС автоматически
стартует и исполняется в собственном процессе сервис locator.exe — провайдер
сервиса имен для RPC. Сервис имен - сервис, отображающий имена в объекты
и хранящий пары имя/объект в базе данных. Например, сервис имен RPC locator.exe
отображает логические имена в описатели соединений (структуры данных,
представляющие логические соединения между клиентом и сервером), чтобы
клиентское приложение могло обращаться по этому логическому имени, а не
использовать последовательность протоколов и сетевые адреса.
Библиотека RPC периода выполнения использует для взаимодействия с транспортным
протоколом единый интерфейс доступа к транспорту
RPC (RPC transport provider interface). Этот интерфейс служит прослойкой
между средством RPC и транспортом и предоставляется различными библиотеками.
Например:
- 1. rpcltcl.dll - библиотека клиентского приложения, предоставляющая
транспорт именованных каналов;
2. rpcltsl.dll - библиотека серверного приложения, предоставляющая транспорт
именованных каналов;
3. rpcltc3.dll - библиотека клиентского приложения, предоставляющая
транспорт TCP/IP;
4. rpclts3.dll - библиотека серверного приложения, предоставляющая транспорт
TCP/IP.
Существуют и другие библиотеки для серверных и клиентских
приложений, предоставляющие транспорты NetBIOS, Winsock и т.д.
Средство RPC может работать поверх большого количества транспортов, однако
при работе по сети LAN Manager средство RPC использует в качестве сетевого
транспорта именованные каналы.
Большинство сетевых сервисов Windows NT являются RPC-приложениями, и могут
вызываться как локальными процессами, так и процессами на удаленных машинах. |