其他 RPC 性能提示

本部分讨论开发高性能 RPC 服务器的其他性能提示。 本部分提供了许多引用 RPC 客户端的提示。 正确开发 RPC 客户端可使 RPC 服务器执行更少的工作。

使用 Kerberos

如果使用安全性,请使用 Kerberos。 在服务器端,Kerberos 不需要访问 KDC。 这会将工作负荷从服务器移到客户端,从而提供更好的服务器性能。

使用静态标识跟踪

如果使用安全性,请尝试使用静态标识跟踪。 与动态标识跟踪相比,静态标识跟踪比动态标识跟踪便宜。 如果客户端标识发生更改,并且服务器不应注意更改,请使用动态跟踪,而不是为每个标识创建不同的绑定句柄。 但是,如果标识相同,请确保 RPC 知道这一事实,以避免每次都对更改的标识进行 RPC 检查。

使用 RpcGetAuthorizationContextForClient 函数

如果需要在 Windows XP 中检查访问权限,请使用 RpcGetAuthorizationContextForClient 函数。 生成的 Authz 上下文可实现非常快速的访问检查,这些检查由 RPC 运行时有效缓存。

除非必要,否则请勿修改令牌

如果使用动态标识跟踪,请不要修改线程/进程令牌,除非绝对必要。 即使它修改为以前拥有的设置,令牌通常与安全系统完全不同,以触发新的安全上下文的建立。

考虑上下文句柄的混合模式序列化

上下文句柄的默认序列化模式已序列化(独占)。 请考虑发出所有不修改共享序列化模式下上下文句柄状态的调用。 有关详细信息,请参阅 RpcSsContextLockExclusive