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

14 лет назад, когда я был новичком, настройка компонентов для классического ASP не входила в мою зарплату... Однако теперь я вернулся в будущее и обнаружил, что мне приходится поддерживать и кодировать классический проект ASP. с помощью COM-объекта.

Теперь я ловлю себя на том, что просматриваю старые статьи, датированные с 1999 по 2001 год, и мне интересно, есть ли у кого-нибудь хороший ответ на вопрос, почему COM (ActiveX .dll) должен иметь автоматическое выполнение и сохранение в памяти?

Я также должен отметить, что текущая архитектура сайта состоит из этих .dll, просто сброшенных на сервер (зарегистрированных, конечно). Меня интересует COM+ и МТС. Мы пока придерживаемся классического ASP (долгая история). Однако я надеюсь быстро перейти на .NET. Поэтому, если бы я мог минимизировать время обслуживания этой текущей архитектуры, это было бы полезно. Не могли бы вы также указать причину, по которой мы должны использовать COM+ и MTS? А также то, что будет связано с добавлением этих функций.


person webdad3    schedule 18.04.2011    source источник


Ответы (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). , Internet Information Services (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, вкладка "Общие" ( диалоговое окно "Свойства проекта")

Автоматическое выполнение Указывает, что проект предназначен для запуска без вмешательства пользователя. Необслуживаемые проекты не имеют элементов интерфейса. Любые функции времени выполнения, такие как сообщения, которые обычно приводят к взаимодействию с пользователем, записываются в журнал событий.

Сохранено в памяти Сохраняет проект в памяти. Однако есть издержки производительности: проект, хранящийся в памяти, не выгружается до тех пор, пока процесс не завершится.

person magma    schedule 18.04.2011
comment
+1 Это хороший ответ для автоматического выполнения ... А как насчет сохранения в памяти? - person webdad3; 19.04.2011
comment
У вас есть информация о том, почему я должен рекомендовать COM+ и МТС? - person webdad3; 19.04.2011
comment
Я не могу найти веских оснований рекомендовать набор технологий, появившихся, когда ведущей ОС Windows была NT4. Вам нужно избавиться от зависимости от VB6 прямо сейчас и переключиться на .NET. Несколько сервисов, которые предоставлялись MTS/COM+, были заменены аналогами .NET. Поскольку вы все равно уже планируете перейти на .NET, зачем вам переводить ваши компоненты VB6 в COM+, где двоичные файлы VB6 в любом случае являются гражданами второго сорта? - person magma; 19.04.2011
comment
отличная информация о сохранении в памяти и автоматическом выполнении - person webdad3; 19.04.2011
comment
@magma - согласен. Эта версия программного обеспечения разрабатывалась много лет... Они хотят эту версию, а затем переходят на .NET. Я действительно пытаюсь понять, нужно ли мне рекомендовать это, если это поможет мне в конечном итоге перейти к .NET... - person webdad3; 19.04.2011
comment
@magma - не рекомендуя, вы тогда рекомендуете нам оставаться с текущей архитектурой (dll на сервере)? Проблема в том, что я не знаком с COM+ или МТС... Я даже не уверен, что это поможет... - person webdad3; 19.04.2011
comment
@Джефф, я позволю кому-то более осведомленному о COM+ добавить свое мнение; Я участвовал в двух проектах COM+ несколько лет назад, и я помню ужасные головные боли :) Так что я, конечно, предвзят. Не то чтобы у вас не было проблем с .NET, но, по крайней мере, вы будете полагаться на активное сообщество вместо того, чтобы копаться в старой, неподдерживаемой и труднодоступной информации в Интернете. Дайте своему клиенту (или начальнику) понять, что в долгосрочной перспективе переход на более новую платформу обходится дешевле. - person magma; 19.04.2011
comment
@Jeff, конечно, это ваш выбор, потому что я не знаю предыстории, но я бы посоветовал вам заморозить систему как есть - и начать переход на .NET (или вашу современную платформу) как можно скорее. Я понимаю, что код не твой; преобразование компонентов VB6, чтобы они могли использовать преимущества архитектуры COM+, не является тривиальной задачей, и лучше всего потратить время на написание нового кода. - person magma; 19.04.2011
comment
MTS является частью COM+, он был объединен с DTC, чтобы сформировать COM+, когда вышла Win2K. Дополнительную информацию по этой теме можно найти на странице msdn.microsoft.com. /en-us/library/ms685978(VS.85).aspx .Net использует COM+ в толстой оболочке под названием Enterprise Services. - person Bob77; 19.04.2011