2010-10-22 9 views
11

qué usan las personas para las secuencias de comandos en las aplicaciones .net. Nueva pregunta después de la caída de MS IronPython.net scripting languages ​​

IP solía ser mi favorito; entonces Lua

¿Qué quiero decir con scripting. Quiero decir que tengo una gran herramienta de administración de sistemas que permite a los usuarios agregar fragmentos de inteligencia, esto incluye ensamblajes y scripts. ¿Qué idioma debo usar para los scripts? Así que necesito un intérprete integrable, prefably uno que integra bien con .net

El anuncio MS está aquí

http://www.theregister.co.uk/2010/10/22/microsoft_kills_dynamic_languages_projects/

F # - varias personas han dicho F #. ¿Es F # utilizable como lenguaje de scripts incorporado?

EDIT: Mi nuevo mejor amigo para esto es javascript; hay varias implementaciones de calidad para .NET

+0

¿Quiere decir para la evaluación dinámica en tiempo de ejecución desde dentro de una aplicación compilada estáticamente? ¿O solo para scripting de propósito general? –

+0

¿Podría aclarar su pregunta? ¿Desea agregar scripting-support a su aplicación? – Bobby

+3

¿De dónde sacaste que Microsoft retira IronPython? – abatishchev

Respuesta

9

Powershell se .net shell scripting nativo de red que puede ser importado a su aplicación. Con el paso del tiempo he llegado a utilizarlo para hacer todo, desde la prueba unitaria hasta la extensibilidad. También se envía en todas las versiones de Windows después de las 7, por lo que no debe preocuparse por instalarlo, y se están realizando esfuerzos para desarrollar una versión mono.

+0

Además, Powershell le permite crear una instancia del objeto de la clase .NET en su secuencia de comandos y usar sus funciones, etc. –

+0

He analizado esto antes, pero siempre sentí que la PS era demasiado parecida a una concha (y el alojamiento era difícil). ¿Tiene algún indicador de buenos sitios sobre cómo incrustar poweshell – pm100

+0

? Para sitios sobre cómo hospedar el motor de powershell, pruebe Google (http://www.google.com/search?q=hosting+powershell). El alojamiento definitivamente no es difícil. Si no desea ofrecer un host de PS formal, también puede bifurcar powershell.exe y enviar comentarios a él, recopilando el resultado de texto. Lo hago para un motor de finalización de C# y funciona bien. No estoy seguro de lo que quiere decir con "PS es demasiado similar a una concha". Es un caparazón. La pregunta es, ¿satisface su requisito de extensibilidad en su escenario particular? Si es un caparazón es probablemente irrelevante. – Cheeso

6

Estamos usando C# la mayoría de las veces para la creación de scripts. La compilación y la integración sobre la marcha es posible dentro de las aplicaciones propias. Incluso como un reemplazo para scripts puros es factible de una manera agradable, eche un vistazo a http://www.csscript.net/

Después de un tiempo, me encontré con IronPython. Si tuviera que volver a hacer las secuencias de comandos en mi aplicación, lo optaría, ya que demuestra una mayor flexibilidad en el tiempo de ejecución. No hay necesidad de tedioso manejo de AppDomain entre otros aspectos.

2

Tomamos una decisión hace casi 2 años y los finalistas fueron Python y Lua. En ese momento, IronPython obtuvo el visto bueno porque era compatible con MS. VBA quit getting licensed a nuevos clientes en 2007, VSTA parece ser mucho más barato, pero a $ 50/asiento (con un compromiso anual en el rango de 5 a 6 dígitos bajo) todavía está más allá de lo que el jefe aceptará.

Parece que tenemos que volver a evaluar nuestra decisión de lenguaje de scripting. La aplicación actual en la que estamos usando esto, es una licencia para mediados de 5 dígitos y automatiza varios de nuestros otros productos de software (que se venden a mediados de 3 a 4 dígitos bajos)

Probablemente los libros que son más aplicable para la creación de scripts dentro de las aplicaciones son los libros escritos para desarrolladores de juegos, por lo general con títulos como "AI para juegos"."Una gran cantidad de otras empresas que hacen dinero software de la venta de haber tomado la decisión de elegir lua o python por algunas razones dignas, y que podría ser útil para leer algunos detalles que explican por qué fueron esas rutas

0

Si necesita una conexión DSL personalizada que puede escribir sus propios usando el DLR http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

El generador de analizadores sintácticos más poular que sé es antlr que puede generar analizadores .NET http://www.antlr.org/

Para los scripts de validación y de configuración simple que puede utilizar lenguaje de expresión de Spring.NET: http://www.springframework.net/doc-latest/reference/html/expressions.html

3

IDE Scripting (creo VBA):

Herramientas de Visual Studio para Aplicaciones (VSTA) que admite VB y C#. Es la solución de Microsoft compatible actual y está destinada a reemplazar VSA y VBA. Lo descuidaron por un tiempo pero lo volvieron a tomar. VSTA es como VBA y expone un IDE. El fin utilizado deberá instalar VSTA en su máquina, que es gratis.

http://www.microsoft.com/en-us/download/details.aspx?id=38806

recta de secuencias de comandos de texto:

PowerShell

http://blogs.msdn.com/b/kebab/archive/2014/04/28/executing-powershell-scripts-from-c.aspx

Roslyn (esto se reemplacen CodeDom pero todavía está en el estado de vista previa)

https://roslyn.codeplex.com/

http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx

CodeDom (un poco más pesado que es posible que desee)

http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx

http://www.codeproject.com/Articles/12852/Compile-and-Run-VB-NET-Code-using-the-CodeDom

http://www.codeproject.com/Articles/3289/Dynamic-Code-Generation-and-Code-Compilation

DynamicMethod (me gusta esto porque puedo definir el código como una función con parámetros específicos y devoluciones. Se estrecha secuencias de comandos para exactamente lo que quiere)

http://msdn.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.aspx

+0

Como nota al margen, si desea permitir la extensibilidad en comparación con el scripting de asiento de los pantalones, considere un marco de complemento como MEF. Entonces, el usuario final puede desarrollar complementos independientemente de su aplicación y podría usar f #, vb, C#, java, etc. – VoteCoffee

+0

CodeDom? Roslyn? Estos no son lenguajes de scripting. Estas son herramientas que puede usar para construir un lenguaje de scripting. –

+0

Puede crear su propio lenguaje de scripting, pero también hay mucho soporte para usar los idiomas existentes. Mira este ejemplo: http://www.jayway.com/2015/05/09/using-roslyn-to-build-a-simple-c-interactive-script-engine/ – VoteCoffee