2012-01-19 86 views
18

關於Roslyn項目,CaaS(編譯器即服務)是什麼?使用Roslyn編譯器作爲服務有什麼好處

如何使用Roslyn功能提高C#應用程序在當前C#4.0編譯器上的性能?

Roslyn-CTP中已知的限制/問題是什麼?

+0

我不清楚你的意思是「編譯過程」。你想知道什麼? – svick

+0

@svick即什麼是應用於Roslyn CaaS,也是一般CaaS的一些光.. – VS1

+0

看到我更新的答案。 – svick

回答

14

編譯器即服務(CaaS)與Roslyn有什麼關係?你可以看a video where Anders Hejlsberg explains that(談論羅斯林在35分鐘開始)。基本上,舊的C#編譯器是一個「黑盒子」:源代碼進來了,編譯後的程序集出來了。 Roslyn讓你在那個盒子裏面進入。這意味着您可以獲取有關某些代碼的語法和語義信息,對其進行修改並將其返回給編譯器進一步處理。你可以用它來做代碼分析,重構,代碼生成等等。

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

關於表現,我不認爲這是Roslyn的目標之一。此外,JIT編譯器對於性能優化比C#/ VB編譯器更重要。而Roslyn取代了C#/ VB編譯器,而不是JIT編譯器。

+0

只是一個更新:根據微軟的性能實際上是他們現在想要在Roslyn中的關鍵「功能」之一http://blogs.msdn.com/b/csharpfaq/archive/2014/01/15/roslyn-performance-matt -gertz.aspx – skewl84

+0

@ skewl84 Roslyn編譯器本身的性能,是的。但不是編譯代碼的性能,這就是所問的問題。 – svick

+2

@svick ..哎呀對不起,我被「Roslyn」的迷人感染帶走了..我的不好 – skewl84

5

Roslyn擁有的一個優點是當您的應用程序需要腳本界面時。藉助Roslyn,您可以直接將腳本編譯爲C#源代碼,並具有與應用程序源相同的編程可能性並直接使用它。

+0

你的意思是編譯後,腳本是否轉換爲C#源代碼? – VS1

+0

是的,用戶可以被賦予一個文本框,他可以用VB.NET或C#等高級語言編寫腳本,並且該代碼可以直接編譯並由應用程序使用... –

+0

如果沒有Roslyn 。 VS當前支持在運行時將源代碼字符串編譯到當前項目中。 – IamIC

7

就Roslyn而言,編譯器即服務(CaaS)只是意味着編譯過程被分解爲一個公共API,可讓您檢查編譯器在編譯過程中編譯的語法和語義模型。 Roslyn C#和VB編譯器完全取代了現有的編譯器,因此您可以繼續像現在使用編譯器一樣使用它們(作爲將文本文件轉換爲.net程序集的單獨可執行文件)。您還可以使用編譯器作爲API庫,可幫助您構建可執行更深層次或不同類型代碼分析的工具。

與使用現有編譯器相比,Roslyn並沒有爲您提供特定的性能優勢,因爲當Roslyn發佈時它們將是同一個。但是,可以使用roslyn來構建改進源代碼的專用代碼重構。

2

我對Roslyn感到興奮,因爲它可以讓您更輕鬆地實現面向方面編程。使用AOP,您可以編寫通用的「策略」並將其應用於您的代碼,而不是將其分發到所有代碼中。使用Roslyn編譯器,您可以在編譯時在代碼中編織這些策略,並保留橫切關注點來污染您的業務代碼。如果你想要一些使用情況,檢查出什麼PostSharp列爲他們的使用情況

http://www.sharpcrafters.com/

  • 記錄政策
  • 異常處理政策
  • 自動線程同步(確保正確的事情變得 稱爲在UI線程上)
  • 自動審計函數調用
  • 自動生成INotifyPropertyChan用於自動屬性的ged實現
  • 和更多
+0

但是AST不是不可變的嗎? –

相關問題