Запуск небезопасной библиотеки DLL на многопоточном HTTP-сервере Windows

Мне нужно инкапсулировать приложение VB6 как COM-объект, который будет вызываться IIS. Одна из dll, используемых приложением VB6, НЕ является потокобезопасной.

Как я могу убедиться, что всякий раз, когда вызывается мой COM-объект, он не использует одну и ту же dll с другими экземплярами самого себя?

Я где-то читал, что exes ActiveX запускают каждый экземпляр в отдельном процессе, этого будет достаточно?


person cfischer    schedule 16.03.2009    source источник


Ответы (1)


Вам нужно будет прочитать о моделях потоковой передачи данных COM и апартаментов, текст ссылки. Хотя то, что вы делаете, возможно, ваша производительность будет ужасной, потому что вы в конечном итоге будете использовать однопоточные апартаменты, поэтому все запросы будут сериализованы. Вам действительно следует изучить создание отдельного процесса для каждого из этих запросов.

person LanceSc    schedule 16.03.2009
comment
Я думал, что это именно то, что сделает ActiveX exe: создаст новый процесс для каждого вызова. Это неправильно? - person cfischer; 17.03.2009
comment
Я имел дело только с COM-объектами как с библиотеками DLL, но, бегло взглянув на MSDN, можно было бы использовать для этого внепроцессный исполняемый файл ActiveX. Вместо того, чтобы пытаться портировать дырочное приложение, вам следует создать небольшое тестовое приложение. - person LanceSc; 17.03.2009