Можно ли использовать JScript.NET для написания скриптов в приложении.NET?
Поскольку MS, по- видимому, убила управляемый JavaScript в последней версии DLR как для серверной части (ASP.NET Futures), так и для клиентской части (Silverlight), кто-нибудь успешно использовал устаревшие API-интерфейсы, чтобы разрешить сценарии объектов своих приложений с помощью JScript.NET и / или можете объяснить, как это сделать? Решение Mono/JScript также может быть приемлемым, если оно стабильно и соответствует приведенным ниже требованиям.
Мы заинтересованы в обновлении хоста сценариев, который использует движок Microsoft JScript и API-интерфейсы ActiveScript, до более высокой производительности и более легкой расширяемости. У нас более 16 000 серверных сценариев с общим весом более 42 МБ, поэтому о переписке на другой язык сценариев не может быть и речи.
Наши конкретные требования:
- Заметно лучшая производительность, чем у движка Microsoft JScript (ActiveScript)
- Лучшая производительность во время выполнения и / или
- Сохранение предварительно проанализированных или скомпилированных скриптов (не повторяйте при каждом запуске)
- Более низкое или равное потребление памяти
- Полная совместимость с ECMA-262 ECMAScript
- немного портирования можно терпеть
- Внедрение пользовательских объектов в пространство имен скрипта
- Объекты.NET (не сложное требование)
- COM-объекты или COM-объекты, завернутые в.NET
- Создание COM-объектов из скрипта
- а-ля "новый ActiveXObject(progid)"
- Низкий приоритет с учетом предыдущего
- Включить файлы
- Предварительная загрузка "вспомогательных сценариев" в контекст выполнения сценария
- Функция или оператор "include" (легко создать, учитывая вышеизложенное)
- Поддержка кода в глобальном масштабе
- Выполнение кода глобальной областью действия
- Сохранение значений, инициализированных в глобальном масштабе
- Извлечение значений из глобальной области видимости
- Инъекция и замена ценностей в глобальном масштабе
- Вызов скриптовых функций
- с параметрами
- и с доступом к ранее инициализированной глобальной области видимости
- Отладка на уровне исходного кода
- Коммерческая или открытая поддержка
- Не устаревшие API
7 ответов
Рано или поздно, я думаю, кто-то напишет Javascript DLR. Я знаю, что это не очень удобно для вас сейчас, но, возможно, вы могли бы начать проект. Я подозреваю, что лучше использовать анализ затрат и выгод по сравнению с использованием JScript.NET.
Я использовал CSScript.net, так как он позволит вам запускать C# в качестве платформы сценариев. С сайта:
CS-Script сочетает в себе мощь и богатство C# и FCL с гибкостью системы сценариев. CS-Script может быть полезен для системных и сетевых администраторов, разработчиков и тестеров. Для любого, кому нужна автоматизация для решения самых разных задач программирования.
CS Script удовлетворяет всем условиям, которые вы выложили. Я использовал его в качестве замены для Boo, он показал себя очень хорошо. Вы можете увидеть это в действии здесь.
Если отойти от.NET и Microsoft вам подходит, то вам стоит попробовать Mozilla's Rhino. Это реализация JavaScript с открытым исходным кодом, полностью написанная на Java. Многие современные js-библиотеки на стороне сервера ориентированы на эту платформу.
Вы видели ROScript? http://www.remobjects.com/script.aspx
Поддерживает синтаксис PascalScript и ECMAScript (Javascript)
Использование Com Interop означает, что вы ограничены решением MS, которое Java и Opensource хотят иметь с ним как можно меньше.
Я не вижу ни одного решения, которое бы отвечало всем вашим требованиям, либо вы отказываетесь от всего, что связано с COM/.NET, и переходите на Java (Rhino) /Linux/Open source, либо вы сомневаетесь в использовании Javascript в качестве языка вашего сервера, даже в мире Linux, где мы используем PHP/Python/ Руби больше на сервере, если мы не можем запустить Java. Вы не увидите большого прироста производительности со сценарием Java, поскольку основным препятствием является язык.
Я бы не стал рассчитывать на людей, пишущих новый DLR, поскольку серверный Java-скрипт быстро умирает.
Учитывая, что вам нужна производительность, а как насчет F#, Microsoft будет поддерживать поддерживаемый движок Jscript не менее 5 лет, предоставляя вам время для создания новых вещей в F#, пока вы будете медленно переносить код.
Jurrassic -Двигатель жив и здоров.
С их сайта codeplex:
- Поддерживает все функции ECMAScript 3 и ECMAScript 5, включая строгий режим ES5
- Хорошо протестировано - проходит более пяти тысяч юнит-тестов (более тридцати тысяч подтверждений)
- Простой, но мощный API
- Компилирует JavaScript в байт-код.NET (CIL); не переводчик
- Развернуто как одна сборка.NET (без встроенного кода)
- Базовая поддержка интегрированной отладки в Visual Studio
- Использует облегченную генерацию кода, поэтому сгенерированный код полностью собран
- Протестировано на.NET 3.5, .NET 4 и Silverlight