Слайд 2ВОПРОСЫ:
CORBA (Common Object Request Broker Architecture)
Понятие CORBA .
Архитектура CORBA
IDL (Interface Definition Language)
Брокер
объектных запросов (ORB).
Этапы создания проекта на основе CORBA
Контрольные вопросы .
Слайд 3Вопрос 1
Понятие CORBA
Основные термины
Слайд 4
ПОНЯТИЕ CORBA
OMG (сокр. от англ. Object Management Group—
800 организаций
С 1989 American Airlines
один из основателей OMG.
Некоторое время в консорциуме участвовала корпорация Microsoft.
Слайд 5
1ПОНЯТИЕ CORBA
CORBA - Common Object Request Broker Architecture
— общая архитектура брокера
объектных запросов) — одна из технологий написания распределённых приложений, продвигаемый консорциумом (рабочей группой) OMG - объектно-ориентированная
задача - обеспечение взаимодействия программ,
суть — независимая от языка работа с удаленными обектами
Слайд 6
ПОНЯТИЕ CORBA
Задача CORBA - интеграция изолированных систем.
Цель - создание распределенных компьютерных систем.
Преимущества :
прозрачность вызова (invocation transparency ),
прозрачность реализации (implementation transparency )
и прозрачность локализации ( location transparency )
CORBA использует:
инкапсуляцию,
наследование,
полиморфизм,
динамическое связывание.
Слайд 7
1ПОНЯТИЕ CORBA
ППО:
через SQL,
RPC (Remote Procedure Call),
TP мониторы (Transaction Proceesing)
Groupware –
MOM - Message-Oriented Middleware
Слайд 8
2ПОНЯТИЕ CORBA
Основные понятия
1.CORBA-объект (target object) –
object reference
2. Идентификатор объекта (object ID) -
(Portable Object Adapter).
3. Сервант
необходимо отделять CORBA-объекты от сервантов.
Слайд 9
3ПОНЯТИЕ CORBA
4. Скелетон
5. Активизация
6. Активизированные объекты
6. Временные объекты
8. Деактивизация
9. Объектный адаптер
Слайд 10
4ПОНЯТИЕ CORBA
10. ORB (Брокер объектных запросов ) - основной компонент CORBA..
коммутационная плата
библиотека
процесс-демон.
Слайд 12
5ПОНЯТИЕ CORBA
четыре основных элемента:
1) ORB
2) Сервисы CORBA
3) CORBA facilities
4) Application Objects
Слайд 13
ПОНЯТИЕ CORBA
Технология работы:
«заглушка» (Stub) – в клиентской части.
«скелет» (Skeleton) –
у серверного объекта.
- реализация серверного объекта.
-уникальная объектная ссылка.
-передача ORB данных от клиента.
Слайд 14
ПОНЯТИЕ CORBA
Интерфейс не зависит:
от местоположения реализации объекта,
языка программирования.
При создании определения интерфейса оговариваются:
операции
параметры
исключения
интерфейс
взаимодействие с клиентом объекта,
доступ к реализациям объектов.
Слайд 15
ПОНЯТИЕ CORBA
Клиент - это приложение
реализация объекта - это код и данные
ORB- все
действия для:
нахождения,
реализации,
подготовке реализации
передаче данных
Слайд 16
ПОНЯТИЕ CORBA
интерфейс
public interface Hello extends java.rmi.Remote
{
String sayHello() throws java.rmi.RemoteException;
}
класс
public class
HelloImpl extends PortableRemoteObject implements Hello
{
public HelloImpl() throws RemoteException {}
public String sayHello() throws RemoteException
{
return "Hello World!\n";
}
}
Слайд 17
ПОНЯТИЕ CORBA
Сформируем серверную часть (3 пункта из предыдущего списка)
import org.omg.CORBA.ORB;
import org.omg.CORBA.Object;
import
javax.rmi.PortableRemoteObject;
public class helloServer{
public static void main(String[] args) {
try {
ORB orb = ORB.init(args, null);
Hello hello = new HelloImpl();
String helloIOR = orb.object_to_string((Object)
PortableRemoteObject.toStub(hello));
\\"ior«(Interoperable Object Reference)
Util.writeIOR(helloIOR, "ior", true);
System.out.println("waiting for invocations ...");
orb.run();
} catch (Exception ex) {
ex.printStackTrace();} }}
Слайд 18
ПОНЯТИЕ CORBA
POA и BOA
Объектные адаптеры
Basic Object Adapter (базовый объектный адаптер), или BOA,
Portable Object
Adapter (POA - переносимый объектный адаптер).
Слайд 19
ПОНЯТИЕ CORBA
POA - возможность отделить доступ к серванту от самого серванта.
у клиента есть объектная ссылка,
информация о местонахождении объекта ОА.
ОА - решение, какой объект (сервант) может обработать данный вызов.
Слайд 20
ПОНЯТИЕ CORBA
Работа сервера на POA состоит из (общий случай):
ссылка на корневой адаптер
POA;
определение политик нового POA;
создание нового POA
создание серванта;
активация POA.
.
Слайд 21
ПОНЯТИЕ CORBA
CORBA-сервер
на основе стандартного механизма POA
экземпляр ORB
ссылка на службу имен
объект
"обрезается" (narrow )
публикуется в службе имен.
запускается ORB
.
Слайд 22
ПОНЯТИЕ CORBA
1. ORB orb=ORB.init(args, null);
2. метод resolve_initial_references()
Object,привести к типу POA с помощью
narrow() в Helper-классе объекта POA:
POA rootPOA=POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
.
Слайд 23
ПОНЯТИЕ CORBA
4. POA interface = poaRoot.create_POA(new_POA_name,poaRoot.the_POAManager(),
TestInterfacePolicies);
5. interface.activate_object_with_id(new_POA_name.getBytes(),
new TestInterfaceImpl());
6. poaRoot.the_POAManager().activate();
7. orb.run();
.
Слайд 24
ПОНЯТИЕ CORBA
Object Management Architecture ( OMA ) - эталонная архитектура распределенных систем,.
Объекты CORBA –удаленные объекты могут
обращаться,
.
Объект - это нечто, что обеспечивает один или более сервисов
Слайд 25
ПОНЯТИЕ CORBA
Серверный объект - набор классов
особенности структуры объектной ссылки CORBA:
формат IOR
- Interoperable Object Reference
протокол GIOP
язык IDL.
транспортные протоколы
параметры для различных транспортов должны быть различными.
ОС несколько профилей. (Совокупность параметров для ТП)
.
Слайд 26
ПОНЯТИЕ CORBA
Компонентная модель CORBA (CCM)
CCM была введена начиная с CORBA 3.0
стандартный
каркас приложения для компонент CORBA.
Контейнер - набор служб - сервисов CORBA ,
работу выполняет а контейнер приложения.
значительно снижает сложность реализации.
Слайд 27
6ПОНЯТИЕ CORBA
Сервисы CORBA ( CORBAservices )
- базовые сервисы, которые доступны всем объектам, подключенным к коммуникационной
шине ORB.
Слайд 28IDL (Interface Definition Language)
Слайд 29
7ПОНЯТИЕ CORBA
IDL (Interface Definition Language)
описательный язык,
расширение .idl
нет деталей реализации.
Код, который реализует операции -сервант
( servant ).
конкретные языки программирования.
Слайд 30
ПОНЯТИЕ CORBA
На IDL существует несколько возможных структурных объединений:
Enum
module Finance {
enum Currency {pound, dollar, yen, franc};
interface Account {
readonly attribute float balance;
readonly attribute Currency balanceCurrency;
...
};
};
Struct
A struct data type allows you to package a set of named members of various types, for example:
module Finance {
struct CustomerDetails {
string name;
short age;
};
interface Bank {
CustomerDetails getCustomerDetails(in string name);
... }; };
UNION - аналогично
Слайд 31
ПОНЯТИЕ CORBA
Пример использования типа String:
module Finance {
interface Bank {
attribute string sortCode<10>;
attribute string address;
...
};
};
typedef sequence Unbounded;
typedef sequence Bounded;
Спецификацию можно почитать на
http://www.ibm.com/developerworks/webservices/library/co-corbajct3.html
Слайд 32
ПОНЯТИЕ CORBA
Этапы создания распределенных объектных приложений на IDL :
описание объектов на
IDL,
их трансляции на какой-либо язык программирования,
добавление бизнес-логики и компиляция.
Основные понятия
модуль
интерфейс
операция
IDL стаб (stub)
Слайд 33
ПОНЯТИЕ CORBA
C,
C++,
Java,
Cobol,
Smalltalk ,
Lisp
и Ada;
для
objective C, Visual Basic, Perl и других языков – не все стандартизированы но работают.
Слайд 34Брокер объектных запросов (ORB).
Слайд 35
ПОНЯТИЕ CORBA
ORB - это промежуточное ПО, которое устанавливает клиент-серверные отношения между
объектами + спектр сервисов распределенного промежуточного программного обеспечения.
Слайд 36
ПОНЯТИЕ CORBA
Позволяет:
вызывать сервисы
интероперабельность
посылать - принимать заявки,
поиск реализации объекта-сервера
Слайд 37
ПОНЯТИЕ CORBA
вызовы методов компонентов;
реализация как синхронного, так и асинхронного взаимодействия компонентов.
Слайд 38
ПОНЯТИЕ CORBA
Брокер объектных запросов играет в OMA основную роль.
Взаимодействие Клиент – посредством
заглушки
Динамический интерфейс
API БОЗ.
Брокер и сервант:
статический скелет,
динамический интерфейс
объектный адаптер.
Рис. иллюстрирует взаимодействие с объектным брокером.
Слайд 40
ПОНЯТИЕ CORBA
Пример создания объекта ORB на стороне клиента:
ORB orb = ORB.init(args,
null);
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
Пример формирования стаба при маршалинге:
Hello hello = (Hello) orb.string_to_object(helloIOR);
Слайд 41
ПОНЯТИЕ CORBA
Интероперабельность брокеров –
CORBA определяет среду для различных реализаций ORB, поддерживающих
общие сервисы и интерфейсы.
обеспечивает мобильность клиентов