WScript.CreateObject、Server.CreateObject、CreateObject の違い

VBScript には CreateObject 関数があるが、WSH には WScript.CreateObject メソッドが、ASP には Server.CreateObject メソッドが存在する。一見どれを使っても同じように見えるが、この 3 つの違いは何なのか。

Fabulous Adventures In Coding - What's the Difference between WScript.CreateObject, Server.CreateObject and CreateObject?
http://blogs.msdn.com/ericlippert/archive/2004/06/01/145686.aspx

この記事によると、

  1. VBScript の CreateObject 関数は、言語に用意された機能。
  2. WSH の WScript.CreateObject メソッドは、イベントハンドラへの関連付けに対応している (イベントの扱いは言語エンジンではなくてホストが決めることなので、VBScript の標準機能には入れられない)。
  3. ASP の Server.CreateObject メソッドは、トランザクションに対応している (トランザクションに対応するには ASP の処理コンテキストを考慮しなければならないので、VBScript の標準機能には入れられない)。

ということで、言語標準では対応できない部分をなんとかするために、各ホストが独自のオブジェクト生成機能を持っている、ということのようだ。逆に考えると、イベントハンドラトランザクションもいらない場合は、CreateObject 関数でも問題ない (たぶん)。