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