Я думаю, вы очень быстро получите проблемы с одним запросом, блокирующим другой.
ASP.NET по умолчанию инициализирует COM в своих потоках, чтобы поместить поток в многопоточную квартиру. Компоненты VB6 были в лучшем случае моделью квартиры. Это означает, что когда поток MTA создает компонент, он помещается в основную STA, если он уже существует (чего не будет для рабочих процессов ASP.NET), или новый поток создается специально для STA. Не имеет значения, какой поток MTA создает компонент, всегда используется одна и та же STA для компонентов, которые не могут обрабатывать модель MTA. Это означает, что один и тот же поток используется для каждого вызова этих компонентов, поэтому одновременные вызовы должны ждать в очереди.
Чтобы ASP.NET инициализировал COM для однопоточных компонентов, что по крайней мере приведет к созданию объекта в том же потоке, что и выполняющаяся страница, добавьте атрибут AspCompat
в @ Page директива.
Я бы не стал кэшировать объекты, так как при повторном их использовании очень вероятно возникновение межпоточных проблем.