Студопедия

КАТЕГОРИИ:


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

Створення серверного застосування

Файли _s.* містять код, який дозволяє зв'язати серверне застосування з CORBA. Для нас найбільший інтерес представляє згенерований клас POA_MyInterface. Цей клас містить оголошення чисто віртуальній (абстрактною) функції Summa:

class POA_MyInterface:.. { public: ... virtual CORBA::Long Summa(CORBA::Long _op1 CORBA::Long _op2) throw(CORBA::SystemException) = 0; ... };

Оскільки клас POA_MyInterface є тільки основою для серверного застосування, його часто називають "скелетом" або навіть "скелетоном" (skeleton).

Очевидно, що програмістові необхідно створити похідний від нього клас, в якому функція Summa була б визначена. Це можна зробити, наприклад, так:

class MyInterfaceImpl: public POA_MyInterface { public: MyInterfaceImpl () {} CORBA::Long Summa(CORBA::Long _op1 CORBA::Long _op2) throw(CORBA::SystemException); };   CORBA::Long MyInterfaceImpl::Summa(CORBA::Long _op1 CORBA::Long _op2) throw(CORBA::SystemException) { return _op1 + _op2; }

Клас реалізацій MyInterfaceImpl часто створюється автоматично, наприклад, за допомогою експертів, що входять до складу Borland C++ Builder або Java Builder.

Тепер залишилося написати код функції main():

##include <fstream.h> ##include <corba.h>   ##include "MyInterfaceImpl.h"   ##pragma argsused main(int argc, char* argv[]) { try { // // Ініціалізація взаємодії з CORBA CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); // // Створення серванта майбутнього CORBA -объекта MyInterfaceImpl* servant = new MyInterfaceImpl; // // Створення тимчасового (transient) // // CORBA -объекта і отримання об'єктного посилання CORBA::Object_ptr oRef = servant ->_this(); // // Перетворення об'єктного посилання в рядок CORBA::String_var str = orb ->object_to_string (oRef); // // Запис у файл ofstream oref_file ("MyORef.ior"); oref_file.write (str, strlen(str)+1); oref_file.close(); cout << "Waiting for client requests.".; // // Цикл очікування запитів клієнтів orb ->run(); } catch(const CORBA::Exception& e) { cerr << e << endl; return(1); } return 0; }

Деякі пояснення. Створення серверного об'єкту за допомогою методу _this() застосовується досить рідкісно. Отримуваний таким чином об'єкт має сукупність характеристик, що украй утрудняють його використання. У розділі, присвяченому об'єктним адаптерам, буде розказано, як створювати "нормальні" CORBA -объекты.

Результатом виклику методу _this() є об'єктне посилання. Тип MyInterface визначає proxy -объект, MyInterface_ptr (чи MyInterface_var) - покажчик на нього. Це перший вид об'єктного посилання - на рівні додатка.

Друге об'єктне посилання - посилання рівня ORB - з'являється в результаті її перетворення до рядка з наступним записом цього рядка у файл. Ви можете ознайомитися з вмістом цього файлу відразу після запуску серверного застосування.

Об'єктне посилання записується у файл, звідки її може рахувати додаток-клієнт. Зрозуміло, цей спосіб швидше демонструє принцип організації зв'язку між клієнтом і сервером, чим представляє яку-небудь практичну цінність.

Зверніть увагу на те, що одне і теж додаток може бути як клієнтом, так і сервером - CORBA в цьому плані не накладає ніяких обмежень.

 

<== предыдущая лекция | следующая лекция ==>
Об'єктне посилання | Середовище Delphi. (смирнов 67)
Поделиться с друзьями:


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


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



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




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