使用Roslyn - 编译器作为服务有什么好处

时间:2012-01-19 06:09:35

标签: roslyn compiler-as-a-service

关于Roslyn项目,什么是CaaS(编译器即服务)?

使用Roslyn功能如何通过当前的C#4.0编译器提高C#应用程序的性能?

Roslyn-CTP中有哪些已知的限制/问题?

4 个答案:

答案 0 :(得分:15)

编译器即服务(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编译器。

答案 1 :(得分:8)

关于Roslyn的编译器即服务(CaaS)只是意味着编译过程被分解为具有公共API的片段,可以让您检查编译器在编译期间构建的语法和语义模型。 Roslyn C#和VB编译器完全取代了现有的编译器,因此您可以像今天使用编译器一样继续使用它们(作为将文本文件转换为.net程序集的单独可执行文件。)您也可以将编译器用作编译器。 API库,可帮助您构建可进行更深层次或不同类型代码分析的工具。

与使用现有的编译器相比,Roslyn没有为您提供特定的性能优势,因为当Roslyn发布时,它们将是同一个。但是,可以使用roslyn构建专门的代码重构来改进源代码。

答案 2 :(得分:5)

Roslyn的一个优点是当您的应用程序需要脚本界面时。使用Roslyn,您可以直接将脚本编译为C#源代码,具有与应用程序源相同的编程可能性并直接使用它。

答案 3 :(得分:2)

我对Roslyn感到很兴奋,因为它将允许更简单的方式来实现面向方面编程。使用AOP,您可以编写常用的“策略”并将其应用于代码中,而不是将其传播到所有代码中。使用Roslyn编译器,您可以在编译时在代码中编写这些策略,并保持横切关注以污染您的业务代码。如果您需要一些用例,请查看PostSharp列出的用例

http://www.sharpcrafters.com/

  • 记录政策
  • 异常处理政策
  • 自动线程同步(确保正确的事情得到 调用UI线程)
  • 自动审核函数调用
  • 自动为自动属性生成INotifyPropertyChanged实现
  • 以及其他