代码之家  ›  专栏  ›  技术社区  ›  opensas

ASP Classic中server.createObject和createObject的区别

  •  4
  • opensas  · 技术社区  · 15 年前

    根据

    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 回复  |  直到 8 年前
        1
  •  9
  •   AnthonyWJones    15 年前

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

    MTS/COM+的行为 创建对象 服务器.createObject 现在是一样的,部分原因是ASP本身作为COM+应用程序运行。可以指定ASP页启动事务,然后使用 创建对象 任何实现IObjectContext的对象都将被邀请加入事务等。

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

        2
  •  2
  •   Pete Duncanson    15 年前

    总之,是的,很好。正如Ryna S所说,如果你阅读了最后一篇文章的全部内容:

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

    您描述的情况将是一个很好的时机,只需使用CreateObject而不是Server.CreateObject。

    不幸的是,除非你真的想挤出服务器上的每一盎司,否则它不会产生那么大的影响。无论哪种方式,都应该足够快。

        3
  •  -2
  •   Joost Moesker    15 年前

    使用CreateObject的优点是,在使用普通cscript.exe时,可以测试或重用libaries。只需去掉<%%>标记即可。