Главная страница
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.026 c
4-24740
Danchik
2003-07-08 13:59
2003.09.08
работа с Dll


1-24434
Abikos
2003-08-25 18:48
2003.09.08
вопрос о Frame ах ....


14-24675
HolACost!
2003-08-20 10:33
2003.09.08
Бонально, но надо - как вывести из консоли cerr!


14-24649
Study
2003-08-20 17:39
2003.09.08
AsPack


8-24553
sd
2003-05-09 12:54
2003.09.08
windows media player