vb6 почему я хочу, чтобы автоматическое выполнение сохранялось в наборе памяти?

#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.