Читайте также: |
|
Опис роботиРозподілена об'єктна модель, що специфікує, яким чином проводиться виклик видалених методів, що працюють на іншій віртуальній машині Java.
При доступі до об'єктів на іншому комп'ютері можливо викликати методи цього об'єкту. Необхідно тільки доставити параметри методу на інший комп'ютер, повідомити об'єкт про необхідність виконання методу, а потім передати значення, що назад повертається. Механізм RMI дає можливість організувати виконання всіх цих операцій.
В термінах RMI об'єкт, який викликає видалений метод, називається клієнтським об'єктом, а видалений об'єкт - серверним об'єктом. Комп'ютери виступають в ролі клієнта і серверу тільки для конкретного виклику. Цілком можливо, що при виконанні наступної операції ці комп'ютери поміняються ролями, тобто сервер попереднього виклику може сам стати клієнтом при зверненні до об'єкту на іншому комп'ютері.
При виклику методу видаленого об'єкту насправді викликається звичайний метод мови Java, інкапсульований в спеціальному об'єкті-заглушці (stub), який є представником серверного об'єкту. Заглушка знаходиться на клієнтському комп'ютері, а не на сервері. Вона упаковує параметри видаленого методу в блок байтів. Кожний параметр кодується за допомогою алгоритму, що забезпечує незалежність від апаратури. Наприклад, числа завжди передаються в порядку, при якому спочатку передається старший байт (big-endian). При цьому об'єкти піддаються сериализации. Процес кодування параметрів називається розгортанням параметрів (parameter marshaling). Основна мета розгортання параметрів - перетворення їх у формат, придатний для передачі параметрів від однієї віртуальної машини до іншої.
Метод, що належить заглушці, створює блок, в який входять наступні елементи:
ідентифікатор видаленого об'єкту;
опис методу, що викликається;
розгорнені параметри.
Потім метод заглушки посилає цю інформацію серверу. Далі об'єкт-одержувач виконує для кожного виклику видаленого методу наступні дії:
згортання параметрів;
пошук викликаного об'єкту;
виклик заданого методу;
витягання і розгортання значення або виключення, що згенерувало даним методом, що повертається;
передача пакету, що складається з розгорнених даних, що повертаються, об'єкту-заглушці на клієнтському комп'ютері.
Клієнтський об'єкт-заглушка згущає значення або виключення, одержане з серверу, що повертається. Результат згортання стає значенням методу заглушки, що повертається. Якщо видалений метод повертає виключення, то об'єкт-заглушка повторить його в середовищі об'єкту-клієнта.
Для виклику видаленого методу використовується той же синтаксис, що і для звернення до локального методу. Наприклад, щоб викликати метод getQuantity() об'єкту-заглушки сеntralWarehouse центрального сховища даних на видаленому комп'ютері, буде потрібно використовувати приведений нижче код.
Звичайно, інтерфейси є абстракціями і містять тільки перелік методів. Змінні типу interface завжди повинні бути пов'язані з фактичним об'єктом. При виклику видалених об'єктів змінна посилається на об'єкт-заглушку. При цьому клієнтська програма нічого не знає про тип заглушки, а самі заглушки і пов'язані з ними об'єкти створюються автоматично.
При передачі об'єкту іншій програмі (він може бути параметром або значенням видаленого методу, що повертається) потрібен файл класу, відповідний цьому об'єкту. Наприклад, метод, який повертає значення типа Product. При компіляції клієнтської програми повинен бути згенерував файл класу Product.class.
При завантаженні фрагментів коду по мережі завжди виникають сумніви з приводу належного забезпечення безпеки. У зв'язку з цим в додатках з використанням RMI застосовується диспетчер захисту. Він захищає заглушки від проникнення в них вірусів.
Дата добавления: 2015-08-18; просмотров: 117 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Охарактеризувати спеціалізований комунікаційний інтерфейс Myrinet | | | XML-RPC |