Слайд 2ВОПРОСЫ:
CORBA (Common Object Request Broker Architecture)
Понятие CORBA .
Архитектура CORBA
IDL (Interface Definition Language)
Брокер
![ВОПРОСЫ: CORBA (Common Object Request Broker Architecture) Понятие CORBA . Архитектура CORBA](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-1.jpg)
объектных запросов (ORB).
Этапы создания проекта на основе CORBA
Контрольные вопросы .
Слайд 3Вопрос 1
Понятие CORBA
Основные термины
![Вопрос 1 Понятие CORBA Основные термины](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-2.jpg)
Слайд 4
ПОНЯТИЕ CORBA
OMG (сокр. от англ. Object Management Group—
800 организаций
С 1989 American Airlines
![ПОНЯТИЕ CORBA OMG (сокр. от англ. Object Management Group— 800 организаций С](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-3.jpg)
один из основателей OMG.
Некоторое время в консорциуме участвовала корпорация Microsoft.
Слайд 5
1ПОНЯТИЕ CORBA
CORBA - Common Object Request Broker Architecture
— общая архитектура брокера
![1ПОНЯТИЕ CORBA CORBA - Common Object Request Broker Architecture — общая архитектура](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-4.jpg)
объектных запросов) — одна из технологий написания распределённых приложений, продвигаемый консорциумом (рабочей группой) OMG - объектно-ориентированная
задача - обеспечение взаимодействия программ,
суть — независимая от языка работа с удаленными обектами
Слайд 6
ПОНЯТИЕ CORBA
Задача CORBA - интеграция изолированных систем.
Цель - создание распределенных компьютерных систем.
Преимущества :
![ПОНЯТИЕ CORBA Задача CORBA - интеграция изолированных систем. Цель - создание распределенных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-5.jpg)
прозрачность вызова (invocation transparency ),
прозрачность реализации (implementation transparency )
и прозрачность локализации ( location transparency )
CORBA использует:
инкапсуляцию,
наследование,
полиморфизм,
динамическое связывание.
Слайд 7
1ПОНЯТИЕ CORBA
ППО:
через SQL,
RPC (Remote Procedure Call),
TP мониторы (Transaction Proceesing)
![1ПОНЯТИЕ CORBA ППО: через SQL, RPC (Remote Procedure Call), TP мониторы (Transaction](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-6.jpg)
Groupware –
MOM - Message-Oriented Middleware
Слайд 8
2ПОНЯТИЕ CORBA
Основные понятия
1.CORBA-объект (target object) –
object reference
2. Идентификатор объекта (object ID) -
![2ПОНЯТИЕ CORBA Основные понятия 1.CORBA-объект (target object) – object reference 2. Идентификатор](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-7.jpg)
(Portable Object Adapter).
3. Сервант
необходимо отделять CORBA-объекты от сервантов.
Слайд 9
3ПОНЯТИЕ CORBA
4. Скелетон
5. Активизация
6. Активизированные объекты
6. Временные объекты
8. Деактивизация
9. Объектный адаптер
![3ПОНЯТИЕ CORBA 4. Скелетон 5. Активизация 6. Активизированные объекты 6. Временные объекты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-8.jpg)
Слайд 10
4ПОНЯТИЕ CORBA
10. ORB (Брокер объектных запросов ) - основной компонент CORBA..
коммутационная плата
библиотека
![4ПОНЯТИЕ CORBA 10. ORB (Брокер объектных запросов ) - основной компонент CORBA.. коммутационная плата библиотека процесс-демон.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-9.jpg)
процесс-демон.
Слайд 12
5ПОНЯТИЕ CORBA
четыре основных элемента:
1) ORB
2) Сервисы CORBA
3) CORBA facilities
4) Application Objects
![5ПОНЯТИЕ CORBA четыре основных элемента: 1) ORB 2) Сервисы CORBA 3) CORBA facilities 4) Application Objects](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-11.jpg)
Слайд 13
ПОНЯТИЕ CORBA
Технология работы:
«заглушка» (Stub) – в клиентской части.
«скелет» (Skeleton) –
![ПОНЯТИЕ CORBA Технология работы: «заглушка» (Stub) – в клиентской части. «скелет» (Skeleton)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-12.jpg)
у серверного объекта.
- реализация серверного объекта.
-уникальная объектная ссылка.
-передача ORB данных от клиента.
Слайд 14
ПОНЯТИЕ CORBA
Интерфейс не зависит:
от местоположения реализации объекта,
языка программирования.
При создании определения интерфейса оговариваются:
![ПОНЯТИЕ CORBA Интерфейс не зависит: от местоположения реализации объекта, языка программирования. При](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-13.jpg)
операции
параметры
исключения
интерфейс
взаимодействие с клиентом объекта,
доступ к реализациям объектов.
Слайд 15
ПОНЯТИЕ CORBA
Клиент - это приложение
реализация объекта - это код и данные
ORB- все
![ПОНЯТИЕ CORBA Клиент - это приложение реализация объекта - это код и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-14.jpg)
действия для:
нахождения,
реализации,
подготовке реализации
передаче данных
Слайд 16
ПОНЯТИЕ CORBA
интерфейс
public interface Hello extends java.rmi.Remote
{
String sayHello() throws java.rmi.RemoteException;
}
класс
public class
![ПОНЯТИЕ CORBA интерфейс public interface Hello extends java.rmi.Remote { String sayHello() throws](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-15.jpg)
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
![ПОНЯТИЕ CORBA Сформируем серверную часть (3 пункта из предыдущего списка) import org.omg.CORBA.ORB;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-16.jpg)
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
![ПОНЯТИЕ CORBA POA и BOA Объектные адаптеры Basic Object Adapter (базовый объектный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-17.jpg)
Adapter (POA - переносимый объектный адаптер).
Слайд 19
ПОНЯТИЕ CORBA
POA - возможность отделить доступ к серванту от самого серванта.
у клиента есть объектная ссылка,
![ПОНЯТИЕ CORBA POA - возможность отделить доступ к серванту от самого серванта.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-18.jpg)
информация о местонахождении объекта ОА.
ОА - решение, какой объект (сервант) может обработать данный вызов.
Слайд 20
ПОНЯТИЕ CORBA
Работа сервера на POA состоит из (общий случай):
ссылка на корневой адаптер
![ПОНЯТИЕ CORBA Работа сервера на POA состоит из (общий случай): ссылка на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-19.jpg)
POA;
определение политик нового POA;
создание нового POA
создание серванта;
активация POA.
.
Слайд 21
ПОНЯТИЕ CORBA
CORBA-сервер
на основе стандартного механизма POA
экземпляр ORB
ссылка на службу имен
объект
![ПОНЯТИЕ CORBA CORBA-сервер на основе стандартного механизма POA экземпляр ORB ссылка на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-20.jpg)
"обрезается" (narrow )
публикуется в службе имен.
запускается ORB
.
Слайд 22
ПОНЯТИЕ CORBA
1. ORB orb=ORB.init(args, null);
2. метод resolve_initial_references()
Object,привести к типу POA с помощью
![ПОНЯТИЕ CORBA 1. ORB orb=ORB.init(args, null); 2. метод resolve_initial_references() Object,привести к типу](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-21.jpg)
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();
.
![ПОНЯТИЕ 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());](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-22.jpg)
Слайд 24
ПОНЯТИЕ CORBA
Object Management Architecture ( OMA ) - эталонная архитектура распределенных систем,.
Объекты CORBA –удаленные объекты могут
![ПОНЯТИЕ CORBA Object Management Architecture ( OMA ) - эталонная архитектура распределенных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-23.jpg)
обращаться,
.
Объект - это нечто, что обеспечивает один или более сервисов
Слайд 25
ПОНЯТИЕ CORBA
Серверный объект - набор классов
особенности структуры объектной ссылки CORBA:
формат IOR
![ПОНЯТИЕ CORBA Серверный объект - набор классов особенности структуры объектной ссылки CORBA:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-24.jpg)
- Interoperable Object Reference
протокол GIOP
язык IDL.
транспортные протоколы
параметры для различных транспортов должны быть различными.
ОС несколько профилей. (Совокупность параметров для ТП)
.
Слайд 26
ПОНЯТИЕ CORBA
Компонентная модель CORBA (CCM)
CCM была введена начиная с CORBA 3.0
стандартный
![ПОНЯТИЕ CORBA Компонентная модель CORBA (CCM) CCM была введена начиная с CORBA](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-25.jpg)
каркас приложения для компонент CORBA.
Контейнер - набор служб - сервисов CORBA ,
работу выполняет а контейнер приложения.
значительно снижает сложность реализации.
Слайд 27
6ПОНЯТИЕ CORBA
Сервисы CORBA ( CORBAservices )
- базовые сервисы, которые доступны всем объектам, подключенным к коммуникационной
![6ПОНЯТИЕ CORBA Сервисы CORBA ( CORBAservices ) - базовые сервисы, которые доступны](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-26.jpg)
шине ORB.
Слайд 28IDL (Interface Definition Language)
![IDL (Interface Definition Language)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-27.jpg)
Слайд 29
7ПОНЯТИЕ CORBA
IDL (Interface Definition Language)
описательный язык,
расширение .idl
нет деталей реализации.
Код, который реализует операции -сервант
![7ПОНЯТИЕ CORBA IDL (Interface Definition Language) описательный язык, расширение .idl нет деталей](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-28.jpg)
( servant ).
конкретные языки программирования.
Слайд 30
ПОНЯТИЕ CORBA
На IDL существует несколько возможных структурных объединений:
Enum
module Finance {
![ПОНЯТИЕ CORBA На IDL существует несколько возможных структурных объединений: Enum module Finance](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-29.jpg)
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 {
![ПОНЯТИЕ CORBA Пример использования типа String: module Finance { interface Bank {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-30.jpg)
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 :
описание объектов на
![ПОНЯТИЕ CORBA Этапы создания распределенных объектных приложений на IDL : описание объектов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-31.jpg)
IDL,
их трансляции на какой-либо язык программирования,
добавление бизнес-логики и компиляция.
Основные понятия
модуль
интерфейс
операция
IDL стаб (stub)
Слайд 33
ПОНЯТИЕ CORBA
C,
C++,
Java,
Cobol,
Smalltalk ,
Lisp
и Ada;
для
![ПОНЯТИЕ CORBA C, C++, Java, Cobol, Smalltalk , Lisp и Ada; для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-32.jpg)
objective C, Visual Basic, Perl и других языков – не все стандартизированы но работают.
Слайд 34Брокер объектных запросов (ORB).
![Брокер объектных запросов (ORB).](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-33.jpg)
Слайд 35
ПОНЯТИЕ CORBA
ORB - это промежуточное ПО, которое устанавливает клиент-серверные отношения между
![ПОНЯТИЕ CORBA ORB - это промежуточное ПО, которое устанавливает клиент-серверные отношения между](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-34.jpg)
объектами + спектр сервисов распределенного промежуточного программного обеспечения.
Слайд 36
ПОНЯТИЕ CORBA
Позволяет:
вызывать сервисы
интероперабельность
посылать - принимать заявки,
поиск реализации объекта-сервера
![ПОНЯТИЕ CORBA Позволяет: вызывать сервисы интероперабельность посылать - принимать заявки, поиск реализации объекта-сервера](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-35.jpg)
Слайд 37
ПОНЯТИЕ CORBA
вызовы методов компонентов;
реализация как синхронного, так и асинхронного взаимодействия компонентов.
![ПОНЯТИЕ CORBA вызовы методов компонентов; реализация как синхронного, так и асинхронного взаимодействия компонентов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-36.jpg)
Слайд 38
ПОНЯТИЕ CORBA
Брокер объектных запросов играет в OMA основную роль.
Взаимодействие Клиент – посредством
заглушки
Динамический интерфейс
![ПОНЯТИЕ CORBA Брокер объектных запросов играет в OMA основную роль. Взаимодействие Клиент](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-37.jpg)
API БОЗ.
Брокер и сервант:
статический скелет,
динамический интерфейс
объектный адаптер.
Рис. иллюстрирует взаимодействие с объектным брокером.
Слайд 40
ПОНЯТИЕ CORBA
Пример создания объекта ORB на стороне клиента:
ORB orb = ORB.init(args,
![ПОНЯТИЕ CORBA Пример создания объекта ORB на стороне клиента: ORB orb =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-39.jpg)
null);
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
Пример формирования стаба при маршалинге:
Hello hello = (Hello) orb.string_to_object(helloIOR);
Слайд 41
ПОНЯТИЕ CORBA
Интероперабельность брокеров –
CORBA определяет среду для различных реализаций ORB, поддерживающих
![ПОНЯТИЕ CORBA Интероперабельность брокеров – CORBA определяет среду для различных реализаций ORB,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905664/slide-40.jpg)
общие сервисы и интерфейсы.
обеспечивает мобильность клиентов