Прочие советы по повышению производительности RPC
В этом разделе рассматриваются различные советы по повышению производительности для разработки высокопроизводительных серверов RPC. В этом разделе приведено множество советов, которые относятся к клиенту RPC. Правильная разработка клиента RPC позволяет серверу RPC выполнять меньше работы.
Использование Kerberos
Если используется безопасность, используйте Kerberos. На стороне сервера Kerberos не требуется доступ к KDC. Это перемещает рабочую нагрузку с сервера на клиент, что обеспечивает более производительные серверы.
Использование статического отслеживания удостоверений
Если используется безопасность, попробуйте использовать статическое отслеживание удостоверений. Статическое отслеживание удостоверений дешевле с точки зрения использования ресурсов, чем динамическое отслеживание удостоверений. Если удостоверение клиента изменяется и сервер не должен знать об этом, используйте динамическое отслеживание вместо создания другого дескриптора привязки для каждого удостоверения. Но если удостоверение совпадает, убедитесь, что RPC знает об этом факте, чтобы RPC каждый раз не проверял наличие измененного удостоверения.
Использование функции RpcGetAuthorizationContextForClient
Если требуется проверка доступ в Windows XP, используйте функцию RpcGetAuthorizationContextForClient. Полученные контексты Authz обеспечивают очень быстрые проверки доступа, которые эффективно кэшируются во время выполнения RPC.
Не изменяйте маркер, если это не требуется
Если используется динамическое отслеживание удостоверений, не изменяйте маркер потока или процесса без крайней необходимости. Даже если он изменен на параметры, которые он имел ранее, маркер часто достаточно отличается от системы безопасности, чтобы инициировать создание нового контекста безопасности.
Рассмотрите возможность сериализации в смешанном режиме для дескрипторов контекста
По умолчанию для дескриптора контекста используется режим сериализации (монопольный). Рассмотрите возможность выполнения всех вызовов, которые не изменяют состояние дескриптора контекста в режиме общей сериализации. Дополнительные сведения см. в разделе RpcSsContextLockExclusive .