Могу ли я запустить ASP Classic на чакре? - PullRequest
1 голос
/ 16 марта 2012

Чакра - это кодовое имя обновленного движка Javascript, который Microsoft упаковал в IE9.

Возможно использовать JScript в качестве языка разработки для страницы ASP Classic.Обычно он работает на движке JScript, встроенном в Windows, что присутствует во всех версиях Windows начиная с NT4 Option Pack (c.1996).

Вопрос в том, возможно ли использовать Javascriptна двигателе Чакра, для целей ASP?

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Видимо нет.

Я пытался с помощью этого простого примера сценария:

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

Когда я делаю, как предложено в этом ответе , и настраиваю чакру в качестве именованного механизма сценариев, затем заменяю три вхождения «Javascript» в приведенном выше сценарии на «Чакра», затем запускаю «страницу», яполучите правильные, ожидаемые результаты:

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

Основная версия 9 показывает, что я использую чакру.

НО Если я затем повторно запрашиваю тот же сценарий, он завершается с ошибкой 500, говоря:

Невозможно выполнить код из освобожденного сценария

Если я попытаюсь снова, это даст мне

Во внешнем объекте произошла ошибка (C0000005).Сценарий не может продолжать работать.

Если я попытаюсь снова, я получу:

A ScriptEngine выдал исключение «C0000005» в «IActiveScript :: GetScriptState ()» из «CActiveScriptEngine :: ReuseEngine ()»».

Это повторяется, для этого сценария, на моей машине.

Из этого я заключаю, что Чакра не была разработана для среды ASP.

2 голосов
/ 26 июля 2012

Архитектура Active Scripting позволяет хосту сценариев (то есть ASP.dll) кэшировать каким-то образом проанализированный промежуточный код, предоставляемый механизмом сценариев.Это интенсивно используется ASP, и делает это довольно быстро.Мы выполняем огромные сценарии (несколько тысяч строк кода), и первый вызов занимает несколько секунд, прежде чем код будет фактически выполнен, в то время как дальнейшие вызовы выполняют код уже через 1/10 секунды.

Вероятно, из-за нового JIT-компилятора интерфейс сценариев не обслуживается должным образом, и ASP запутывается.Эта проблема не существует с данным тестовым примером WSH, потому что WSH не использует кэширование, так как он не организует код, который будет выполняться.

Было бы интересно посмотреть, работает ли механизм Chakra 9, есликэширование ASP отключено - я не могу сейчас его протестировать, и я предполагаю, что для больших скриптов, подобных нашему, это не принесет желаемого эффекта.Но стоит попробовать меньшие сценарии.

При установке IE9 программа установки также развертывает старый движок JavaScript 5.8 (сборка 16982) и устанавливается поверх того, который поставляется с IE8 (17562).Я не знаю значения этого «понижения», но лучше не устанавливать IE9 на сервер под управлением Classic ASP.

Возможно, в чакре IE 10 будет улучшена поддержка архитектуры ActiveScripting.Будем надеяться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...