8

Desde MS appears to have killed Managed JavaScript in the latest DLR para ambos lados del servidor (ASP.NET Futures) y del lado del cliente (Silverlight), alguien ha utilizado con éxito API no obsoletas para permitir la creación de scripts de sus objetos de aplicación con JScript.NET y/o puede explicar cómo hacer eso? Una solución Mono/JScript también podría ser aceptable, si es estable y cumple con los requisitos a continuación.¿Se puede usar JScript.NET para crear una secuencia de comandos de una aplicación .NET?

Estamos interesados ​​en actualizar un host de scripts que utiliza el motor Microsoft JScript y las API de ActiveScript a algo con más rendimiento y una capacidad de ampliación más sencilla. Tenemos más de 16,000 scripts del lado del servidor que pesan más de 42MB de fuente, por lo que no es posible volver a escribir en otro lenguaje de scripting.

Nuestros requisitos específicos son:

  • Noteably mejor rendimiento que el motor de Microsoft JScript (ActiveScript)
    • Mejor rendimiento en tiempo de ejecución y/o
    • retención de guiones pre-analizados o recopilados (Don 't reparse en cada ejecución)
    • Consumo de memoria inferior o igual
  • completa ECMA-262 ECMAScript compatibilidad
    • un poco de portabilidad se puede tolerar
  • La inyección de objetos personalizados en el espacio de nombres guión
    • .NET objetos (no es un requisito duro)
    • Objetos COM o objetos COM envueltos enNET
  • de instancias de objetos COM desde el guión
    • a la "nueva ActiveXObject (progid)" dada
    • Baja prioridad del precedente
  • Incluir archivos
    • Pre- carga de "secuencias de comandos auxiliares" en un contexto de ejecución de secuencia de comandos
    • Un "incluir" función o declaración (fácil de crear, teniendo en cuenta lo anterior)
  • Soporte para el código en situación de alcance mundial
    • ejecución de código del alcance mundial
    • retención de los valores inicializado a nivel mundial
    • alcance
    • Extracción de valores desde el ámbito global
    • inyección y la sustitución de los valores en el ámbito global
  • llamada de funciones de script definido por
    • con parámetros
    • y con acceso al ámbito mundial previamente inicializado
  • -nivel de depuración Fuente
  • apoyo comercial o de código abierto
  • No- API obsoletas
+1

¿Microsoft seguirá admitiendo Managed JScript en Silverlight? – Nosredna

+1

No, también se ha ido de Silverlight. Ver esta respuesta: http://stackoverflow.com/questions/775339/where-can-you-download-managed-jscript-for-the-dlr/886173#886173 –

+1

Eso es bastante impactante. – Nosredna

Respuesta

2

Tarde o temprano, me imagino que alguien lo hará escribe un DLR Javascript. Sé que no es muy conveniente para ti en este momento, pero tal vez podrías comenzar el proyecto. Sospecho que tendría un mejor análisis de costo/beneficio para usar JScript.NET.

1

Si alejarse de .NET y Microsoft está bien para usted, entonces debe probar Rhino de Mozilla. Es una implementación de código abierto de JavaScript escrita completamente en Java. Muchas de las modernas bibliotecas js del lado del servidor se dirigen a esta plataforma.

+0

@thatismatt - ¿Ha usado Rhino con un puente de Java a COM? ¿Puedes comentar sobre el rendimiento, la facilidad de integración con el código C++, etc.? –

+0

Me temo que no, lo siento, pero no soy de mucha ayuda, ¡déjame saber cómo te va! – thatismatt

0

El uso de Com interop significa que está limitado a una solución de MS Java y Opensource quieren la menor cantidad posible de hacer con ella.

No veo ninguna solución que admita todos sus requisitos o abandona todas las cosas de COM/.NET y va a Java (Rhino)/Linux/Open source o cuestiona el uso de Javascript como su lenguaje de servidor incluso en Linux mundo usamos PHP/Python/Ruby más en el servidor si no podemos ejecutar Java. No verá grandes ganancias de rendimiento con el script Java, ya que el idioma es la principal barrera.

No cuento con que la gente escriba un nuevo DLR ya que el script Java del servidor está muriendo rápidamente.

Considerando que desea rendimiento, ¿qué pasa con F #, Microsoft mantendrá el motor Jscript soportado durante al menos 5 años, dándole tiempo para crear cosas nuevas en F # mientras migra lentamente el código.

+0

El problema con la plataforma multiplataforma es que necesitamos acceso a más de 80 llamadas Win32 RPC más una media docena de objetos DCOM, como WSUS y WMI. Me encanta F # y la utilizo para crear prototipos, utilidades internas y administración de catálogos (en casa para la tienda en línea de mi esposa), pero como dije, tenemos más de 16,000 guiones escritos en JS en el lado del servidor y no podemos pagar el costo de conversión a otro idioma. Dicho esto, hemos analizado http: //jcifs.samba.org, que podría resultar bastante interesante en combinación con Rhino. –

+0

Es un caso de rock y hardplace ... La primera pregunta es saber del lado del servidor Javascript está muriendo/muerto ¿En qué escribes el nuevo código? Al menos si hace un código nuevo en f #, obtiene una migración sin problemas que puede durar de 5 a 10 años. Puede encontrar que el 50% de su código es F # en 5 años y será rápido y funcionará bien en 16 núcleos que tenga en ese momento. La interoperabilidad de Java (es decir, Rhino) con win32/Dcom/WMI sería problemática, pero puede brindarle una solución si resuelve esos problemas. – ben

1

He utilizado CSScript.net, ya que le permitirá ejecutar C# como plataforma de scripting. Desde el sitio:

CS-Script combina el poder y la riqueza de C# y FCL con el flexibilidad de un sistema de scripting. CS-Script puede ser útil para los administradores de redes de sistemas y , desarrolladores y probadores . Para cualquiera que necesite una automatización para resolver una variedad de tareas de programación .

CS Script cumple todas las condiciones que usted ha establecido. Lo he usado en producción como sustituto de Boo. Ha funcionado muy bien. Puede verlo en acción here.

3

Respondí una pregunta similar here. Eche un vistazo a IronJS, una implementación de JavaScript en F # ejecutándose en el DLR.

0

El Jurrassic -Motor está vivo y coleando.

De su sitio CodePlex:

  • Soporta todas las funciones de ECMAScript 3 y ECMAScript 5, incluyendo el modo estricto ES5
  • bien probado - pasa más de cinco mil pruebas unitarias (con más de treinta mil afirma)
  • API simple pero potente
  • Compila JavaScript en .NET bytecode (CIL); no un intérprete
  • desplegado como un ensamblado de .NET sola (sin código nativo)
  • soporte básico para la depuración integrada dentro de Visual Studio
  • utiliza la generación de código de peso ligero, por lo que el código generado es totalmente basura recogida
  • Probado en .NET 3.5, .NET 4 y Silverlight
Cuestiones relacionadas