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


Полностью и частично привязанные дескрипторы

При использовании динамических конечных точек библиотеки времени выполнения получают сведения о конечной точке по мере необходимости. Библиотеки времени выполнения различают полностью привязанный дескриптор (который включает сведения о конечной точке) и частично связанный дескриптор (который не содержит сведения о конечной точке).

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

  • Из спецификации интерфейса клиента
  • Из службы сопоставления конечных точек, работающей на сервере

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

При сбое удаленного вызова процедуры клиентское приложение может вызвать RpcBindingReset , чтобы удалить устаревшие сведения о конечной точке. Когда клиент пытается вызвать удаленную процедуру, библиотека времени выполнения клиента снова пытается преобразовать полностью привязанный дескриптор в частично связанный дескриптор. Это полезно, если сервер был остановлен и перезапущен с помощью другой динамической конечной точки.