Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Об'єктне посилання

Сервант

Отже, ви можете створити CORBA -объект і навіть встановити з ним зв'язок. У загальному випадку цього абсолютно недостатньо, щоб використовувати його в конкретній програмі. Функціональність CORBA -объекта недоступна для клієнта до тих пір, поки в програмі (серверному застосуванні) не створений об'єкт, який дозволяє дістати доступ до методів, оголошених в IDL -интерфейсе. Цей об'єкт (реалізований на C++, Java, C, Cobol, Ada, Smalltalk або деяких інших мовах) і називається "сервантом".

Звичайно, залежно від використовуваної мови програмування, серванти реалізуються по-різному. Для об'єктно-орієнтованих мов сервант є екземпляром (instance) деякого класу, методи якого реалізують потрібну функціональність. Такий клас часто називають "класом реалізації".

За час існування CORBA -объекта з ним може бути зіставлена безліч різних реалізацій сервантів (але не більше за одне за раз). Більше того, вони можуть міститися в адресному просторі різних застосувань. Ці застосування можуть бути навіть запущені на різних комп'ютерах.

Часто говорять, що сервант є "інкарнацією" CORBA -объекта. Зв'язок між сервантами і CORBA -объектами є хоча і строго формалізованою, але дуже гнучкою. Сервант може бути створений раніше або пізніше CORBA -объекта; один сервант може "обслуговувати" як один, так і декілька (іноді сотні тисяч і мільйони) CORBA -объектов. Явний розподіл циклів життя CORBA -объектов і їх сервантів (а саме серванти споживають реальні ресурси) - один із стовпів, на яких базується дуже висока масштабованість CORBA -приложений.

Єдина складність, пов'язана з розумінням сенсу терміну "об'єктне посилання", полягає в тому, що він використовується в двох різних сенсах.

Є об'єктне посилання "світу CORBA", яка є закодованою інформацією про CORBA -объекте. Вона включає ім'я хоста, порту TCP/IP (чи координати Репозитария Реалізацій), звичайно ж, унікальний ідентифікатор цього CORBA -объекта і безліч іншої інформації, що дозволяє клієнтові встановити зв'язок з серверним об'єктом через межі мов програмування, операційних систем і апаратних платформ. Операції з об'єктним посиланням неможливі для клієнта, за винятком того, що клієнт може перетворити її на рядок і записати у файл або базу даних. Згодом хто завгодно може рахувати такий рядок і перетворити його знову в об'єктне посилання.

У іншому розумінні "об'єктне посилання" - це змінна тієї або іншої мови програмування, за допомогою якої клієнт здійснює виклик видалених методів. У наступних розділах будуть наведені приклади отримання і використання такого об'єктного посилання. Надалі усі згадки об'єктних посилань відносяться саме до цього, другому, типу об'єктних посилань.

Концептуально змінна типу "об'єктне посилання" є покажчиком на так званий "proxy-объект", який існує на стороні клієнта і забезпечує виконання видалених викликів. Сам proxy -объект зроблений недоступним для програміста; пов'язано це з тим, що його створення - завдання не клієнтського застосування, а самого ORB 'а. Логічно з кожним proxy -объектом зіставлена окреме об'єктне посилання, і під копіюванням об'єктного посилання слід розуміти створення як нового proxy -объекта, так і налаштованого на нього нового "покажчика". Зрозуміло, в реальних реалізаціях фізичного копіювання proxy -объекта не відбувається - як завжди в таких випадках, використовується механізм лічильника посилань.

Дуже важливо виразно розуміти, що копіювання (чи знищення) об'єктних посилань на стороні клієнта впливає виключно на клієнтське застосування. Неправильне ведення лічильника посилань в самому гіршому випадку приведе до продовження фізичного існування в клієнтському додатку непотрібного proxy -объекта. Ніякого відношення до серверного об'єкту ці дії не можуть мати в принципі. І створення, і знищення сервантів або серверних CORBA -объектов - завдання серверного застосування. Філософія CORBA полягає в тому, щоб клієнт посилав повідомлення "встановити зв'язок з існуючим об'єктом" і "розірвати з ним зв'язок", а не "створити серверний об'єкт" і "знищити його". Зрозуміло, клієнт може ініціювати створення Corba -объектов викликавши у видаленого об'єкту спеціально передбачений для цього програмістом (автором об'єкту) метод.

Створення простого об'єкту і його використання

Як ні важливе розуміння теоретичних аспектів CORBA, все ж приклад використання у багатьох випадках здатний сказати більше, ніж самі просторові міркування. Як демонстрація етапів створення CORBA -приложения напишемо простий приклад. Сервер створює об'єкт, що реалізовує операцію складання двох цілих чисел. Клієнт встановлює зв'язок з серверним об'єктом, а потім викликає цей його єдиний метод, виводячи результат на екран. У прикладі використовується мова C++.

Перший етап створення CORBA -приложения - написання усіх необхідних IDL -деклараций. У нашому випадку IDL -код може виглядати так:

interface MyInterface { long Summa (in long op1, in long op2); };

Наступний крок - це генерація файлів на стороні клієнта і сервера за допомогою компілятора idl2cpp. Як вхід компілятор отримує список idl -файлов. У нашому випадку це єдиний файл, що містить наведений вище опис. Для файлу з ім'ям, наприклад, SimpleIDL.idl будуть згенеровані файли SimpleIDL_c.hh, SimpleIDL_c.cpp (для використання на стороні клієнта) і SimpleIDL_s.hh, SimpleIDL_s.cpp (для використання на стороні сервера).

<== предыдущая лекция | следующая лекция ==>
Технологія CORBA | Створення серверного застосування
Поделиться с друзьями:


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


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



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




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