2012-01-19 3 views
18

Roslynプロジェクトに関するCaaS(Compiler As A Service)とは何ですか?Roslyn - コンパイラをサービスとして使用する利点は何ですか

Roslyn機能を使用すると、現在のC#4.0コンパイラよりもC#アプリケーションのパフォーマンスが向上しますか?

Roslyn-CTPの既知の制限事項は何ですか?

+0

"プロセスのコンパイル"とはどういう意味か分かりません。あなたは正確に何を知りたいですか? – svick

+0

@svickすなわち、CaaSはRoslynに適用され、CaaSには一般的にどのような光が当てられますか。 – VS1

+0

更新された回答を参照してください。 – svick

答えて

14

Roslynとの関係で、サービス(CaaS)の意味はどういう意味ですか? a video where Anders Hejlsberg explains thatを見ることができます(Roslynについては、35分で開始します)。基本的に、古いC#コンパイラは「ブラックボックス」です。ソースコードが入ってコンパイルされたアセンブリが出てきます。 Roslynはあなたにそのボックスの中のアクセス権を与えます。つまり、コードに関する構文的および意味的な情報を取得し、変更し、さらに処理するためにコンパイラに戻すことができます。これを使用して、コード解析、リファクタリング、コード生成などを行うことができます。

a long list of features that are not implemented in the current CTP on the Roslyn forumがあります。

パフォーマンスに関して、私はそれがRoslynの目標の1つだとは思わない。さらに、JITコンパイラは、C#/ VBコンパイラよりもパフォーマンスの最適化にとって重要です。 Roslynは、JITコンパイラではなく、C#/ VBコンパイラを置き換えます。

+0

ちょうどアップデート:マイクロソフトのパフォーマンスは、実際にRoslynで現在求めている重要な機能の1つです。http://blogs.msdn.com/b/csharpfaq/archive/2014/01/15/roslyn-performance-matt -gertz.aspx – skewl84

+0

@ skewl84 Roslynコンパイラ自体のパフォーマンス、はい。しかしコンパイルされたコードのパフォーマンスではありません。 – svick

+2

@スヴィック..おっとすごく "Roslyn"のawesomenessに夢中になりました..私の悪い – skewl84

5

アプリケーションがスクリプトインターフェイスを必要とする場合、Roslynが持つ利点の1つです。 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

Aspect Oriented Programmingを簡単に実装できるようになるので、私はRoslynに興奮しています。 AOPを使用すると、共通の "ポリシー"を記述して、コード全体に適用するのではなく、コード全体に適用することができます。 Roslynコンパイラを使用すると、コンパイル時にこれらのポリシーをコード全体に織り込むことができ、ビジネスコードの汚染を横断的に懸念することができます。あなたには、いくつかのユースケースをしたい場合は、その使用例

  • 例外処理の方針
  • 自動スレッド同期は( が正しいこと呼び出されることを確認してください

    http://www.sharpcrafters.com/

    • 記録ポリシーとして何PostSharpリストをチェックしてくださいUIスレッド上)
    • 関数呼び出しの自動監査
    • INotifyPropertyChanを自動的に生成します。自動プロパティのためのgedの実装
    • 以上
  • +0

    ASTは不変ではありませんか? –

    関連する問題