Рекомендации по приложению службы имен
При разработке распределенного приложения необходимо предоставить пользователям приложения метод для указания имени, в котором они могут зарегистрировать приложение в базе данных службы имен. Этот метод может состоять из файла данных, входных данных командной строки или диалогового окна.
Хотя архитектура службы имен RPC поддерживает различные методы для организации записей сервера приложения, он оптимизирован для поиска. В результате частые обновления могут препятствовать производительности как службы имен, так и приложения. Чтобы избежать ненужных операций экспорта данных, выберите структуру, которая позволяет серверу определить, находится ли ее информация в базе данных службы имен. Кроме того, каждый экземпляр сервера должен экспортироваться в собственное имя записи. В противном случае экземпляру будет трудно изменить поддерживаемые UUID или последовательности протоколов, не беспокоя информацию о другом экземпляре.
Следующий метод избегает этих ошибок и обеспечивает хорошую производительность независимо от того, какую службу имен использует ваша сеть.
Для начала создайте приложение таким образом, чтобы при первом запуске экземпляра сервера он выбрал уникальное имя входа сервера и сохраняет это имя в реестре вместе с другими сведениями о конфигурации приложения. Затем экспортируйте маркеры привязки и идентификаторы UUID объектов, если таковые имеются, в запись службы имен.
Последующие вызовы экземпляра сервера должны проверить, присутствует ли запись службы имен и содержит правильный набор определяемых пользователем объектов и дескрипторов привязки. Недостающая запись может означать, что администратор удалил его или что сбой питания привел к потере сведений о службе имен. Важно проверить правильность дескрипторов привязки в записи; Если администратор добавляет поддержку TCP/IP на компьютер, например серверы RPC будут прослушивать последовательность протоколов при вызове RpcServerUseAllProtseqs. Однако если сервер не обновляет запись службы имен, клиенты не будут проинформированы о поддержке TCP.
При импорте клиента в качестве имени записи следует указать NULL. Указание null приводит к поиску интерфейса во всех записях службы имен в домене или рабочей группе клиентского компьютера, что приводит к поиску сведений для каждого экземпляра.
При использовании UUID-объектов для представления известных объектов, таких как принтеры, можно использовать вариант этого метода. Вместо экспорта привязок в одну запись создайте приложение таким образом, чтобы каждый экземпляр создал запись для каждого поддерживаемого объекта, например "/.:/printers/Laser1" и "/./printers/Laser2". Затем экспортируйте маркеры привязки сервера на каждую запись сервера, а также объект UUID, соответствующий этой записи.
В этом случае клиент может искать ресурс по имени, импортируя из соответствующей записи сервера; Для этого не требуется объект UUID ресурса. Если у него есть идентификатор ресурса UUID, но не имя, он может импортироваться из записи null.