Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Про устойчивость VisiBroker for C++ 4.1


Олег Лаукарт ©   (2002-05-15 12:32:00) 

Коллеги, кто реально пользуется продуктом, поделитесь впечатлениями. У меня создается впечатление, что с устойчивостью есть проблемы. Хотелось бы услышать обратное и понять причину следующих проблем.

Комбинация: VisiBroker for C++ 4.1, D6, Up1, BOA, Windows NT.

Одна проблема описана в http://www.corbaejb.mastak.ru/ikonboard/ikonboard/topic.cgi?forum=6&topic=8

Вот вторая:
Создаю на Д6 сервер, регистрирующий в ВОА три поименованых корба объекта. Они доступны из клиентских программ. Запускаю Inprise Visibroker Console и в Location Service выбираю Object Instances. Замечено два негативных исхода. Первый - консоль долго не может ничего найти. Второй хуже и именно вызывает интерес - моя серверная программа слетает:
"application-defined exception (code 0xc00000fd) at ..." под дебагером выяснилось, что ошибка возникает в модуле vport_br (vport_br.@VISMutex_var@$bctr$qr8VISMutexuc).

Заранее благодарен,
Олег Лаукарт.


sesam   (2002-07-30 15:34:00) [1]

Добрый день!
Рискую быть сильно побитым почитателями только Delphi и только C++, но:
если использовать способность C++Builder'а цеплять pas- и dcu- модули, можно с минимальными усилиями (в основном, связанными с  передачей составных типов и строк) довести Ваш Delphi-сервер до работоспособного состояния: во-первых, сервер не будет слетать при его поиске в VisiBroker Console, во-вторых, снимется проблема "Assertion faild: _reply_message!=(Protocol Engine::ReplyMessage*)Null, file vsrvreph.c? line 52"  (и куча других, описанных в этом Форуме), в-третьих, Вам не нужно трогать реализацию бизнес-логики - достаточно переписать только фабрики и управление объектами с состоянием, что не так уж и сложно, и, наконец, Вы получаете POA, с которым работать гораздо комфортнее.

1. В CBuilder создаете CORBA-сервер и, на основании Вашего idl-файла,  заглушки реализаций объектов (пока все автоматически).
2. В pas-файле реализаций серверных методов заменяете методы объектов на процедуры (убираете, напр., точку между именем объекта/метода), выпалываете лишнее и включаете этот файл в проект (простои контекстная замена).
3. В xxxServer.cpp вставляете #include "имя pas-файла.hpp" и оформляете вызовы его процедур (тут прийдется немного повозиться...).
4. Дописываете реализацию объектов с состоянием...

Вот, собственно, и все.

Естественно, это подмена понятий, и CORBA реализована на CPP, но когда нужно перевести большое существующие D-приложение в N-звенку, такое решение, по-моему, имеет право на существование.
После того, как количество клиентов возросло, и D-сервер стал устойчиво падать, в качестве временной меры мне пришлось сделать вышеописанное. Не знаю, может, я что-то не заметил, но пока все работает.
А вообще, я понял, что нужно слушаться знающих людей (Цимбал, Орлик и др.) и не писать сервера на Delphi (по кр. мере, пока).

Удачи.
Сергей.

P.S.: Если у кого-то есть опыт в написании подобной конструкции, пожалуйста, поделитесь впечатлениями и проблемами. Или утверждением, что так делать нельзя.


Олег Лаукарт   (2002-06-25 12:41:00) [2]

С того момента, как я озвучил описанную выше проблему, прошло много времени. Разные люди периодически спрашивают меня по почте, решил ли я ее. Отвечаю: к большому моему огорчению и опасению НЕТ. Пока частично выкрутился за счет пересмотра внутренней логики системы, но это все баловство. Надежды на следующие обновления продукта, возможно в них будет устранена эта ошибка. Есть также надежда, что решение можно найти, разобравшись в опциях для Визиброкера, но пока... Если найду решение, то обязательно поделюсь (сдесь же).
С уважением, Олег Лаукарт.


fnv-hope   (2002-05-27 08:21:00) [3]

Увы, обратного сказать не могу, могу только повторить, что есть проблемы (об этом писалось в дисскуссии "Создание фабрики и объектов".


Олег Лаукарт   (2002-05-15 12:45:00) [4]

В догонку:
Information for:        orb_br.dll
Product Name:           VisiBroker for C++ (Borland CBuilder 5)
Licensed to:            Inprise
Version:                04.01.00.P1.01
Copyright:              (C) 1996, 2000
Company:                Inprise Corp.
Build Date:             05/03/2001 18:43:51

для vport_br информации нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо