Загружаемые модули NetWare - открытые модули для открытой системы


NLM И NETWARE: ОБСЛУЖИВАНИЕ В ПОРЯДКЕ ЖИВОЙ ОЧЕРЕДИ
ПУТЕВОДНАЯ НИТЬ
ЗАГРУЖАЕМЫЕ МОДУЛИ NETWARE МОГУТ ПРЕВРАТИТЬ ОБЫЧНЫЙ СЕРВЕР В WEB-СЕРВЕР
Internet: заводи, поехали

Открытые технологии помогают строить системы в соответствии с требованиями пользователя. Классическим примером успешной открытой технологии можно считать предложенный корпорацией IBM стандарт персональных компьютеров: эта технология, во многом благодаря именно своей открытости, кардинальным образом изменила современный мир. По существу, открытая технология представляет собой некий опубликованный стандарт, использование которого гарантирует совместимость изделия со всеми другими изделиями, изготовленными в соответствии с этим стандартом.

С точки зрения программного обеспечения, открытость технологии предполагает некоторый набор правил построения программы, соблюдение которых позволяет разработчику быть уверенным в том, что написанная программа окажется совместимой со всеми остальными программами, написанными по тем же правилам. Для операционной системы применение открытого стандарта фактически означает, что набор функций операционной системы может меняться в соответствии с нуждами конкретного пользователя. Кроме того, в открытую операционную систему легко интегрируются новые аппаратные средства - достаточно лишь написать небольшой модуль, отвечающий за работу с новым устройством.

Именно по такому принципу построена операционная система NetWare: она состоит из относительно небольшого ядра, выполняющего весьма ограниченное число функций, и так называемых загружаемых модулей (NetWare loadable module - NLM), которые, собственно, и реализуют функции операционной системы. На данный момент написано множество таких модулей - только в стандартный комплект поставки NetWare 4.0 входит около тысячи NLM. Помимо этого, производители оборудования разрабатывают NLM, как правило, для своих изделий. В результате изделия становятся полноправным системным ресурсом и к ним можно обращаться наравне с прочими ресурсами.

NLM И NETWARE: ОБСЛУЖИВАНИЕ В ПОРЯДКЕ ЖИВОЙ ОЧЕРЕДИ

Все операционные системы, предназначенные для использования на микрокомпьютерах, можно разделить на две большие группы - системы общего назначения и специализированные системы. По существу, любая операционная система представляет собой интерфейс между аппаратным ресурсом компьютера и прикладными программами - разница состоит в том, каким образом распределены обязанности между системой и приложениями.

Picture 1 (1x1)

Рисунок 1.
Структура очередей нитей в операционной системе NetWare.

Операционная система общего назначения не предполагает, что приложения "знают" что-либо о ее внутренней структуре и о других приложениях, работающих в системе. В задачу операционной системы общего назначения входит распределение ресурсов компьютера (например памяти и центрального процессора) между приложениями. Разработчик приложения может не задумываться о взаимодействии с другими приложениями - это прерогатива самой операционной системы. Таким образом, в операционных системах общего назначения используется довольно жесткое "разграничение полномочий" между системой и приложениями, что, с одной стороны, обеспечивает высокую устойчивость системы, а с другой - приводит к некоторым ограничениям гибкости приложений и снижает (иногда существенно) эффективность использования аппаратного ресурса.

Операционная система NetWare - это специализированная операционная система, ориентированная в первую очередь на максимально эффективное использование аппаратных ресурсов операционной среды. Исходя из того, что системные программисты, как правило, имеют довольно высокую квалификацию, разработчики NetWare передали часть полномочий системы общего назначения приложениям несколько специфического характера. Такими приложениями, составляющими по существу часть операционной системы в обычном понимании этого термина, и являются загружаемые модули NetWare.

Одно из основных отличий NetWare от операционных систем общего назначения состоит в том, что NetWare является так называемой невытесняющей операционной системой. Это означает, что операционная система не занимается разделением времени центрального процессора между приложениями. Вытесняющая операционная система следит за тем, когда следует выгрузить текущее приложение и загрузить из очереди следующее. В невытесняющей системе приложения сами передают управление друг другу. Если в NLM не предусмотрено, что модуль время от времени сам отказывается от использования центрального процессора, то такой модуль сможет работать бесконечно долго, а все остальные модули вообще не будут исполняться. Отсутствие вытеснения позволяет весьма существенно повысить эффективность системы, поскольку при таком подходе время процессора не расходуется на управление очередью на исполнение, слежение за приоритетами и так далее.

ПУТЕВОДНАЯ НИТЬ

Основная задача NLM - обслуживание запросов рабочих станций на доступ к вычислительным ресурсам сервера и другим системным ресурсам. NLM обеспечивают прием и декодировку запроса, а также идентификацию рабочей станции, с которой поступил запрос. Непосредственный доступ к ресурсам системы осуществляется через ядро NetWare. А NLM, как уже было сказано выше, обеспечивают правильное и эффективное распределение времени центрального процессора между запросами рабочих станций. Для этого в NetWare используется механизм нитей. Напомним, что нитью называется любая задача или процесс, выполняемый центральным процессором.

Picture 2 (1x1)

Рисунок 2.
Структура очереди WorkToDoList для рабочей нити операционной системы NetWare (начиная от версии 4.0 и выше).

Каждый запрос рабочей станции порождает отдельную нить. Поскольку запросы поступают на сервер случайным образом, может оказаться, что к одному и тому же NLM обратились несколько рабочих станций. Чтобы обслужить все поступившие запросы, NLM должен породить несколько нитей. Такие NLM называются многонитевыми, в отличие от однонитевых NLM, способных породить только одну нить. Реально используемые NLM, как правило, многонитевые.

Активные нити помещаются в одну из трех очередей, организуемых NetWare: RunList, DelayWork-ToDoList и LowPriority. Подчеркнем еще раз, что операционная система не занимается передачей управления от одной нити к другой в пределах очереди, задача ядра NetWare - только отслеживать порядок следования нитей в очередях. Помимо очередей нитей в NetWare версии 4.0 и выше есть еще одна очередь - очередь заданий WorkToDoList. Ниже мы рассмотрим все четыре очереди и опишем, как осуществляется распределение времени центрального процессора между нитями.

Во-первых, сама операционная система (начиная от версии NetWare 4.0 и выше) порождает так называемую рабочую нить, которая может принимать на исполнение процедуры, требующие обращения к ресурсам вычислительной системы. Эта нить обладает более высоким приоритетом, нежели все остальные нити. В очередь WorkToDoList обычно помещаются короткие задания, требующие быстрого исполнения. Рабочая нить может исполнить определенное число заданий из очереди WorkToDoList, после чего управление передается обычным нитям из очереди RunList, а сама рабочая нить помещается в конец очереди RunList.

RunList представляет собою очередь обычных нитей. Вновь порождаемая нить помещается в конец этой очереди. Первая нить из очереди получает управление центральным процессором и исполняется до тех пор, пока сама не "отдаст" процессор следующей нити из очереди. "Отдать" процессор нить может одним из следующих способов.

· Вызвав процедуру ThreadSwitch, в результате чего нить перейдет в конец очереди RunList.

· Вызвав процедуру ThreadSwitch-WithDelay, которая поместит нить в очередь DelayWorkToDoList.

· Вызвав процедуру Thread-SwitchLowPriority, которая поместит нить в конец очереди LowPriority.

Чем отличается очередь RunList от очереди WorkToDoList? В очереди RunList размещаются собственно нити, а в очереди WorkToDoList - отдельные задания, передаваемые на исполнение рабочей нити. Нити из RunList порождаются запросами пользователей. Они обеспечивают их выполнение и прекращают свое существование после отправки ответа на рабочую станцию. В отличие от нитей, задания для рабочей нити представляют собой короткие процедуры, которые необходимо выполнить быстро. Сама рабочая нить порождается операционной системой, и ей могут быть переданы на исполнение задания, исходящие от совершенно разных запросов.

Очередь DelayWorkToDoList - это очередь обычных нитей, которые, освободив процессор, должны попасть в конец RunList не немедленно, а только после того, как центральный процессор "сменит хозяина" определенное число раз (число смен определяется операционной системой). Использование такой очереди - удобный способ несколько задержать исполнение нити либо просто ожидая наступления какого-нибудь события, либо с целью дать процессору возможность исполнять другие нити. Помимо этого способа существует и другой - поместить нить в очередь LowPriority. Нити из данной очереди исполняются лишь тогда, когда пусты очереди WorkToDoList, RunList и DelayWorkToDoList. В очередь LowPriority обычно помещаются нити, отвечающие за выполнение фоновых заданий, например за резервное копирование.

Другой способ освободить процессор - перевести нить в неактивное состояние с использованием механизма локальных семафоров. Данный механизм обеспечивает координацию работы разных нитей. Нить может вызвать процедуру WaitOnLocal-Semaphore, которая приостановит выполнение нити до наступления определенного события, о чем приостановленную нить проинформирует другая нить, вызвав процедуру Signal-LocalSemaphore с соответствующим параметром. Подчеркнем, что нить, ожидающая семафора, не "стоит" ни в одной из очередей. Поэтому не исключено, что она вообще никогда не получит управление - если событие, которого она ждет, так и не наступит. В этом отличие такой нити от нити, находящейся в одной из очередей, - до второй управление рано или поздно обязательно дойдет.

ДОВЕРЯЙ, НО ПРОВЕРЯЙ

За эффективность невытесняющей операционной системы приходится расплачиваться отсутствием защиты от, скажем так, неквалифицированного разработчика. При последовательном соблюдении принципа невытеснения некорректное приложение может полностью монополизировать процессор, остановив выполнение всех других приложений. Novell всячески старается облегчить труд разработчиков NLM, публикуя подробные правила и рекомендации. В частности, существует подробный свод правил тестирования новых приложений под названием "YES, it runs with NetWare". Одно из требований к качественному NLM состоит, например, в том, чтобы ни одна нить не захватывала процессор на срок, превышающий 10 мс. Аккуратное соблюдение всех правил разработки обеспечивает правильное распределение времени центрального процесора между всеми приложениями.

Следует также отметить, что в определенных ситуациях вытеснение приложений все же происходит. В частности, нить "отлучается" от центрального процессора при выполнении операций ввода/вывода без кэширования или при обращении к сетевым коммуникациям. Кроме того, управление теряется в ходе выполнения многих стандартных библиотечных подпрограмм, используемых при написании NLM. В целом можно сказать, что при работе с NetWare последних версий от разработчика не требуется чрезмерной осторожности - достаточно лишь соблюдать простые правила разработки.

Кроме того, следует отметить, что невытесняющий характер NetWare буквально подталкивает потенциального злоумышленника к написанию NLM, который бы полностью блокировал работу сети, не передавая управление другим NLM и не обращаясь к внешним ресурсам. Защититься от злоумышленников такого рода в NetWare позволяет команда SECURE CONSOLE. После выполнения этой команды загрузка NLM может быть осуществлена только из каталога SYS:SYSTEM, что ограничивает возможности злоумышленника.

NLM В ДЕЙСТВИИ

Использование NLM позволяет обеспечить всем рабочим станциям стандартный доступ к системным ресурсам. При этом вновь появляющиеся ресурсы могут как бы "встраиваться" в систему, становясь ее неотъемлемой частью. Причем NLM выступают в роли интерфейса между ядром операционной системы и прикладными программами на рабочих станциях. Этим, однако, дело не ограничивается. Поскольку обращение к NLM происходит "по дороге" к ядру операционной системы, на NLM могут быть возложены различные служебные функции, например слежение за трафиком или защита от вирусов. Кроме того, NLM могут выполнять различные коммуникационные задачи, например маршрутизацию или связь с Internet. Чуть позже мы познакомим вас с использованием технологии NLM в различных программных продуктах, которые можно рассматривать как надстройку над NetWare, существенно расширяющую возможности операционной системы. Ниже будут рассмотрены несколько примеров применения NLM для решения конкретных прикладных задач. Данный обзор не претендует на полноту: задача его в другом - попытаться проиллюстрировать на конкретных примерах, каким образом проявляются особенности технологии NLM в тех или иных практических ситуациях.

ДОСТУП К РЕСУРСАМ

Наиболее очевидное применение технологии NLM - равноправное распределение имеющихся в системе аппаратных ресурсов между всеми пользователями. В качестве примера рассмотрим, как используется описываемая технология для работы с устройствами хранения информации на базе CD-ROM. NetWare обеспечивает только выполнение простейших операций с CD-ROM, кроме того, в данной системе поддерживаются лишь наиболее современные SCSI-адаптеры (соответствующие стандарту ASPI). Недостатки стандартных средств NetWare обусловили большую популярность средств работы с CD-ROM от сторонних фирм. В настоящее время на этом рынке можно найти несколько десятков продуктов; помимо средств, осуществляющих доступ к CD-ROM на базе NLM, есть также и самостоятельные CD-ROM-серверы, которые могут подключаться к сети в любом месте. Такое решение, однако, представляется выгодным только для крупных сетей, в небольших же системах разумнее использовать CD-ROM-устройства, подключаемые непосредственно к файловому серверу. Именно для таких устройств и требуется NLM.

На аппаратном уровне устройства для считывания с CD-ROM представляют собой отдельные модули, соединяемые с файловым сервером по шине SCSI. В относительно небольших системах используются устройства (речь здесь идет об автономных устройствах - совсем маленькие сети могут довольствоваться одним или несколькими устройствами для считывания c CD-ROM, встроенными в файловый сервер), предполагающие ручную смену дисков и содержащие от четырех до семи дисководов. Такие устройства можно применять, когда общее число используемых дисков не слишком велико. Для более масштабных библиотек CD-ROM используются устройства, обеспечивающие автоматическую замену дисков. Данное устройство содержит один или несколько дисководов и довольно большую библиотеку дисков (до нескольких сотен). Выбранный пользователем диск помещается в дисковод, после чего с него можно считывать информацию.

В качестве примера продукта на основе NLM можно привести пакет SCSI Shuttle, предлагаемый компанией TAC Systems. Данный продукт может работать с любым количеством дисководов; он поддерживает до 63 томов NetWare на CD-ROM (в SCSI Shuttle несколько дисководов могут отображаться в один том, причем отдельные дисководы представляются как подкаталоги этого тома). К дисководам можно обращаться с клиентских станций DOS, Windows, Windows 95 и Macintosh. Поскольку CD-ROM отображаются в тома NetWare, никакого дополнительного программного обеспечения на клиентских станциях не требуется. Некоторым преимуществом данного продукта перед "родным" загружаемым модулем NetWare является то, что здесь реализован интерфейс для управления устройством на основе меню (в то время как в стандартном модуле NetWare управление устройством осуществляется при помощи командной строки).

Существенное преимущество разделения CD-ROM на базе NLM - во-первых, высокая эффективность доступа к данным, а во-вторых, тот факт, что установка какого-либо дополнительного программного обеспечения на клиентских станциях не требуется. Оба этих преимущества очевидны, если принимать в расчет вышеописанные свойства NLM. Высокая эффективность обусловлена невытесняющим характером NetWare, а полная прозрачность - тем, что NLM фактически можно рассматривать как часть операционной системы, и поэтому обращение к CD-ROM ничем не отличается от обращения к любым другим сетевым ресурсам.

NLM НА СВЯЗИ

Другой важный ресурс, к которому часто обращаются пользователи, - различные средства коммуникации и обмена сообщениями. Мы рассмотрим следующие примеры: применение NLM для маршрутизации сообщений в глобальных сетях, NLM для компьютерной телефонии и NLM для доступа к Internet.

Начнем с маршрутизации. Идея применить NLM для маршрутизации проста и понятна. Вместо того чтобы приобретать дорогостоящее специализированное устройство, достаточно написать программу, способную выполнять все необходимые действия, и обеспечить выполнение этой программы на сетевом сервере. В результате достигается существенная экономия аппаратного ресурса и несколько упрощается структура сети. Система разделения времени в NetWare обеспечит эффективную производительность программного маршрутизатора, достаточную для передачи информации по линиям связи в глобальных сетях.

Примером удачной реализации программного маршрутизатора в NetWare стала собственная разработка Novell под названием MultiProtocol Router (MPR). Этот продукт представляет собой просто загружаемый модуль, который можно устанавливать на любом сервере NetWare. Обращение к маршрутизатору при этом выглядит как простой запрос на обслуживание от рабочей станции, с логической точки зрения, не слишком отличающийся от, скажем, запроса на доступ к файлу. MPR был разработан уже довольно давно, однако прежние его версии имели целый ряд недостатков. Недавно появились две новые модификации MPR, NetWare BranchLink Router и NetWare Enterprise Router, различающиеся только масштабом: BranchLink Router может работать лишь с двумя портами WAN, в то время как Enterprise Router поддерживает до 16 портов. Наборы функций обеих модификаций абсолютно идентичны. Новая версия поддерживает использование самых современных протоколов - OSPF (Open Shortest Path First) и NLSP (NetWare Link Service Protocol). Популярность протокола OSPF весьма благоприятно влияет на совместимость данного маршрутизатора с маршрутизаторами других производителей. Что касается NLSP, то работа с этим протоколом повышает устойчивость работы сети. Другой важной функцией нового NLM-маршрутизатора является возможность работы в режиме dial-on-demand. При работе в данном режиме линия связи устанавливается только при необходимости. Возможность набрать телефонный номер по требованию обеспечивает большую гибкость связи и позволяет экономить средства за счет сокращения времени фактического использования телефонной линии. Режим dial-on-demand не поддерживался маршрутизаторами предыдущих версий. Далее, новая версия MPR поддерживает фильтрацию пакетов. Этот пример свидетельствует, насколько существенно использование NLM может повысить возможности уже установленного оборудования, не меняя при этом общей структуры сети.

Другим примером использования NLM для работы с линиями телекоммуникаций служит модуль NetWare Telephony Services, обеспечивающий пользователям доступ к функциям компьютерной телефонии. Модуль отвечает за обслуживание запросов пользователей на доступ к ресурсам местной АТС. Благодаря использованию этого программного обеспечения пользователь может набирать номер любого необходимого ему абонента, просто выбрав соответствующую запись из базы данных и щелкнув мышью на кнопке "Dial" на экране своей рабочей станции. Переадресовать звонок другому сотруднику, можно также нажав соответствующую кнопку на экране компьютера (при этом на экране высвечивается список сотрудников, и пользователь может выбрать наиболее подходящую кандидатуру). Примерно таким же способом можно организовать телефонную конференцию. Телефонный NLM обеспечивает еще целый ряд других функций. Не вдаваясь в подробности, отметим следующее. Пример этого NLM характеризует, как работает упомянутый выше механизм очередей: запросив запись из базы данных, модуль должен на некоторое время перейти в неактивное состояние, чтобы затем передать всю необходимую информацию местной АТС. При поступлении входящего звонка, наоборот, модуль, отвечающий за организацию телефонного соединения, может обратиться к базе данных о клиентах, запросить информацию о звонящем абоненте, перейти в неактивное состояние на время поиска информации и только после выполнения запроса к базе данных переключить звонок на сотрудника, предоставив ему одновременно всю необходимую информацию об абоненте.

Что касается NLM для доступа к Internet, то материалы на эту тему в журнале "LAN Magazine/Русское издание" недавно публиковались. Идея здесь та же, что и при маршрутизации - механизм NLM великолепно приспособлен для осуществления доступа к системным ресурсам, а ведь Internet - не что иное, как своеобразный внешний ресурс. Дело, однако, осложняется тем, что NLM хороши для доступа к файловой системе, а работа с Internet предполагает не только выполнение запросов пользователя, но и динамическое обращение со страницами Web. При этом сервер Web запускает независимый процесс, а с решением этой задачи NLM справляется не так хорошо. Тем не менее компании GLACI (Great Lake Area Commercial Internet) удалось обойти это препятствие, предусмотрев, что NLM используется только при работе с запросами пользователя, а для динамической работы со страницами применяется внешний сценарий Perl. В будущем GLACI собирается встроить запуск сценария непосредственно в NLM.

СВОЙ ГЛАЗОК - СМОТРОК

На NLM можно смотреть так же, как на некий код, постоянно находящийся в загруженном состоянии на сервере. А стало быть, немедленно напрашивается вывод, что механизм NLM удобно использовать для выполнения различных контрольных функций, например для сбора статистики (в частности в качестве агентов SNMP или RMON) и для предотвращения распространения вирусов по сети. В качестве примера такого применения механизма NLM рассмотрим ряд программных продуктов, выполняющих функции управления и контроля.

Некоторые продукты, например BrightWorks компании McAfee, обеспечивают лишь слежение за использованием ресурсов сервера и вызовами различных приложений. Другие - здесь в качестве примера можно привести продукт Tuxedo самой Novell - обеспечивают мониторинг сетевого трафика и отслеживают различные события в сети. Tuxedo позволяет администратору устанавливать признаки аварийных ситуаций в сети, при возникновении которых должны генерироваться предупреждающие сигналы. Кроме того, сетевой администратор может определять списки пользователей, которым разрешен доступ к тем или иным системным ресурсам.

Еще один пример управляющей программы на базе NLM - программа VISTA компании Palindrome. Она следит за ходом резервного копирования в дистанционном режиме. VISTA генерирует отчеты о копировании и способна посылать сетевому администратору предупреждающие сигналы о возникновении ошибок, сбоев или других ситуаций, требующих вмешательства человека.

Последнее, о чем необходимо упомянуть в связи с контрольными функциями NLM, касается защиты от вирусов. На рынке существует целый ряд продуктов, обеспечивающих такую защиту. В качестве примера можно привести продукт компании Intel, который так и называется - Virus Protect. Он обеспечивает, во-первых, контекстный поиск вирусов во всех файлах, проходящих через сервер, при этом практически не замедляя их передачи; во-вторых, вычисляет контрольные суммы файлов пользователей (в ночное время или по расписанию, установленному пользователем) и посылает пользователю предупреждения об их изменении. Если окажется, что файл действительно заражен, пользователь может принять соответствующие меры. Совместное использование двух этих методов позволяет, с одной стороны, быстро проверять все файлы на наличие известных вирусов, а с другой - обнаруживать неизвестные ранее вирусы.

ЧТОБЫ НЕ ТЕРЯТЬ ВРЕМЯ ЗРЯ...

Еще одно важное применение технологии NLM в сетевой операционной среде - выполнение резервного копирования. Резервное копирование - вещь не только в высшей степени необходимая (особенно для критически важных приложений), но и, увы, весьма обременительная, требующая больших затрат времени. Именно поэтому велик интерес к загружаемым модулям, обеспечивающим автоматическое резервное копирование либо по расписанию, либо когда сеть свободна от выполнения других задач.

Отметим, что, с точки зрения механизма NLM, данная задача отличается от всех прочих тем, что задания, необходимые для ее выполнения, не активируются по запросу пользователя и не находятся в активном состоянии постоянно (как мы это видели для предыдущих приложений). Напротив, задания резервного копирования активируются либо по времени, либо находятся в очереди LowPriority (о чем уже говорилось выше). В последнем случае операция резервного копирования начинается, когда сервер полностью свободен от работы.

ОКОНЧАНИЕ ОБСЛУЖИВАНИЯ

Данная статья есть попытка разобраться, насколько гибко и эффективно разработчик может использовать механизм NLM для решения стоящих перед пользователем задач. Применение NLM позволяет скрыть от пользователя все детали доступа к различным сетевым устройствам; сетевые же администраторы (которые в данном случае тоже могут рассматриваться как пользователи) получают возможность избавиться от большого количества рутинной работы, избежав при этом серьезных капиталовложений. Вот почему механизм NLM, несмотря на относительную сложность его реализации, используется во многих сетевых программных продуктах.


Александр Крейнес - научный сотрудник Института кристаллографии РАН. С ним можно связаться по электронной почте: kreines@cti.ru.

ЗАГРУЖАЕМЫЕ МОДУЛИ NETWARE МОГУТ ПРЕВРАТИТЬ ОБЫЧНЫЙ СЕРВЕР В WEB-СЕРВЕР

Internet: заводи, поехали

Идея доступа к всемирной сети Internet через обычный сервер NetWare кажется привлекательной для очень многих организаций. Действительно, сеть NetWare встречается довольно часто, и было бы очень хорошо найти простой способ использовать серверы этой сети для доступа к завоевывающей все большую популярность "всемирной паутине". Казалось бы, проблему можно решить, просто используя для доступа к сети NLM, ведь данный механизм прекрасно подходит для доступа к внешним ресурсам, а всемирную сеть можно воспринимать как один большой "внешний ресурс".

Идея эта начинает находить отклик у многих производителей программного обеспечения. На сегодняшний день, насколько нам известно, на рынке имеются три продукта, способных превратить сервер NetWare в сервер Web.

В первую очередь, следует упомянуть "родную" разработку-набор NLM для доступа к Internet, предлагаемый компанией Novell. Данный набор может быть установлен на сервере NetWare 4.1. По утверждению Novell, этот продукт позволяет превратить сервер NetWare в сервер Web в течение 10 минут. Набор загружаемых модулей обеспечивает следующие функции: защиту данных, контроль за доступом пользователей к сети, публикацию документов в сети с использованием средства подготовки документов WordPerfect, доступ к программе просмотра Netscape Navigator, а также работу со сценариями Perl и Basic.

Помимо Novell разработкой набора NLM для связи с Internet занялась и компания Process Software. Ее продукт, имеющий название Purveyor, обеспечивает удобный диалог с пользователями на базе такого привычного для всех графического интерфейса, как Windows. Purveyor обеспечивает полную совместимость со всеми протоколами World Wide Web, в частности, самыми последними версиями Hypertext Transport Protocol (HTTP), а также HTML. Purveyor также поддерживает работу с высокопроизводительным Binary Gateway Interface (BGI), в результате чего пользователи могут работать в динамическом режиме, создавая короткие программы на Си. Кроме того, BGI обеспечивает легкий доступ к процедуре общего пользования Perl.nlm. В комплект поставки Purveyor входят еще и шаблоны, используя которые, пользователь может быстро разрабатывать собственные страницы Web.

Нельзя также не упомянуть продукт, разработанный компанией GLACI (Great Lake Area Commercial Internet). Для доступа к информации, не являющейся просто текстовым документом, в данном продукте используется механизм Common Gateway Interface (CGI). Он позволяет разрабатывать программы, именуемые сценариями, благодаря которым пользователь может генерировать текстовые документы непосредственно на сервере, получая всю необходимую для этого информацию по сети. В ходе выполнения сценария сервер может, в частности, обращаться с запросами к базам данных. У пользователя появляется возможность писать сценарии на специально разработанном для этой цели языке, внешне напоминающем язык Basic.