25

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

与当前的 C# 4.0 编译器相比,使用 Roslyn 功能如何提高 C# 应用程序的性能?

Roslyn-CTP 中的已知限制/问题是什么?

4

4 回答 4

18

与 Roslyn 相关的编译器即服务 (CaaS) 究竟意味着什么?您可以观看Anders Hejlsberg 解释的视频(谈论 Roslyn 从 35 分钟开始)。基本上,旧的 C# 编译器是一个“黑匣子”:源代码进来,编译后的程序集出来。Roslyn 让你进入那个盒子。这意味着您可以获得有关某些代码的句法和语义信息,对其进行修改并将其返回给编译器以进一步处理它。您可以使用它来进行代码分析、重构、代码生成等。

Roslyn 论坛上的当前 CTP 中有一长串未实现的功能

关于性能,我认为这不是 Roslyn 的目标。此外,JIT 编译器在性能优化方面比 C#/VB 编译器更重要。Roslyn 替换了 C#/VB 编译器,而不是 JIT 编译器。

于 2012-01-19T11:28:19.893 回答
9

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

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

于 2012-01-23T22:34:12.167 回答
6

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

于 2012-01-19T06:54:53.663 回答
3

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

http://www.sharpcrafters.com/

  • 日志记录策略
  • 异常处理策略
  • 自动线程同步(确保在 UI 线程上调用正确的东西)
  • 函数调用的自动审计
  • 为自动属性自动生成 INotifyPropertyChanged 实现
  • 和更多
于 2012-08-11T18:47:04.470 回答