Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

Чайниковская проблема с Class Factory   Найти похожие ветки 

 
Сан Саныч   (2003-08-26 03:12) [0]

Помогите :) Есть программа, реализованная в виде
in-process (dll) ole automation server-а, которая
при запуске (init) спрашивает пароль у юзера и
далее использует этот пароль во всех выданных
клиентских объектах (через CoCreate) для работы с
зашифрованными ресурсами. Т.е. идея в том, что он,
пароль, спрашивается только 1 раз, и далее объекты
могут создаваться где угодно и будут использовать
этот общий пароль без повторных запросов.
Все бы хорошо, когда оно используется в одной
программе, т.е. легко создается массив объектов,
пароль спрашивается 1 раз (при первом создании).
Но если параллельно запустить 2-ю копию клиента -
то пароль спрашивается еще раз, т.е. опять идет
инициализация класс фактори, в ней пароль пустой
и он спрашивается еще раз :( что делать ?
Немного сумбурно, извините, но нужно чтобы неважно
где создавались объекты, в моих ли приложениях или
скажем в ИЕ, но пароль спрашивался бы только в том
случае если refCount созданных объектов был = 0
х.е.л.п. :)


 
Palladin ©   (2003-08-26 09:19) [1]


> только в том
> случае если refCount созданных объектов был = 0

ну вот же, ты сам указал условие...
спрашивай пароль только в этом случае...
иначе пропускай...


 
Сан Саныч   (2003-08-26 10:54) [2]

Так он зараза для каждого запущенного приложения равен 0.
Такое чувство что класс фактори создается для каждого клиента своя.


 
Внук ©   (2003-08-26 11:07) [3]

В качестве предположения.
Если COM-класс написан как Multi-Instance, то так и будет. А если попробовать Single-Instance?


 
Сан Саныч   (2003-08-26 11:40) [4]

Нет, я пробовал поиграться с флагами - не помогло :(


 
Юрий Федоров ©   (2003-08-26 11:44) [5]

В случае in-process (dll) сервер подргужается в адресное пространство клиента, если клиента 2 - то будут 2 копии сервера, разве не так ?
Так что может тут только внешним сервером решится проблема ?


 
Внук ©   (2003-08-26 11:54) [6]

>>Юрий Федоров © (26.08.03 11:44) [5]
Да, слова про in-process server я пропустил :))


 
Skier ©   (2003-08-26 12:01) [7]

Не бейте ногами, но мне кажется что копия для in-process будет одна, но дело в том что, например, все глобальные переменные dll инициализируются
нулями при каждой загрузке библиотеки. Может в этом дело ? Нет ?


 
Erik   (2003-08-26 12:28) [8]

Только внещний exe сервер тебе поможет.
Аминь.


 
Сан Саныч   (2003-08-26 12:51) [9]

А как в дельфи внешние (local?) сервера делать ?
В доках об этом ни слова не нашел, хотя может плохо искал...


 
Юрий Федоров ©   (2003-08-26 12:57) [10]

Создаешь обычный exe, потом запускаешь визард
new -> axtiveX -> automation object


 
Сан Саныч   (2003-08-26 13:20) [11]

спасибо всем :)


 
Erik   (2003-08-26 13:59) [12]

Можно еще подменить библиотеку для класс фактори, на многопоточную. Она у Borland есть и Ben Li делал.


 
Serginio666   (2003-08-26 14:50) [13]

Class Factory будет создана 1, но выдавать ссылки объектов клиенту она будет по разному в зависимости от TThreadingModel.
Можно использовать глобальные переменные DLL или почитать про реализацию синглетона http://www.rsdn.ru/article/atl/atlsingleton.xml
соответсвенно переделав TAutoClassFactory.


 
Serginio666   (2003-08-26 14:59) [14]

Извините, не дочитал, что два разных екзешника. Только внешний сервер.


 
Serginio666   (2003-08-27 18:28) [15]

Можно использовать FileMapping при использовании in-process (dll) ole automation server-а



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

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
6-24608
gala
2003-07-03 17:51
2003.09.08
TCP ili UDP?


1-24510
Дмитрий
2003-08-27 09:06
2003.09.08
BDE не установлен у клиента, а надо бы...


3-24389
Patrick
2003-08-14 10:29
2003.09.08
Использование TDBF


14-24621
Vovchik_A
2003-08-21 15:11
2003.09.08
Пить вредно ?


14-24643
RIMMER
2003-08-21 01:07
2003.09.08
ShlWAPI для Delphi