vb6为什么我要无人值守执行并保留在内存集中?

web*_*ad3 1 vb6 activex com+ mts

14年前,当我是一个绿色的角,设置经典ASP的组件不是我的薪水等级...现在,我已经回到未来,我发现自己必须维护和编码经典的ASP项目使用COM对象.

现在我发现自己正在查看1999年到2001年的古代文章,我想知道是否有人对COM(ActiveX .dll)应该具有无人值守执行和保留在内存集中的原因有一个很好的答案?

我还应该注意,网站的当前架构是这些.dll刚刚丢弃在服务器上(当然注册).我想知道COM +和MTS.我们现在坚持使用经典ASP(长篇故事).但是,我希望能够快速地转向.NET.因此,如果我可以最大限度地减少当前架构的维护时间,那将是有帮助的.能否请你告诉我为什么要使用COM +和MTS?以及添加这些功能所涉及的内容.

mag*_*gma 5

无人参与执行可防止您的VB6二进制文件显示交互式对话框,即Webclient无法查看或与之交互的服务器上的窗口.

这可能是Msgbox()或运行时错误弹出窗口.当无人参与的执行被标记,运行时错误记录到Windows事件日志.

保留在内存中可防止IIS(或您的主机)立即释放您的DLL.根据您的主机设置,DLL将保留在内存中并重复使用.某些主机(如IIS)将在一段时间后释放DLL.

另请参阅:您可以在最新版本的Msvbvm60.dll中配置"无人参与执行"选项和"保留在内存中"选项

您必须在编译之前打开无人参与执行选项和保留在内存中选项,以在多线程环境(如Microsoft Transaction Server(Mtx.exe))中承载Microsoft Visual Basic企业版for Windows 6.0组件(Microsoft ActiveX DLL) ,Internet信息服务(Inetinfo.exe),COM +(Dllhost.exe)和Microsoft SQL Server 7.0或SQL Server 2000(Sqlservr.exe).但是,您可能不知道组件是否将在此类环境中使用,或者您可能忘记打开"无人参与执行"选项和"保留在内存中"选项.为解决此问题,最新版本的Visual Basic运行时(Msvbvm60.dll)引入了一项新功能,允许您在运行时打开"无人参与执行"选项和"保留在内存中"选项.

并且:Visual Basic 6.0 ActiveX组件的线程问题

  • MSVBVM60.DLL中的访问冲突.
  • 客户端进入死锁状态.如果Visual Basic ActiveX DLL托管在多线程环境中(例如,IIS,MTS或多线程客户端),并且未启用"保留内存"选项,则可能会看到这两种症状.

当然还有:Visual Basic参考常规选项卡(项目属性对话框)

无人参与执行表示项目无需用户交互即可运行.无人参与的项目没有界面元素.任何运行时函数(例如通常导致用户交互的消息)都将写入事件日志.

保留在内存中保留内存中的项目.但是,存在性能成本:在进程终止之前,不会卸载保留在内存中的项目.

  • 当领先的Windows操作系统是NT4时,我找不到推荐一系列技术的任何理由.您需要立即摆脱VB6依赖,并切换到.NET.MTS/COM +提供的几项服务已被.NET同行取代.既然你已经计划转移到.NET了,你为什么要把你的VB6组件带到COM +,其中VB6二进制文件仍然是二等公民? (2认同)
  • MTS是COM +的一部分,当Win2K问世时,它与DTC结合形成COM +.您可以在http://msdn.microsoft.com/en-us/library/ms685978(VS.85).aspx的.Net更多主题使用COM +,厚厚的包装称为企业服务范围内. (2认同)