#vb6 #activex #com #mts
#vb6 #activex #com #mts
Вопрос:
14 лет назад, когда я был новичком, настройка компонентов для классического ASP не входила в мои обязанности… Однако теперь я вернулся в будущее, и мне приходится поддерживать и кодировать для классического проекта ASP с использованием COM-объекта.
Теперь я обнаружил, что просматриваю древние статьи, датированные с 1999 по 2001 год, и мне интересно, есть ли у кого-нибудь хороший ответ относительно того, почему COM (ActiveX .dll) должен выполняться без присмотра и сохраняться в наборе памяти?
Я должен также отметить, что текущая архитектура сайта такова.Библиотеки DLL только что сброшены на сервер (зарегистрированные, конечно). Мне интересно о COM и MTS. Пока мы придерживаемся классического ASP (длинная история). Тем не менее, я надеюсь перейти к .СЕТЬ с быстротой. Итак, если я могу минимизировать время обслуживания этой текущей архитектуры, это было бы полезно. Не могли бы вы также указать мне причину, по которой мы должны использовать COM и MTS? А также что будет связано с добавлением этих функций.
Ответ №1:
Автоматическое выполнение не позволяет вашему двоичному файлу VB6 отображать интерактивный диалог, т. Е. окно на сервере, которое ваш веб-клиент не сможет видеть или взаимодействовать с ним.
Это может быть Msgbox () или всплывающее окно с ошибкой во время выполнения. Когда помечено автоматическое выполнение, ошибки времени выполнения регистрируются в журнале событий Windows.
Сохраненный в памяти не позволяет IIS (или вашему хосту) немедленно освободить вашу DLL. В зависимости от настроек вашего хоста, библиотека DLL будет сохранена в памяти и использована повторно. Некоторые хосты (такие как IIS) выпустят DLL через некоторое время.
Смотрите также: Вы можете настроить параметр автоматического выполнения и параметр Сохранено в памяти в последней версии Msvbvm60.dll
Необходимо включить опцию автоматического выполнения и опцию Сохранено в памяти перед компиляцией, чтобы разместить компонент Microsoft Visual Basic Enterprise Edition для Windows 6.0 (Microsoft ActiveX DLL) в многопоточной среде, такой как Microsoft Transaction Server (Mtx.exe ), Информационные службы Интернета (Inetinfo.exe ), COM (Dllhost.exe ), и Microsoft SQL Server 7.0 или SQL Server 2000 (Sqlservr.exe ). Однако вы можете не знать, будет ли компонент использоваться в такой среде, или вы можете забыть включить опцию автоматического выполнения и опцию Сохранено в памяти. Для решения этой проблемы используется последняя версия среды выполнения Visual Basic (Msvbvm60.dll ) представляет новую функцию, которая позволяет включить опцию автоматического выполнения и опцию Сохраненного в памяти во время выполнения.
И: Проблемы с потоковой передачей компонентов ActiveX Visual Basic 6.0
- Нарушение доступа внутри MSVBVM60.DLL.
- Клиент переходит в состояние взаимоблокировки. Вы можете увидеть эти два симптома, если библиотека DLL Visual Basic ActiveX размещена в многопоточной среде, например IIS, MTS или многопоточном клиенте, и параметр Сохранить в памяти не включен.
И, конечно же: Общая вкладка Visual Basic Reference (диалоговое окно свойств проекта)
Автоматическое выполнение указывает, что проект предназначен для запуска без взаимодействия с пользователем. В проектах без сопровождения нет элементов интерфейса. Любые функции во время выполнения, такие как сообщения, которые обычно приводят к взаимодействию с пользователем, записываются в журнал событий.
Сохраненный в памяти Сохраняет проект в памяти. Однако есть издержки производительности: проект, сохраненный в памяти, не выгружается до завершения процесса.
Комментарии:
1. 1 Это хороший ответ для автоматического выполнения… Что насчет сохраненного в памяти?
2. У вас есть какая-либо информация о том, почему я должен рекомендовать COM и MTS?
3. Я не могу найти ни одной веской причины рекомендовать набор технологий, внедренных, когда ведущей ОС Windows была NT4. Вам нужно избавиться от вашей зависимости от VB6 прямо сейчас и переключиться на .NET. Несколько сервисов, которые предоставлялись MTS / COM , были заменены на .NET-аналоги. Поскольку вы все равно уже планируете перейти на .NET, зачем вам переносить свои компоненты VB6 на COM , где двоичные файлы VB6 в любом случае являются гражданами 2-го класса?
4. отличная информация о сохраненном в памяти и выполняемом без присмотра
5. MTS является частью COM , он был объединен с DTC для формирования COM , когда вышел Win2K. Вы можете найти больше об этой теме на msdn.microsoft.com/en-us/library/ms685978 (ПРОТИВ 85).aspx .Net использует COM в толстой оболочке, называемой Enterprise Services.