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

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

Мобильные агенты способны перемещаться с сервера на сервер по команде пользователя или в соответствии с собственным решением. Например, агент в состоянии "понять", что поиск по базе данных быстрее будет выполняться непосредственно с машины, на которой она хранится. Агент пересылает самого себя на сервер базы данных, проводит там поиск и возвращается с результатами, ускоряя работу и экономя ресурсы сети. В настоящее время появились первые опытные образцы мобильных агентов.

Область применения мобильных агентов

Мобильные агенты могут помочь в генерации анимационного ролика, при статистической обработке электронной таблицы или выполнении сортировки крупной базы данных. Агенту достаточно просто приказать переслать нужный код на авторизованный сервер агентов с достаточной вычислительной мощностью.

Мобильные агенты предоставляют также эффективный способ сбора информации по базам данных и другим ее источникам. Хотя эта задача и не отличается большой сложностью, при выполнении через intranet она создает значительно большую нагрузку на сеть, чем в том случае, когда агенты работают непосредственно на источниках информации.

Одной из сред для создания мобильных агентов служит появившийся год назад продукт IBM под названием Aglets Workbench (www.trl.ibm.co.jp./aglets). Пока еще это нестабильно работающая альфа-версия, но она уже способна продемонстрировать принцип действия агентов.

IBM называет свои мобильные агенты "аглетами", от слов "агент" и "апплет". Они написаны на языке Java, поскольку в нем есть средства для создания защиты от запуска агентов, выполняющих опасные для сервера действия.

Интерфейс IBM Java Aglet API (J-AAPI) содержит полный набор функций и служб, которыми могут пользоваться аглеты. J-AAPI представляет собой набор классов Java, содержащих методы для перемещения агентов от сервера к серверу и обеспечения связи между ними, серверами и пользователями. В комплект Aglets Workbench входят готовые аглеты и автономный сервер аглетов.

Основой архитектуры аглета является контекст, или серверная среда, в которой он выполняется. Один и тот же сервер может поддерживать несколько контекстов, каждый из которых обладает своим набором защитных ограничений.

Каждый аглет имеет постоянный идентификатор - имя. Аглеты могут работать совместно или обмениваться информацией, отправляя и принимая сообщения.

Посредник для аглетов

Для передачи сообщений между аглетами или между аглетом и пользователем существуют посредники. Они скрывают местонахождение аглета для предотвращения доступа к его коду.

В серверной среде может выполняться не только исходный аглет, но и его копия. Аглеты способны самостоятельно создавать свои копии, рассылая их по различным серверам для выполнения работы.

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

Аглеты передаются из одного контекста в другой с помощью Agent Transfer Protocol, разработанного IBM. Это платформенно-независимый протокол уровня приложения, использующий URL для определения местонахождения агентов и серверов.

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

Аглеты способны также выключаться сами или по команде сервера, который переносит их после этого из контекста в место, отведенное для хранения. После включения аглет автоматически переносится в контекст, где он работал последний раз.

Уничтожение аглета прекращает его выполнение и изымает его из текущего контекста.

Возможно, все вышесказанное на первый взгляд представляется сложным и запутанным, однако это только на первый взгляд. Создание богатой возможностями и защищенной системы для мобильных агентов требует наличия мощной архитектуры. Aglets Workbench показала, что такую систему создать действительно можно.

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