- •Тема 1. Розподілені системи та ресурси
- •Розвиток розподілених систем.
- •Характеристики розподілених систем.
- •Приклади розподілених систем.
- •Розвиток розподілених систем.
- •Характеристики розподілених систем.
- •Приклади розподілених систем
- •Тема 2. Розподілене пз.
- •Особливості реалізації пз для розподілених систем
- •Вимоги до розподіленого пз.
- •Шаблони рішень для розподіленого пз.
- •Особливості реалізації пз для розподілених систем
- •Вимоги до розподіленого пз.
- •Шаблони рішень для розподіленого пз.
- •Тема 3. Типові архітектури розподіленого пз.
- •Архітектура Клієнт-сервер.
- •Моделі-варіації архітектури "клієнт-сервер".
- •Архітектура p2p (Peer to Peer)
- •Архітектура Клієнт-сервер
- •Моделі-варіації архітектури "клієнт-сервер".
- •Архітектура p2p (Peer to Peer)
- •Тема 4. Api java.Net
- •Основні характеристики взаємодії розподілених додатків.
- •Протокол передачі датаграм udp
- •Використання протоколу tcp
- •Практиктичне застосування api java.Net
- •Тема 5. Технологія Java rmi
- •Визначення реалізації вилученого об'єкта для віддаленого інтерфейсу.
- •Компіляція і виконання віддаленого об'єкта та клієнта.
- •Створення розподіленої системи за допомогою rmi
- •Визначення віддаленого інтерфейсу.
- •Реалізація віддаленого інтерфейсу.
- •Визначення клієнтського додатку.
- •Компіляція та виконання сервера і клієнта.
- •Використання технології rmi для обміну об’єктами.
Тема 5. Технологія Java rmi
Створення розподіленої системи за допомогою RMI
Визначення віддаленого інтерфейсу.
Визначення реалізації вилученого об'єкта для віддаленого інтерфейсу.
Визначення клієнтського додатку.
Компіляція і виконання віддаленого об'єкта та клієнта.
Використання технології RMI для обміну об’єктами.
Створення розподіленої системи за допомогою rmi
Технологія, про яку ми говорили в попередньому розділі, припускає істотний обсяг програмування для реалізації взаємодії компонентів. Наступна розглянута технологія - RMI - дозволяє істотно спростити розробку розподілених систем.
RMI дає можливість виконувати об'єкти Java на різних комп'ютерах або в окремих процесах шляхом взаємодії їх один з одним за допомогою віддалених викликів методів. Технологія RMI заснована на більш схожу ранню технологію віддаленого виклику процедур (RPC) для процедурного програмування, розроблену в 80-х роках. RPC дозволяє процедурі викликати функцію на іншому комп'ютері настільки ж легко, як якщо б ця функція була частиною програми, що виконується на тому ж комп'ютері. RPC виконує всю роботу по організації мережевих взаємодій і маршалинга даних (тобто пакетування параметрів функцій і повернення значень для передачі їх через мережу). Але RPC не підходить для передачі і повернення об'єктів Java, тому що вона підтримує обмежений набір простих типів даних. Є й інший недолік у RPC - програмісту необхідно знати спеціальну мову визначення інтерфейсу (IDL) для опису функцій, які допускають віддалений виклик. Для усунення цих недоліків і була розроблена технологія RMI.
RMI являє собою реалізацію RPC на Java для розподілених комунікаційних взаємодій "Java-об'єкт - Java-об'єкт". Об'єкт Java реєструється для віддаленого доступу, що дає можливість клієнтам отримувати віддалене посилання на цей об'єкт - вона дозволяє використовувати цей об'єкт дистанційно. Синтаксис виклику методу ідентичний синтаксису виклику методів інших об'єктів в тій же програмі. RMI обслуговує маршалинг даних через мережу і дає можливість програмам на Java передавати закінчені об'єкти Java за допомогою механізму серіалізації об'єктів Java. У складі J2SE є інструментальні засоби створення необхідного коду для мережевих взаємодій з певних інтерфейсів програми, це означає, що RMI не вимагає від програміста знання мови IDL. Крім того, ніякого нейтрального до мови IDL інтерфейсу не потрібно, так як RMI підтримує тільки Java; достатньо власних інтерфейсів Java.
У наступних розділах буде розглянуто приклад, що використовує RMI. При цьому пропонується кілька варіантів вирішення поставленого завдання.
У прикладі виконуються чотири основні дії:
визначення віддаленого інтерфейсу з оголошеннями методів, які клієнт може викликати у віддаленого об'єкта;
визначення реалізації вилученого об'єкта для віддаленого інтерфейсу;
визначення клієнтського додатку, яке використовує віддалену посилання, щоб взаємодіяти з реалізацією інтерфейсу;
компіляція і виконання віддаленого об'єкта та клієнта.
Перший приклад
Вирішувати запропоновану задачу ми будемо поетапно - поступово нарощуючи складність наших програм, при цьому ілюструючи ті чи інші особливості застосовуваних технологій.
Для початку розглянемо зовсім просте завдання: створимо систему, функціонально складається з двох компонентів - сервера (процесингового центру) та клієнта (каса). Будемо припускати, що сервер в системі один (саме він володіє всією інформацією про зареєстрованих картах і їх балансах), а кас багато і на них проходять операції реєстрації нових карт, а також операції зміни балансу карт (відповідно - оплати та занесення готівки).
На даному етапі ми ніяк не будемо враховувати те, що зв'язок між нашими об'єктами нестійкий, - більше того, ми будемо вважати його стійким. Крім того, в цілях скорочення розмірів прикладів не будуть розглядатися питання довготривалого зберігання оброблюваної інформації - при перезапуску наша система буде "забувати" всі занесені до неї карти і їхні баланси.
