Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Отображение IDL на языки программирования

Задачей отображения IDL на конкретный язык программирования является генерация типов данных, классов, констант, методов – всего того, что позволяет прикладным частям серверных и клиентских приложений взаимодействовать с инфраструктурой CORBA и с ее помощью друг с другом.

Фрагменты, реализующие некоторые задачи инфраструктуры CORBA, отображаются на языки программирования несколько иначе, чем стандартные IDL – объявления.

Скелет содержит сгенерированный класс (часто этот класс тоже называют скелетом). В этом классе есть все необходимое для взаимодействия серверного приложения с CORBA. Нет в нем реализации тех методов, которые программист объявил в IDL – декларации. Данный класс нужен только для того, чтобы на основе его создать производный класс (имя этого производного класса программист задает сам), который содержит все реализации.

Таким образом, задача создания серверной логики для данного типа CORBA – объектов разбивается на две части: системно-коммуникационная часть обеспечивается сгенерированным кодом в базовом классе, а прикладная часть записывается явно программистом в классе, производном от сгенерированного.

Нетрудно сообразить, что серванты являются экземплярами этого производного класса.

Со стабами дело обстоит несколько иначе. Сгенерированный код на стороне клиента используется полностью, как есть. Программисту нужны только элементарные знания об его использовании.

Опишем подробнее, что происходит на стороне клиента.

На базе IDL – объявления генерируется класс, который содержит реализацию всех методов, объявленных для данного интерфейса. Но реализация этих методов не имеет никакого отношения к бизнес – логике приложения. Задача этих методов – упаковка информации о вызове (имя метода, число, типы, значения его аргументов, тип возвращаемого результата, перечень возможных исключений и т.п.) и преобразование этой информации в вид, пригодный для передачи на сторону сервера по сети в соответствии с требованиями протокола GIOP (General Inter-ORB Protocol) – протокола обмена информацией CORBA.

Для выполнения реального вызова в процессе работы программы нужно создать экземпляр этого класса. Это делает не программист, а сама CORBA. Такая переменная (ее называют proxy-объект) создается автоматически в тот момент, когда в клиентское приложение попадает объектная ссылка CORBA. При создании proxy-объекта создается "указатель" на него, который и используется программистом для выполнения удаленных вызовов, которые физически являются локальными вызовами методов proxy-объекта. Тип этого указателя также генерируется автоматически на основе IDL – объявлений. Этот указатель имеет также название "объектная ссылка CORBA". Не следует ее путать с "объектной ссылкой CORBA", которая является результатом создания CORBA – объекта на стороне сервера.

<== предыдущая лекция | следующая лекция ==>
CORBA-объекты и серванты | Транзакции и сервис транзакций в CORBA
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 386; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.