Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
197
Добавлен:
17.04.2018
Размер:
641.54 Кб
Скачать

Интернет-программирование

МИЭТ, 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)

Соседние файлы в папке Интернет технологии