Програмна модель створення мігруючих програм базується на засобах, які доступні в мові розподіленого сценаріюObliq.
В Obliq, довільнідані, в тому числі й процедури (код програми), можуть бути передані по мережі. Одиниця данихObliq може бути представлена графом, при чому деякі вершини є змінними (це означає, що вони мають деякий стан, який може бути змінений присвоєнням), а інші вершининезмінні (означає, що вони не можуть бути змінені). Наприклад, текст процедури програми є незмінним і не може бути змінений, в той час, як поля в деякому об'єкті змінні через те, що цим полям взагалі можна присвоїти нові значення.
Коли графданих передається на виконання до віддаленої процедури, або повертається від неї, будемо казати, що він передається по мережі. Зупинимось на передачі даних трохи детальніше.
Починаючись від даного кореня, графданих копіюється від початкового сайту до машини призначення, при цьому змінні вершини не копіюються; в їхній позиції вписується посилання на місце в мережі, де вони насправді знаходяться. Наприклад, об'єкт (одна з основних структур даних) в Obliq ніколи не копіюється по мережі, замість цього на нього передається вказівник. На цей об'єкт потім можна віддалено послатися через цей самий мережевий вказівник, наприклад, віддалено викликати один з методів.
Процедури Obliq, подібно іншим даним, мають значення, яким можна маніпулювати і передавати. Значення процедури зветься припиненням, воно складається з тексту процедури та таблицізначеньдля глобальних змінних цієї процедури.
На відміну від механізму передачі даних по мережі, в Obliq існує примітив, який дозволяє дозволяє передати весь граф даних, як змінних, так і незмінних. Це необхідно при переміщені всього інтерфейсу користувача на інший хост. В графі даних можуть міститися дані про положення та параметри всіх вікон користувацького інтерфейсу. Після одержання такої копії графа даних, на машині, куди мігрує програма, проінтерпретувавши цей граф можна миттєво відновити зовнішній вигляд інтерфейсу користувача, “яким його залишили”.
Агент в Obliq– це такий програмний продукт, яке може “стрибнути”по мережі з одного комп’ютера на інший.
Портфель(Suitcase) – це ті дані, які агентпереносить із собою при міграції з сайту на сайт. В ньому міститься “довгострокова” пам'ять агента. Це може бути список машин, які вже були відвідані, завдання, які треба виконати на кожному комп'ютері, і результати виконання цих завдань.
Бріфінг(Briefing)- дані, які агентотримує на кожній машині при вході. Може включати порадудляагента (наприклад, "дуже зайнятий тепер, спробуйте піти на інший сайт"), і будь-які дані, які описують цей сайт, як то локальна файлова система і наявні бази даних.
Серверагента(Agent Server) - для даного сайта це програма, яка приймаєкод агента по мережі, виконує його і забезпечує агента локальними даними.
Командастрибка(Hop instruction) - використовується агентами, щоб пересунутися з одної машини до наступної. Ця команда має, як параметри, серверагента, кодагента, і його Suitcase. Агент і Suitcaseвідсилаються до сервераагентадля виконання.
Нарешті, агент – цевизначений користувачем код, Suitcase та Briefcase. Всі потребиагентів в даних повинні бути задоволені тим, що знаходиться в чемодані або в параметрах Бріфінга. На кожному сайті, агент перевіряє Briefcase і чемодан, щоб з’ясувати свою наступну поведінку. Після виконання деяких завдань на одному сайті, звичайно виконується командастрибка для пересунення до наступної машини.
Якщо агент має інтерфейс користувача, то перед стрибком виконується копіювання відповідного графу даних, зберігається в чемодані і відновлюється на новому місці.
Як вже було сказано, агент визначається кодом, Suitcase’ом та Briefcase’ом:Suitcaseмандрує з агентом від сайту до сайту, в той час, як свіжий Briefcase забезпечується в кожному новому місці сервером агента. Агенти пересуваються від машини до машини за допомогою виконання командистрибка:
let recagent =
proc(siutcase, briefcase)
(* працювати на поточному сайті *)
(* вирішити, куди піти далі *)
hop(nextSite, agent, siutcase);
(* виконати agentнаnextSiteз siutcase*)
end;
Як бачимо, агент являє собою процедуру, яка має два параметри. Siutcase і Briefcase – це довільнідані, в якості яких зручно використовувати об'єкти. Кожний агент відповідає за зміст чемодана, і кожний серверагента відповідає за зміст briefcase’а. Сервери агентів є простими обчислювальнимипрограмами-серверами, і їх головним завданням є виконання агентів і забезпечення їх відповідними інструкціями. Ще однією функцією сервера агента може бути перевірка “вірчих грамот” агента, тобто його ідентифікація.
Visual Obliq - це середовищедля швидкого створення програм з інтерфейсом користувача. Воно складається з:
• Інтерактивного конструктора, який дозволяє швидко створити і запрограмувати інтерфейс користувача, при чому генераціякоду на Obliq відбувається автоматично.
• Системи run-time підтримки, яка складається з бібліотек і мережевих сервісів.
Примусити програму мігрувати до нового сайту можна за допомогою виконання командипереміщення. Для переміщення програми на інший сайт треба виконати одну з наступних команд:
• MigrateTo(Host)
• MigrateToServer(ServerName, Host)
Перша команда переміщує програму до сервераагента по замовчанню під назвою VOMigrate, на машину з назвою Host. VOMigrate продовжує виконання програми з того місця, де воно було перерване, і не забезпечує агента новими інструкціями. Таке переміщення є достатнім длянайпростішогопереміщенняпрограми.
Друга команда примушує агента мігрувати до визначеного сервераагента під назвою ServerNarne, на машині з назвою Host. У обох випадкахсерверагента запускається користувачем, який отримавпереміщеного агента.
Командапереміщення повертає значення true в тому випадку,якщо агент успішно перемістився. В іншому випадку повертається значення false. В разі успішного мігрування виконання локальногоекземпляруагентазавершується одразу після надходження повідомлення, інтерфейс користувача і стан виконання програми знищується. У випадку невдалої спроби переміщення, агент продовжує виконуватися неначе нічого не сталося.
Серверагента - це розширений інтерпретатор Visual Obliq, який включено в середовище розробки мобільних агентів.
Визначені користувачем сервериагента створюються за допомогою розширення сервераагента по умовчанню, щоб забезпечити агента специфічними інструкціями, наприклад, здійснити контроль доступу. Щоб бути корисним, серверуагента потрібно мати дружній до користувача інтерфейс, щоб допомогти користувачеві відслідковувати і регулювати активність міграційних програм. Наприклад, користувач міг би зумовити: "Я дозволяю працювати на цій машині тільки програмам типу X"; "Я повернусь в час Y". Визначений користувачем сервер агентів припускає ідентифікувати прибулих агентів, а також здійснювати шифрування.
Мобільні агенти є полемдослідження, що дедалі стає ширшим. Ключовими перевагами мобільних агентів є локальна взаємодія, гнучкість сервера і взаємодія реального часу. Зараз існують декілька реалізованих систем розробки і підтримки мобільних агентів. Ведуться дослідження.
1. Krishna Bharat, Luca Cardelli “Migratory Applications”
2. Todd Papaioannou “Mobil Agents: Are They Useful for Establishing a Virtual Presence in Space?”