роботи. Результатом є різке зростання мережевого трафіку. Мобільні агенти дозволяють пакувати можливий діалог (при віддаленому виклику процедури) і послати його до комп'ютера адресата, де взаємодія відбудеться локально. Мобільні агенти також корисні для зменшення трафіку при передачі великих обсягів даних в мережі. Дійсно, коли великі томи даних зберігаються в окремих комп'ютерах, наприклад, серверах баз даних, певну їх обробку було б зручніше виконувати там же, ніж передавати їх по мережі до машини, на якій встановлено програму обробки. Принцип тут простий: пересунути обчислення до даних скоріше, ніж дані до обчислень.
Вони долають мережеву латентність. Системам реального часу, як, наприклад, роботам в процесах виробництва, потрібно реагувати на зміни в їхніх середовищах максимально швидко. Контролювання таких систем через фабричну мережу великого розміру призводить до значної латентність, яка абсолютна неприйнятна для критичних систем реального часу. Використання в такій мережі мобільних агентів є чудовим рішенням, бо вони можуть бути послані від центрального контролера для дій у певному місці і безпосередньо виконувати його інструкції.
Вони інкапсулюють протоколи. Коли в розподіленій системі відбувається обмін даними, кожний комп'ютер має програмне забезпечення, яке реалізує протоколи, потрібні для належного кодування вихідних даних і інтерпретації вхідних. Однак, протоколи мають властивість розвиватися, а перехід на нову, більш ефективну або захищену версію протоколу є важким, іноді цілком неможливим завданням по модернізації встановленого програмного забезпечення. Як результат, часто виникає проблема з підтримкою старих версій, або проблема несумісності версій протоколів. Мобільні агенти можуть пересуватися до віддалених комп'ютерів "каналами", які базуються на власних протоколах. До речі, перехід на нову версію протоколу в мережі можна виконати за допомогою мобільних агентів, які у визначеному порядку встановлять на кожному комп’ютері нове програмне забезпечення.
Вони працюють асінхронно і автономно. Часто зовнішні мобільні пристрої (ноутбуки, мобільні телефони, автомобільні комп’ютери) залежать від дорогих або просто неякісних зв'язків з мережею. З цього випливає, що завдання, які вимагають безперервного зв’язку між мобільним зовнішнім пристроєм і деякою корпоративною мережею, певно будуть неекономними або технічно складними в реалізації. При використанні агентів такі завдання можуть бути вміщені в мобільні агенти, які після цього можуть бути послані в мережу. При встановлені зв’язку з мобільним пристроєм мобільні агенти переміщуються в його систему і функціонують незалежно від створившої їх системи, працюють асінхронно і автономно. Мобільний зовнішній пристрій може повторно з'єднатися пізніше, щоб забрати агента і дізнатися про результат його дій.
Вони адаптуються динамічно. Мобільні агенти здатні аналізувати своє програмне середовище виконання і реагувати відповідно до змін, які в ньому відбуваються. Багато мобільних агентів здатні розподілюватися між комп'ютерами в мережі таким чином, щоб підтримати оптимальну конфігурацію для розв'язання специфічної проблеми.
Вони природно різнорідні (гетерогенні). Розподілені обчислення в своїй більшості різнорідні, як з точки зору апаратних засобів, так і програмного забезпечення. Оскільки мобільні агенти є, в принципі, комп'ютер- і транспорт-незалежні, і залежать тільки від їх середовища виконання, то вони створюють оптимальні умови для безшовного інтегрування розподілених систем.
Вони стійкі до несправностей в мережі. Здатність мобільних агентів динамічно реагувати на несприятливі ситуацій і події робить легким побудову стійких до критичних ситуацій розподілених систем. Якщо комп'ютер припиняється свою роботу, то виконання агентів на цій машині зупиниться, і їм буде наданий час, щоб переміститися і продовжити роботу на іншому комп'ютері в мережі.
5. Парадигми обчислень в мережі
Досвід переконує, що мобільні агенти надають могутню однорідну парадигму для розподілених обчислень. Мобільні агенти можуть стати новим кроком в розробці розподілених систем. Зробимо короткий перегляд і порівняння трьох парадигм для реалізації розподілених обчислень: клієнт-сервер, код-на-запит (Code-on-Demand) і рухливих агентів. Зверніть увагу, що ми зробимо наголос на тому, як парадигма сприймається розробником, а не на архітектурі програмного забезпечення та обладнання.
Парадигма клієнт-сервер. В парадигмі клієнт-сервер сервер пропонує множину сервісів, які забезпечують доступ до деяких ресурсів (наприклад, баз даних). Код програми, яка відповідає за цей сервіс, знаходиться локально на сервері. Ми кажемо, що сервер має know-how. Врешті-решт, сервер безпосередньо виконує програму доступу до ресурсу, і в такий спосіб використовує процесор. Якщо клієнт зацікавлений в доступі до деякого ресурсу на сервері, він просто використовуватиме один або більше з сервісів, які забезпечуються сервером. Зверніть увагу, що клієнту потрібен деякий "інтелект", щоб визначитись, яким сервісом йому треба скористатись. Сервер має know-now, ресурси, і процесор.
До теперішнього часу, більшість розподілених систем базувалися саме на цій парадигмі. На ній побудовано велику кількість технологій як, наприклад, віддалений виклик процедури (RPC), брокери об'єктного запиту (CORBA) і виклик віддаленого методу в Java (RMI).
Відповідно до парадигми код-на-запит (Code-on-Demand), передача коду (know-how) на комп’ютер відбувається по запиту з цієї машини. Кажуть, що один комп'ютер (А) спочатку неспроможний виконати завдання через відсутність коду (know-how). Але інший комп'ютер (B) в мережі має потрібний код (програму). Як тільки А-комп’ютер отримує код, обчислення проводиться всередині А-комп’ютера. Ця машина має в розпорядженні процесор і локальні ресурси. На відміну від парадигми клієнт-сервер, А не потребує знання про віддалений комп'ютер після того, як весь необхідний код буде завантажений. Кажемо, що один комп'ютер (А) має ресурси і процесор, а інший (B) має know-how. Аплети Java є найкращим прикладом реалізації такої парадигми. Аплети завантажуються в броузер і виконуються локально.
Парадигма мобільного агента. Ключовою характеристикою парадигми мобільного агента є те, що будь-якому комп'ютеру в мережі дозволяється гнучко конфігурувати множину know-how, ресурсів і процесорів,