客户端绑定
绑定句柄由协议序列、服务器程序主机的名称或地址以及服务器程序终结点组成。 因此,客户端程序必须获取或提供此信息才能创建绑定。
如果客户端程序使用自动绑定句柄,则无需编写特殊的源代码来创建或管理绑定。 客户端存根调用建立和维护绑定所需的 RPC 函数。 只需指定客户端在应用程序配置文件中使用自动绑定句柄 (ACF) ,然后相应地设计接口。 有关详细信息,请参阅 自动绑定句柄。
例如,假设你正在开发一个调用远程时间戳函数的客户端程序。 在这里,存根将执行所有工作,客户端只需包含生成的头文件 Auto.h 即可获取远程过程的函数原型。 客户端应用程序对远程过程的调用看起来就像调用本地过程一样,如以下示例所示:
/* auto handle client application (fragment) */
#include <windows.h>
#include <stdio.h>
#include <time.h>
#include "auto.h" // header file generated by the MIDL compiler
void main(int argc, char **argv)
{
time_t t1;
time_t t2;
char * pszTime;
...
GetTime(&t1); // GetTime is a remote procedure
GetTime(&t2);
pszTime = ctime(&t1);
printf("time 1= %s\n", pszTime);
pszTime = ctime(&t2);
printf("time 2= %s\n", pszTime);
Shutdown(); // Shutdown is a remote procedure
exit(0);
}
如前面的示例中所示,客户端应用程序不必对 RPC 运行时库函数进行任何显式调用。 客户端存根管理它们。
如果应用程序使用隐式或显式绑定句柄,则客户端必须获取绑定信息并调用 RPC 函数来创建句柄。 客户端从何处获取绑定信息取决于应用程序的要求。 安装客户端应用程序的安装程序可以将绑定信息存储在它创建的环境变量中。 它还可以将绑定信息保存在特定于应用程序的配置文件中。 由于环境变量或配置文件中的绑定信息通常存储为字符串,因此客户端应用程序需要将字符串转换为绑定。 在 Windows XP/2000 环境中,可以从 Active Directory 检索绑定信息。 有关详细信息,请参阅 使用字符串绑定。
大多数网络都有名称服务。 服务器程序可以在名称服务数据库中播发自身。 当客户端开始执行时,它可以从名称服务数据库中获取其绑定信息。 有关详细信息,请参阅 从名称服务数据库导入。
以下主题讨论了使用隐式句柄和显式句柄进行绑定所需的步骤:
有关这些主题的简要概述,请参阅 连接客户端和服务器。