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

Вниз

Чайниковская проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-24486
Lex
2003-08-25 20:39
2003.09.08
Как повернуть timage на 45 градусов?


14-24696
xmapa
2003-08-19 15:02
2003.09.08
Безмышиный интерфейс: как сделать главное меню?


14-24674
NAlexey
2003-08-20 09:33
2003.09.08
Фень Юань?


8-24569
_Alex_
2003-05-06 20:48
2003.09.08
рисование на Canvas не повреждая фон


3-24385
KublaKhan
2003-08-15 16:43
2003.09.08
Visual Foxpro





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский