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


Явные дескрипторы привязки

Для максимального контроля над процессом привязки клиентские и серверные приложения могут использовать явные дескрипторы привязки. Как и неявные дескрипторы привязки, явные дескрипторы привязки позволяют клиентскому приложению выбрать сервер для выполнения его вызовов. Кроме того, явные дескрипторы привязки позволяют приложению клиента или сервера создать сеанс связи RPC с проверкой подлинности. С помощью явных дескрипторов клиент может подключаться к нескольким серверам и выполнять удаленные процедуры на нескольких серверах. Многопоточные и асинхронные клиентские приложения могут даже подключаться к нескольким серверам и выполнять несколько удаленных процедур одновременно.

Клиентское приложение должно передавать явный дескриптор в качестве параметра при каждом удаленном вызове процедуры. Чтобы соответствовать стандарту OSF, дескриптор должен быть указан в качестве первого параметра для каждой удаленной процедуры. Однако расширения Майкрософт для RPC позволяют указать дескриптор привязки в других позициях. Дополнительные сведения см. в статье Расширения microsoft RPC Binding-Handle.

Чтобы создать явный дескриптор, объявите дескриптор в качестве параметра для удаленных операций в IDL-файле. Пример Hello, World можно переопределять, чтобы использовать явный дескриптор, как показано ниже:

/* IDL file for explicit handles */
 
[ 
  uuid(20B309B1-015C-101A-B308-02608C4C9B53),
  version(1.0) 
]
interface hello
{
  void HelloProc([in] handle_t h1,
                 [in, string] char *  pszString); 
}

Явные и неявные дескрипторы можно объединять в одном интерфейсе. Если функция имеет явный дескриптор в списке параметров, будет использоваться этот дескриптор. Если функция в интерфейсе, использующий неявные дескрипторы, не указывает явный дескриптор, будет использоваться неявный дескриптор по умолчанию.