
- •Интернет-программирование
- •ИП. Доступ к удаленным объектам
- •ИП. Доступ к удаленным объектам
- •ИП. Доступ к удаленным объектам
- •ИП. RMI. Клиент. Классы-заглушки
- •ИП. RMI. Клиент. Удаленные объекты
- •ИП. RMI. Клиент. Удаленные объекты
- •ИП. RMI. Состав примера
- •ИП. RMI. Соглашения именования
- •ИП. RMI. Класс интерфейсов
- •ИП. RMI. Класс пользовательских объектов
- •ИП. RMI. Класс пользовательских объектов
- •ИП. RMI. Класс клиента
- •ИП. RMI. Класс клиента МИЭТ, 2017
- •ИП. RMI. Класс сервера МИЭТ, 2017
- •ИП. RMI. Класс сервера
- •ИП. RMI. Работа примера
- •ИП. RMI vs CORBA
- •ИП. CORBA. История
- •ИП. CORBA. Идея
- •ИП. CORBA. Архитектура
- •ИП. CORBA. Пример
- •ИП. CORBA. Пример
- •ИП. CORBA. Пример. Файл интефейса IDL
- •ИП. CORBA. Пример. Файл интефейса IDL
- •ИП. CORBA. Пример. Компиляция IDL
- •ИП. CORBA. Пример. Классы имплементации. RCalcImpl
- •ИП. CORBA. Пример. Классы имплементации. ResultImpl
- •ИП. CORBA. Пример. Класc клиента RcalcClient. Страница 1
- •ИП. CORBA. Пример. Класc клиента RcalcClient. Страница 2
- •ИП. CORBA. Пример. Класc сервера RСalcServer. Страница 1
- •ИП. CORBA. Пример. Класc сервера RСalcServer. Страница 2
- •ИП. CORBA. Пример. Запуск
- •ИП. CORBA. Пример. Запуск
- •ИП. CORBA. Пример. Запуск
- •ИП. Другие способы вызова методов удаленных сервисов
Интернет-программирование |
МИЭТ, 2017 |
Лекция 13
Работа с удаленными объектами. RMI, CORBA
ИП. Доступ к удаленным объектам |
МИЭТ, 2017 |
Доступ к удаленным объектам (Remote Access) подразумевает взаимодействие с ПО расположенном на другом компьютере
Удаленный доступ может быть организован как в архитектуре клиент сервер, так и в архитектуре одноранговой сети в которой каждый узел — одновременно и клиент и севрер.
Удаленный доступ может быть организован с помощью технологий:
платформо-зависимых: RMI (только для Java)
условно платформо-зависимых — CORBA (под Java, С++, Python )
платформо-независимых технологий — SOAP (интерфейс обмена)

ИП. Доступ к удаленным объектам |
МИЭТ, 2017 |
Технологии удаленного доступа используются для распределенных вычислений и распределенного хранения данных.
ЗАДАЧ
А
РЕШЕН |
СЕРВЕР |
|
|
ИЕ |
|
подзадача
УЗЕЛ |
УЗЕЛ |
... |
УЗЕЛ |
ОБРАБОТКИ |
ОБРАБОТКИ |
ОБРАБОТКИ |
ИП. Доступ к удаленным объектам |
МИЭТ, 2017 |
RMI (Remote Method Invocation) — технология удаленного использования Java объектов
CORBA (Common Object Request Broker Architecture) — технология, позволяющая взаимодействовать объектам, которые были разработаны на разных языках программирования.
SOAP (Simple Object Access Protocol) — широко используется в веб-сервисах

ИП. RMI |
МИЭТ, 2017 |
RMI (Remote Method Invocation) — позволяет программе на Java вызвать метод на Java на удаленном компьютере.
Пусть на удаленном компьютере есть метод Calculate, который для обработки получает объект пользовательского типа DateMassiv
и после обработки возвращает объект пользовательского типа Result Тогда имеем следующую схему работы:
|
Вызов: |
|
|
|
Calculate(DataArray temp) |
|
|
|
|
Вызов |
|
JAVA |
|
JAVA |
|
|
метода |
||
Клиент |
|
Сервер |
|
|
Calculate() |
||
|
|
|
|
|
Calculate возвращает: |
|
|
|
|
||
|
Result |
|
ИП. RMI. Клиент. Классы-заглушки |
МИЭТ, 2017 |
При вызове удаленных методов сервера клиентом вызывается (локально) метод класса-заглушки (stubs).
Клиент не хранит копии вызываемых объектов сервера , а хранит ссылки на объекты-заглушки.
Метод класса заглушки производит:
Развертывание параметров (marshalling)
Передачу данных на сервер
Объект получатель выполняет:
Свертывание параметров
Поиск вызыванного объекта
Вызов данного метода
Извлечение возвращаемого значения или исключения
Передачу пакета клиенту
ИП. RMI. Клиент. Удаленные объекты |
МИЭТ, 2017 |
Типы удаленных объектов (на сервере) описываются на клиенте в виде интерфейса.
Пример:
package miet;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RMI extends Remote {
public String getData(String text) throws RemoteException;
public Result makeCalculate(BigData bd) throws RemoteException;
}
Примечание
Поскольку интерфейс удаленных объектов потребуются как на клиенте, так и на сервере, удобно делать интерфейс клиента в виде jar-архива, который загружается и на клиент и сервер.
ИП. RMI. Клиент. Удаленные объекты |
МИЭТ, 2017 |
Объекты, совместно используемые сервером и клиентом должны описываться интерфейсом.
Для таких объектов удобно делать интерфейс в виде jar- архива, который загружается и на клиент и сервер.
Тогда, в случае обновления, собирается один новый jar и устанавливается на всех серверах и клиентах
Если удаленные объекты используют пользовательские типы данных (классы) то их также целесообразно описывать выделенно и импортировать в клиент, сервер и интерфейс.

ИП. RMI. Состав примера |
МИЭТ, 2017 |
Для иллюстрации работы RMI рассмотрим пример, разработанный в среде NetBeance. Идея примера: посылаем в удаленный метод объект, выполняем обработку, получаем в качестве ответа другой объект.
Пример содержит:
JavaMietLib |
– проект с библиотекой общих кастомных классов |
|
RMIInterfase |
– проект с классами общих интерфейсов |
|
RMIClient |
– |
проект с классами клиента |
RMIServer |
– |
проект с классами сервера |
Схема импорта
JavaMietLib |
RMIClient |
JavaMietLib.jar |
|
||
|
|
|
|
RMIServer |
RMIInterface.jar |
RMIInterface |
|
|
|
|
ИП. RMI. Соглашения именования |
МИЭТ, 2017 |
Без суффикса (напр. Product)
Суффикс Impl (ProductImpl)
Суффикс Server
Суффикс Client
Суффикс Stub
Суффикс Skel
Удаленный интерфейс
Класс-сервер, реализующий этот интерфейс
Программа-сервер, создающая объекты-серверы
Программа-клиент, вызывающая удаленные методы
Класс-заглушка (до JDK 5.0)
Класс-структура (до JDK 5.0)