![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про устойчивость 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 информации нет.