2012-01-19 6 views
18

Che cos'è CaaS (Compiler As A Service) per quanto riguarda il progetto Roslyn?Quali sono i vantaggi dell'utilizzo di Roslyn - compiler come servizio

In che modo l'utilizzo della funzione Roslyn migliora le prestazioni di un'applicazione C# rispetto all'attuale compilatore C# 4.0?

Quali sono le limitazioni/problemi noti in Roslyn-CTP?

+0

Non è chiaro per me che cosa esattamente cosa si intende per "processo di compilazione". Cosa vuoi sapere esattamente? – svick

+0

@svick vale a dire che cosa è esattamente CaaS applicato a Roslyn e anche una certa luce su CaaS in generale. – VS1

+0

Vedere la mia risposta aggiornata per quello. – svick

risposta

14

Che cosa significa esattamente Compilatore come servizio (CaaS) in relazione a Roslyn? È possibile guardare a video where Anders Hejlsberg explains that (parlare di Roslyn inizia a 35 minuti). Fondamentalmente, il vecchio compilatore C# è una "scatola nera": arriva il codice sorgente, gli assembly compilati escono. Roslyn ti dà accesso all'interno di quella casella. Ciò significa che è possibile ottenere informazioni sintattiche e semantiche su alcuni codici, modificarli e restituirli al compilatore per elaborarli ulteriormente. Puoi usarlo per fare analisi del codice, refactoring, generazione di codice e altro.

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

Per quanto riguarda le prestazioni, non penso che sia uno degli obiettivi di Roslyn. Inoltre, il compilatore JIT è più importante per le ottimizzazioni delle prestazioni rispetto al compilatore C#/VB. E Roslyn sostituisce il compilatore C#/VB, non il compilatore JIT.

+0

Solo un aggiornamento: Come per le prestazioni Microsoft, in realtà è una delle "funzionalità" chiave che ora desiderano in Roslyn http://blogs.msdn.com/b/csharpfaq/archive/2014/01/15/roslyn-performance-matt -gertz.aspx – skewl84

+0

@ skewl84 Le prestazioni del compilatore di Roslyn stesso, sì. Ma non le prestazioni del codice compilato, che è ciò che la domanda ha posto. – svick

+2

@svick .. Oops scusa sono stato portato via dalla suggestione di "Roslyn" .. il mio male – skewl84

5

Un vantaggio di Roslyn è quando l'applicazione richiede un'interfaccia di scripting. Con Roslyn, puoi compilare direttamente lo script come codice sorgente C# con le stesse possibilità di programmazione della sorgente dell'applicazione e utilizzarlo direttamente.

+0

vuoi dire dopo la compilazione, lo script viene convertito in codice sorgente C#? – VS1

+0

Sì, l'utente può avere una casella di testo in cui può scrivere in un linguaggio di alto livello come VB.NET o C# e il codice può essere direttamente compilato e utilizzato dall'applicazione ... –

+0

È possibile farlo senza Roslyn . VS attualmente supporta la compilazione di una stringa del codice sorgente nel progetto corrente in fase di runtime. – IamIC

7

Il compilatore come servizio (CaaS) rispetto a Roslyn significa solo che il processo di compilazione è suddiviso in parti con un'API pubblica che consente di esaminare i modelli sintattici e semantici creati dal compilatore durante la compilazione. I compilatori Roslyn C# e VB sostituiscono completamente i compilatori esistenti, quindi è possibile continuare a utilizzarli nello stesso modo in cui si utilizzano i compilatori oggi (come eseguibili separati che convertono i file di testo in .net assembly). È inoltre possibile utilizzare i compilatori come libreria di API che consentono di creare strumenti che eseguono analisi di codice più approfondite o diverse.

Roslyn non offre all'utente vantaggi specifici in termini di prestazioni rispetto all'uso dei compilatori esistenti, in quanto, quando Roslyn lo rilascia, sarà lo stesso. Tuttavia, è possibile utilizzare roslyn per creare refactoring specifici del codice che migliorano il codice sorgente.

2

Sono entusiasta di Roslyn perché consentirà un modo più semplice per implementare la programmazione orientata agli aspetti. Utilizzando AOP, puoi scrivere "politiche" comuni e applicarle attraverso il tuo codice anziché distribuirlo su tutto il tuo codice. Usando il compilatore di Roslyn potresti tessere queste policy attraverso il tuo codice in fase di compilazione e mantenere i dubbi trasversali per l'inquinamento del tuo codice aziendale.Se si desidera che alcuni casi di utilizzo, verificare che cosa PostSharp liste come i loro casi d'uso

http://www.sharpcrafters.com/

  • Norme di registrazione
  • politiche di gestione delle eccezioni
  • sincronizzazione dei thread automatico (assicurarsi che le cose giuste ottengono chiamato sul thread dell'interfaccia utente)
  • Controllo automatico delle chiamate di funzioni
  • Genera automaticamente INotifyPropertyChan implementazioni Ged per immobili automatici
  • più
+0

Ma l'AST non è immutabile? –