2012-03-16 17 views
1

Chakraは、MicrosoftがIE9にパッケージングした更新されたJavascriptエンジンのコードネームです。私はChakraでASP Classicを実行できますか?

ASPクラシックページの開発言語としてJScriptを使用することは可能です。これは通常、Windowsに組み込まれたJScriptエンジン上で実行されます。これは、NT4 Option Pack(c.1996)以降、すべてのWindowsバージョンに存在しています。

質問は、Chakraエンジンで動作するJavascriptをASP目的で使用することは可能ですか?

答えて

3

明らかにそうではありません。

私はこの単純なサンプルスクリプトを試してみました:「Javascriptが」上記のように、言語の名前であるとき、私はこの結果を得る

<%@ language="Javascript" %> 

<script language="Javascript" runat="server" src='json2.js'></script> 

<script language="Javascript" runat="server"> 

(function() { 

    scriptEngineInfo = function() { 
     var s = { 
      engine : ScriptEngine(), 
      version: { 
       major: ScriptEngineMajorVersion(), 
       minor:ScriptEngineMinorVersion() 
      }, 
      build: ScriptEngineBuildVersion() 
     }; 
     return s; 
    } 

}()); 

var x = scriptEngineInfo(); 
x.Timestamp = (new Date()).valueOf(); 

Response.Write (JSON.stringify(x)); 

</script> 

{ 
    "engine": "JScript", 
    "version": { 
    "major": 5, 
    "minor": 8 
    }, 
    "build": 16982, 
    "Timestamp": 1331866901948 
} 

示唆したように、私が行うとthis answerでChakraを名前付きスクリプトエンジンとして設定し、上のスクリプトの "Javascript"を "Chakra"に置き換えて、 "page"を実行すると、が得られます。結果:

メジャーバージョン9は、私がチャクラを使用していることを示しています。

しかし I再度要求同じスクリプト、それは言って、500エラーで失敗した場合:私はしようとした場合

が解放されたスクリプト

からコードを実行できませんもう一度、私に与える

外部オブジェクトでトラップ可能なエラー(C0000005)が発生しました。スクリプトは継続して実行できません。

私は再びしようとすると、私が手:

A ScriptEngineのはから 'IActiveScript :: GetScriptState()' で例外 'C0000005' を投げた 'CActiveScriptEngine :: ReuseEngine()'。

これは、このスクリプトでは、私のマシン上で繰り返されます。

これから、私はChakraがASP環境用に設計されていないと結論づけました。

2

Active Scriptingアーキテクチャでは、スクリプティングホスト(つまりASP.dll)は、スクリプトエンジンによって提供された何らかの構文の中間コードをキャッシュすることができます。これはASPによって頻繁に使用され、非常に高速になります。我々は巨大なスクリプト(複数の1000行のコード)を実行しており、最初の呼び出しはコードが実際に実行されるまでに数秒かかりますが、その後の呼び出しでは1/10秒後にコードが実行されます。

新しいJITコンパイラが原因である可能性があります。スクリプトインターフェイスがうまく機能せず、ASPが混乱します。この問題は、WSHが実行されるコードを整理しないため、WSHがキャッシュを使用しないため、WSHのテストケースには存在しません。

ASPキャッシュが無効になっている場合、チャクラ9エンジンが動作するかどうかは興味深いでしょう。私は今すぐテストすることはできません。私たちのような大きなスクリプトでは、しかし、それは小規模なスクリプトのための試してみる価値があります。

IE9をインストールすると、インストーラは古いJavaScript 5.8エンジン(ビルド16982)も展開し、IE8(17562)のものより上にインストールされます。この「ダウングレード」の意義はわかりませんが、Classic ASPを実行しているサーバーにIE9をインストールしないほうがよいでしょう。

おそらく、IE 10のChakraはActiveScriptingアーキテクチャのサポートを強化します。そう【であることを】祈りましょう。

関連する問題