2012-01-19 10 views
18

¿Qué es CaaS (Compilador como servicio) con respecto al proyecto Roslyn?¿Cuáles son los beneficios de usar el compilador de Roslyn como un servicio

¿De qué manera el uso de la función Roslyn mejora el rendimiento de una aplicación C# sobre el compilador actual C# 4.0?

¿Cuáles son las limitaciones/problemas conocidos en el Roslyn-CTP?

+0

No me queda claro qué es exactamente qué se refiere con "proceso de compilación". ¿Que quieres saber exactamente? – svick

+0

@svick, es decir, qué es exactamente CaaS aplicado a Roslyn y también algo de luz sobre CaaS en general. – VS1

+0

Consulte mi respuesta actualizada para eso. – svick

Respuesta

14

¿Qué significa exactamente Compilador como servicio (CaaS) en relación con Roslyn? Puedes ver a video where Anders Hejlsberg explains that (habla sobre Roslyn comienza a los 35 minutos). Básicamente, el viejo compilador de C# es una "caja negra": entra el código fuente, salen los ensamblajes compilados. Roslyn te da acceso dentro de esa caja. Eso significa que puede obtener información sintáctica y semántica sobre algún código, modificarlo y devolverlo al compilador para procesarlo más. Puede usar eso para hacer análisis de código, refactorización, generación de código y más.

Hay a long list of features that are not implemented in the current CTP on the Roslyn forum.

En cuanto al rendimiento, no creo que ese sea uno de los objetivos de Roslyn. Además, el compilador JIT es más importante para las optimizaciones de rendimiento que el compilador C#/VB. Y Roslyn reemplaza el compilador C#/VB, no el compilador JIT.

+0

Solo una actualización: según el rendimiento de microsoft es en realidad una de las "características" clave que ahora quieren en Roslyn http://blogs.msdn.com/b/csharpfaq/archive/2014/01/15/roslyn-performance-matt -gertz.aspx – skewl84

+0

@ skewl84 El rendimiento del compilador de Roslyn en sí, sí. Pero no el rendimiento del código compilado, que es sobre lo que se pregunta. – svick

+2

@svick .. Vaya perdón, me dejé llevar por la genialidad de "Roslyn" ... mi mal – skewl84

5

Una ventaja que tiene Roslyn es cuando su aplicación necesita una interfaz de scripting. Con Roslyn, puede compilar directamente el script como código fuente C# con las mismas posibilidades de programación que la fuente de la aplicación y usarlo directamente.

+0

¿te refieres después de compilar, la secuencia de comandos se convierte en código fuente C#? – VS1

+0

Sí, al usuario se le puede dar un cuadro de texto en el que puede crear un script en un lenguaje de alto nivel como VB.NET o C# y el código puede ser compilado y utilizado directamente por la aplicación ... –

+0

Puede hacerlo sin Roslyn . VS actualmente admite la compilación de una cadena de código fuente en el proyecto actual en tiempo de ejecución. – IamIC

7

El compilador como servicio (CaaS) con respecto a Roslyn solo significa que el proceso de compilación se divide en fragmentos con una API pública que le permite examinar los modelos sintácticos y semánticos construidos por el compilador durante la compilación. Los compiladores Roslyn C# y VB reemplazan completamente a los compiladores existentes, por lo que puede seguir utilizándolos de la misma forma que usa los compiladores de hoy (como ejecutables separados que convierten archivos de texto en ensamblados .net). También puede usar los compiladores como un compilador. biblioteca de API que lo ayudan a crear herramientas que hacen análisis más profundos o diferentes de códigos.

Roslyn no le da una ventaja de rendimiento específica sobre el uso de los compiladores existentes, porque cuando Roslyn los publique, serán uno y el mismo. Sin embargo, es posible utilizar roslyn para construir refactorizaciones de código especializadas que mejoren su código fuente.

2

Estoy entusiasmado con Roslyn porque permitirá una forma más fácil de implementar la Programación Orientada a Aspectos. Usando AOP, puede escribir "políticas" comunes y aplicarlas a través de su código en lugar de extenderlo por todo su código. Utilizando el compilador de Roslyn, podría tejer estas políticas en todo su código en tiempo de compilación, y mantener preocupaciones transversales por contaminar su código comercial.Si quieres algunos casos de uso, echa un vistazo a lo que PostSharp listas como sus casos de uso

http://www.sharpcrafters.com/

  • Políticas de registro
  • políticas de manejo de excepciones
  • sincronización de hilo automático (asegúrese de que las cosas correctas obtienen llamada en el hilo de la interfaz de usuario)
  • Auditoría automática de las llamadas a funciones
  • Generar automáticamente INotifyPropertyChan implementaciones de GED para propiedades automáticas
  • y más
+0

Pero, ¿no es el AST inmutable? –

Cuestiones relacionadas