现在我发现自己正在查看1999年到2001年的古代文章,我想知道是否有人对COM(ActiveX .dll)应该具有无人值守执行和保留在内存集中的原因有一个很好的答案? / p>
我还应该注意,网站的当前架构是这些.dll刚刚丢弃在服务器上(当然已注册)。我想知道COM +和MTS。我们现在坚持使用经典ASP(长篇故事)。但是,我希望能够快速地转向.NET。因此,如果我可以最大限度地减少当前架构的维护时间,那将是有帮助的。能否请你告诉我为什么要使用COM +和MTS?以及添加这些功能所涉及的内容。
答案 0 :(得分:5)
无人参与执行可防止您的VB6二进制文件显示交互式对话框,即您的webclient无法查看或与之交互的服务器上的窗口。
这可能是Msgbox()或运行时错误弹出窗口。标记无人参与执行时,会将运行时错误记录到Windows事件日志中。
保留在内存中可防止IIS(或您的主机)立即释放您的DLL。根据您的主机设置,DLL将保留在内存中并重复使用。某些主机(如IIS)将在一段时间后释放DLL。
您必须打开无人值守 执行选项和保留 编译前的内存选项 托管Microsoft Visual Basic 适用于Windows 6.0的企业版 组件(Microsoft ActiveX DLL)中的 多线程环境,如 Microsoft Transaction Server (Mtx.exe),Internet信息 服务(Inetinfo.exe),COM + (Dllhost.exe)和Microsoft SQL Server 7.0或SQL Server 2000 (Sqlservr.exe的)。但是,你可能不会 知道一个组件是否会发生 在这样的环境中使用或你 可能忘记打开无人值守 执行选项和保留 内存选项。解决这个问题 问题,最新版本的 Visual Basic运行时(Msvbvm60.dll) 介绍了一个允许的新功能 你打开无人值守 执行选项和保留 运行时的内存选项。
并且:Threading issues with Visual Basic 6.0 ActiveX components
- MSVBVM60.DLL中的访问冲突。
- 客户端进入死锁状态。如果是Visual,您可能会看到这两种症状 基本ActiveX DLL托管在 多线程环境,用于 例如,IIS,MTS或多线程 客户端和内存保留 选项未启用。
当然还有:Visual Basic Reference General Tab (Project Properties Dialog Box)
无人参与执行表示该项目旨在运行 没有用户互动。无人值守 项目没有界面元素。 任何运行时函数,如 通常导致用户的消息 交互被写入事件 日志中。
保留在内存中将项目保留在内存中。但是,有一个 绩效成本:保留一个项目 在内存中没有卸载,直到 流程终止。