asp经典中的server.createObject和createobject之间的区别

时间:2009-09-29 16:38:00

标签: com asp-classic instantiation createobject

根据

http://msdn.microsoft.com/en-us/library/ms524620.aspx

你应该使用server.createObject

  

如果您已熟悉VBScript或JScript,请注意您不使用脚本语言的函数来创建新的对象实例(VBScript中的CreateObject或JScript中的New)。您必须使用ASP Server.CreateObject方法;否则,ASP无法跟踪您在脚本中对对象的使用。

但是其他一些人认为server.createObject意味着可以避免大部分时间的开销

http://classicasp.aspfaq.com/components/should-i-use-createobject-or-server-createobject.html

  

CreateObject比Server.CreateObject具有更少的开销,因为后者使用MTS - 导致显着的开销。

  当组件遇到错误时,您也会遇到性能命中,因为使用Server.CreateObject时,这些错误会写入事件日志(无可否认,这在调试过程中非常有用)。

http://www.4guysfromrolla.com/webtech/043099-1.shtml

  

如果您正在编写处理事务的组件,这可能会变得非常重要,因为通过MTS传递它将是一个很好的安全网,因为您将使用MTS命令。但是,如果您不使用MTS,则可以通过将其传递给Server.CreateObject来创建处理器和内存。这使得使用CreateObject更好,因为它直接通过。

所以,如果我没有使用mts并且不需要访问内置的asp的对象(比如set d = createObject(“scripting.dictionary”)),那么忘记server.createObject并使用createobject就可以了。 ???

非常感谢...

3 个答案:

答案 0 :(得分:9)

您引用的那些文章有点过时了。由于使用直接CreateObject的Windows 2000及更高版本上的IIS 5和COM +与使用Server.CreateObject几乎相同。

CreateObjectServer.CreateObject的MTS / COM +行为现在是相同的,部分原因是ASP本身作为COM +应用程序运行。您可以指定ASP页面启动事务,然后使用CreateObject任何实现IObjectContext的对象将被邀请加入事务等。

我所知道的唯一真正的区别是遗留物,其中正在创建的COM对象可能具有OnStartPage和OnEndPage方法。使用Server.CreateObject在创建对象时以及在释放对象之前调用这些方法。 CreateObject不会发生这种情况。

答案 1 :(得分:2)

简而言之,是的,这很好。就像Ryna S说的那样,如果你阅读了上一篇文章的全部内容:

“希望你现在了解它们之间的差异,以及何时使用这两者。”

您描述的情况只是使用CreateObject而不是Server.CreateObject。

除非你真的试图从服务器中挤出最后一盎司,否则它不会产生太大的影响。无论哪种方式都应该足够快。

答案 2 :(得分:-2)

使用createobject的优点是可以在使用普通cscript.exe时测试或重用库。只需删除< %%>标签