1

Chakraは、MicrosoftがIE9にパッケージ化した更新されたJavascriptエンジンのコードネームです。

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

問題は、ASPの目的でChakraエンジンで実行されているJavascriptを使用することは可能ですか?

4

2 に答える 2

3

どうやらそうではありません。

この簡単なサンプル スクリプトを試してみました。

<%@ 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>

上記のように「Javascript」が言語の名前である場合、次の結果が得られます。

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

この回答で提案されているように、Chakra を名前付きスクリプト エンジンとして構成し、上記のスクリプトの「Javascript」の 3 つの出現箇所を「Chakra」に置き換えてから、「ページ」を実行すると、正しい期待される結果が得られます。

{
  "engine": "JScript",
  "version": {
    "major": 9,
    "minor": 0
  },
  "build": 16441,
  "Timestamp": 1331867213695
}

9 のメジャー バージョンでは、Chakra を使用しています。

しかし、同じスクリプトを再リクエストすると、次のように 500 エラーで失敗します。

解放されたスクリプトからコードを実行できません

もう一度試してみると、

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

もう一度試すと、次のようになります。

ScriptEngine は、「CActiveScriptEngine::ReuseEngine()」からの「IActiveScript::GetScriptState()」で例外「C0000005」をスローしました。

これは、このスクリプトの場合、私のマシンで再現可能です。

このことから、Chakra は ASP 環境向けに設計されていないと結論付けています。

于 2012-03-16T03:09:31.370 に答える
2

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

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

ASP キャッシングが無効になっている場合に Chakra 9 エンジンが機能するかどうかを確認するのは興味深いことです。現在テストすることはできません。私たちのような大きなスクリプトでは、望ましい効果が得られないと思います。ただし、小さなスクリプトの場合は試してみる価値があります。

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

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

于 2012-07-26T19:25:13.260 に答える