8

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

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

Наши специфические требования:

  • Noteably более высокую производительность, чем (ActiveScript) двигатель Microsoft JScript
    • Повышение производительности во время выполнения и/или
    • Удержание предварительно проанализированных или скомпилированных скриптов (дон повторная обработка при каждом прогоне)
    • Потребление в нижней или равной памяти
  • Полный ECMA-262 ECMAScript совместимость
    • немного портирование может допускаться
  • Injection пользовательских объектов в пространстве имен сценария
    • .NET объекты (не жесткое требование)
    • COM-объекты или COM-объекты, завернутые в.NET
  • Инстанцирование из COM объектов из скрипта
    • а-ля "новый ActiveXObject (идентификатору)"
    • Низкий приоритет дал предшествующему
  • инклюдника
    • PRE- загрузка «вспомогательных скриптов» в контекст выполнения скрипта
    • «включают» функция или оператор (легко создать, учитывая выше)
  • Поддержка кода в глобальной области видимости
    • Выполнение кода глобальной области
    • удерживания значений инициализируется на глобальном объем
    • Извлечение значений из глобальной области
    • инъекций и замены значений в глобальном масштабе
  • Призвания скриптовых функций, определяемый
    • с параметрами
    • и с доступом к ранее инициализирован глобальному масштабу
  • Отладка исходного уровня
  • Коммерческого или Open Source Support
  • Non- устаревшие API
+1

Будет ли Microsoft по-прежнему поддерживать управляемый JScript в Silverlight? – Nosredna

+1

Нет, ушел из Silverlight тоже. См. Этот ответ: http://stackoverflow.com/questions/775339/where-can-you-download-managed-jscript-for-the-dlr/886173#886173 –

+1

Это довольно шокирует. – Nosredna

ответ

2

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

1

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

+0

@thatismatt - Вы использовали Rhino с мостом Java для COM? Можете ли вы прокомментировать производительность, простоту интеграции с кодом на C++ и т. Д.? –

+0

Боюсь, нет, извините, я не очень помогу, дайте мне знать, как вы все-таки продолжаете! – thatismatt

0

Использование 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 #, в то время как вы медленно переносите код.

+0

Проблема с кросс-платформой заключается в том, что нам нужен доступ к более 80 вызовам Win32 RPC плюс полдюжины объектов DCOM, таких как WSUS и WMI. Я люблю F # и использую его для создания прототипов, внутренних утилит и управления каталогами (дома для онлайн-магазина моей жены), но, как было сказано, у нас более 16 000 скриптов, написанных на JS на стороне сервера, и они не могут позволить себе стоимость перехода на другой язык. Тем не менее, мы посмотрели http: //jcifs.samba.org, что может оказаться довольно интересным в сочетании с Rhino. –

+0

Его случай с камнем и твердым местом. Первый вопрос - знать серверную часть Javascript умирает/мертв. На что вы пишете новый код? По крайней мере, если вы делаете новый код в f #, вы получаете плавный переход, который может длиться 5-10 лет. Вы можете найти 50% вашего кода F # через 5 лет, и он будет быстрым и хорошо работать на 16 ядрах, которые у вас есть. Java-взаимодействие (то есть Rhino) с win32/Dcom/WMI будет проблематичным, но может дать вам решение, если вы решите эти проблемы. – ben

1

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

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

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

3

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

0

Jurrassic жив-движка и ногами.

С их Codeplex сайта:

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

 Смежные вопросы

  • Нет связанных вопросов^_^