Можно ли использовать JScript.NET для написания скриптов в приложении .NET? - PullRequest
8 голосов
/ 02 июня 2009

Поскольку MS , по-видимому, убил управляемый JavaScript в последней версии DLR как на стороне сервера (ASP.NET Futures), так и на стороне клиента (Silverlight), кто-нибудь успешно использовал устаревшие API, чтобы разрешить создание сценариев своих прикладных объектов с помощью JScript.NET и / или может объяснить, как это сделать? Решение Mono / JScript также может быть приемлемым, если оно стабильно и соответствует приведенным ниже требованиям.

Мы заинтересованы в обновлении хоста скриптов, который использует движок Microsoft JScript и API-интерфейсы ActiveScript, до чего-то с большей производительностью и более легкой расширяемостью. У нас более 16 000 серверных сценариев с общим весом более 42 МБ, поэтому переписать на другой язык сценариев не может быть и речи.

Наши особые требования:

  • заметно лучшая производительность, чем движок Microsoft JScript (ActiveScript)
    • Лучшая производительность во время выполнения и / или
    • Сохранение предварительно проанализированных или скомпилированных скриптов (не повторять при каждом запуске)
    • меньшее или равное потребление памяти
  • Полная совместимость с ECMA-262 ECMAAScript
    • допускается небольшое портирование
  • Внедрение пользовательских объектов в пространство имен скрипта
    • .NET объекты (не сложное требование)
    • COM-объекты или COM-объекты, упакованные в .NET
  • Создание COM-объектов из скрипта
    • а-ля "новый ActiveXObject (progid)"
    • Низкий приоритет с учетом предшествующего
  • Включить файлы
    • Предварительная загрузка "вспомогательных сценариев" в контекст выполнения сценария
    • Функция или оператор "include" (легко создать, учитывая вышеизложенное)
  • Поддержка кода в глобальном масштабе
    • Выполнение кода глобальной области действия
    • Сохранение значений, инициализированных в глобальной области видимости
    • Извлечение значений из глобальной области видимости
    • Внедрение и замена значений в глобальном масштабе
  • вызов скриптовых функций
    • с параметрами
    • и с доступом к ранее инициализированной глобальной области действия
  • Отладка на уровне источника
  • Коммерческая или открытая поддержка
  • Не устаревшие API

Ответы [ 7 ]

3 голосов
/ 09 апреля 2010

Я ответил на аналогичный вопрос здесь . Взгляните на IronJS , реализацию JavaScript на F #, работающую на DLR.

2 голосов
/ 02 июня 2009

Рано или поздно я представляю, что кто-то напишет Javascript DLR. Я знаю, что это не очень удобно для вас сейчас, но, возможно, вы могли бы начать проект. Я подозреваю, что лучше использовать анализ затрат и выгод при использовании JScript.NET.

1 голос
/ 23 декабря 2009

Я использовал CSScript.net , поскольку он позволит вам запускать C # в качестве платформы сценариев. С сайта:

CS-Script сочетает в себе мощь и богатство C # и FCL с гибкость системы сценариев. CS-Script может быть полезен для системы и сетевые администраторы, разработчики и тестеры. Для любого, кто нуждается в автоматизация для решения различных задачи программирования.

CS Script удовлетворяет всем условиям, которые вы выложили. Я использовал его в производстве в качестве замены для Boo, он показал себя очень хорошо. Вы можете увидеть это в действии здесь .

1 голос
/ 16 июня 2009

Если отойти от .NET и Microsoft вам подходит, то вам стоит попробовать Mozilla Rhino . Это реализация JavaScript с открытым исходным кодом, полностью написанная на Java. Многие современные js-библиотеки на стороне сервера предназначены для этой платформы.

0 голосов
/ 09 декабря 2013

Юрский -Двигатель жив и здоров.

С сайта их кодекса:

  • Поддерживает все функции ECMAScript 3 и ECMAScript 5, включая строгий режим ES5
  • Хорошо протестировано - выдерживает более пяти тысяч юнит-тестов (более тридцати тысяч подтверждений)
  • Простой, но мощный API
  • Компилирует JavaScript в байт-код .NET (CIL); не переводчик
  • Развернуто как одна сборка .NET (без встроенного кода)
  • Базовая поддержка интегрированной отладки в Visual Studio
  • Используется облегченная генерация кода, поэтому сгенерированный код полностью очищается от мусора
  • Протестировано на .NET 3.5, .NET 4 и Silverlight
0 голосов
/ 22 июля 2013

Вы видели ROScript? http://www.remobjects.com/script.aspx

Поддерживает синтаксис PascalScript и ECMAScript (Javascript)

0 голосов
/ 01 декабря 2009

Использование Com Interop означает, что вы ограничены решением MS, а Java и Opensource хотят иметь с ним как можно меньше возможностей.

Я не вижу ни одного решения, которое бы отвечало всем вашим требованиям, либо вы отказываетесь от всего, что связано с COM / .NET, и переходите на Java (Rhino) / Linux / Open source, либо вы сомневаетесь в использовании Javascript в качестве языка сервера даже в мире Linux. мы используем PHP / Python / Ruby больше на сервере, если мы не можем запустить Java. Вы не увидите большого прироста производительности со сценарием Java, поскольку основным барьером является язык.

Я бы не стал рассчитывать на людей, пишущих новый DLR, поскольку серверный Java-скрипт быстро умирает.

Учитывая, что вы хотите повысить производительность, а что касается F #, Microsoft будет поддерживать движок Jscript в течение не менее 5 лет, предоставляя вам время для создания новых вещей в F #, пока вы будете медленно переносить код.

...