Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

Несколько вопросов по idl2pas & Corba   Найти похожие ветки 

 
Condor_av   (2002-08-19 15:10) [0]

Добрый день уважаемый Ол!
Есть несколько вопросов из наболевшего. Если они покажутся дилетантскими, то прошу прощения :-)). Сразу замечу что работаю с D6 и VB4.1

1) Боролся ли кто-то с неправильным кодогенерированием аттрибутов в наследуемых интерфейсах? А то г-н. Борланд у себя в основном функции использует в примерах :-((. Дело в том, что при генерации скелетона, для наследника дублируется методы обработки атрибута находящегося в предке.
Т.е вместо TDerivedClass._get_SomeAttribute(...), генерируется еще раз
TBaseClass._get_SomeAttribute(... - в итоге приходиться отказыаться от атрибутов или каждый раз переделывать что грустно. :-((

2) Опять же про наследуемые интерфейсы. Где-то я уже встречал подобное здесь, но не совсем. Как организовать Корба - полиморфизм? Проще говоря проблема в том, что если есть метод возвращающий базовый интерфейс, то все попытки передать через него наследников ничем хорошим не заканчиваются - на клиент всегда попадает Nil, так что никакие
Narrow() не применимы :-((

3) Ну и наконец о самом, наверно просто не разобрался. Про жизненный цикл объектов. Как видно из предыдущего примера, в большинстве случаев клиент не биндиться к объекту, а получает на него ссылку (Пример Account из Examples IDL2PAS). Но дело в том что в примерах объекты НИКОГДА не освобождаются!!!). Закрыли программу и все хорошо. Но на реальном сервере, естественно, объекты не могу жить вечно.  А при попытке освобождения объекта-реализации начинается такая катавасия :-))/B>, даже после закрытии клиента(ов) и релизе интерфейсов. Подскажите, плиз, процедуру правильного поведения клиента и сервера с целью убивания несчачтного объекта :-))

Буду премного блгодарен за полезные советы, Condor


 
epflorov ©   (2002-08-19 16:10) [1]

Здравствуйте.

Про 3)
Как вариант можно почитать:
http://www.rsdn.ru/article/?corba/corba_qu.xml


 
Condor_av   (2002-08-19 16:56) [2]

To epflorov: Спасибо, но я(D6) использует BOA :-(



 
epflorov ©   (2002-08-19 19:15) [3]

Причем здесь POA-BOA?
Я имел ввиду "Общая схема клиент-серверного обмена" и "Контроль коннекта со стороны сервера и сборка мусора". POA, по-моему, там имеет не определяющую роль.
Хотя конечно я могу заблуждаться.


 
msts   (2002-08-20 09:05) [4]

Интересовался этой темой месац назад в форумах все свелось к тому что в идл наследуются интерфейсы а не их реализация (что верно и правильно) но при генерации реализации хотелось бы большего (чего на данном этапе развития инструментов нет) отсюда вывод - хотите большего - делайте сами (стандарт неприделах).
Собственно я так и думал пол года назад когда налабал для своих целей собственный генератор idl2pas и idl2java (проект требует -сервер на оракле "явааппчегототам", клиент на делфе) организовано так: объект "логин" в единственном экземпляре сидит на сервере при его открытии/получении проверяет пароль и все такое создает объект "коннет" и возвращает его клиенту, дальше клиент работает, при завершении "коннект" зануляется - на сервере он уничтожается (проверялось) вот и все, а что касается примеров дам гдето было написано - мол заводишь пул объектов (типа которые всегда активны 10шт) и раздаешь их по мере обращения но эта идеалогия подходит для разовых обращений к серверу например за курсом валюты раз в 30 мин и себя оправдывает - для таких задач, но в серьезных приложениях неа - не прокатит, это все равно что перед выполнением sql запроса соединятся с сервером а после его закрывать и так 100 раз в минуту


 
Condor_av   (2002-08-20 12:00) [5]

To msts: Я использовал аналогичный подход - один объект "коннект" котрый возвращает "сессию", с этим все в порядке
Естественно дальше идет наполнение, т.е. смысловые объекты задачи
И они логично организованны в виде иерархии. Доступ к ним только через объект "сессия", т.е. прямой "бинд" не организовывается. Для такого подхода сегодня ночью нашел решение, не скажу что очень правильное и скорее "хацкерское" :-). Просто каждый объект наследник должен иметь RepositoryID такой же как и базовый класс (для этого нужно в "скел" изменить конструктор, а в "стаб" функцию RepositoryID и все проходит - клиент получает базовый класс и потом проводит Narrow к действительному наследнику (если знает конечно его тип, а это организовано)

Спасибо

PS: С освобождением пока не доборолся :-(




 
Condor_av   (2002-08-20 16:45) [6]

To epflorov: Так вот я и хотел спросить как эту сборку мусора осуществлять с учетом того что используется BOA и клиент не биндиться к объектам, а получает на них ссылки. В терминах скелов, стабов и реализаций.


 
epflorov ©   (2002-08-21 00:12) [7]

To Condor_av

В документации на VB4.0 for C++ нашел такую главу "Chapter 30
Using object activators" (file://localhost/d:/soft/Inprise/vbroker/doc/books/vbcpp/vbcpp40/programmers-guide/activatr.html, где пути до vbroker ваши).
+ пример vbroker\examples\boa\odb.
Возможно я ошибаюсь (каюсь BOA ниразу не использовал), но все очень похоже на Ваш случай.
Даже если не использовать предлагаемый активатор, то всегда можно сделать сборщик отдельным потоком (там DBObjectImplReaper), который будет деактивировать и удалять реализации по различным критериям (хотя идея активатора по-моему все равно логична).

Если Вы считаете, что я ответил бред, то напишите. Мне также интересна эта тема :).



Страницы: 1 вся ветка

Форум: "Corba";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1091965649
Relaxxx
2004-08-08 15:47
2004.08.22
Выделение итемса TreeView по его значеню в Data


1-1091481675
QuestionX
2004-08-03 01:21
2004.08.22
Рисование на форме поверх всех компонентов


1-1092139479
Анатолий
2004-08-10 16:04
2004.08.22
Инициализация модулей


9-1083642760
lokid7
2004-05-04 07:52
2004.08.22
Расчет положения объекта на карте.


14-1091719602
Cerberus
2004-08-05 19:26
2004.08.22
Хочяу в орешник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский