4

根据

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 )???

多谢...

4

3 回答 3

9

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

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

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

于 2009-09-30T12:01:15.027 回答
2

简而言之,是的,它很好。正如 Ryna S 所说,如果您阅读了上一篇文章的全文:

“希望你现在明白区别,以及何时使用这两者。”

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

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

于 2009-09-29T17:35:30.627 回答
-2

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

于 2009-10-01T06:42:44.663 回答