Каковы преимущества использования Roslyn - компилятора в качестве сервиса - PullRequest
19 голосов
/ 19 января 2012

Что такое CaaS (Compiler As A Service) в отношении проекта Roslyn?

Как использование функции Roslyn улучшает производительность приложения C # по сравнению с текущим компилятором C # 4.0?

Каковы известные ограничения / проблемы в Roslyn-CTP?

Ответы [ 4 ]

15 голосов
/ 19 января 2012

Что конкретно означает «Компилятор как услуга» (CaaS) по отношению к Roslyn?Вы можете посмотреть видео, где Андерс Хейлсберг объясняет, что (разговор о Рослине начинается через 35 минут).По сути, старый компилятор C # - это «черный ящик»: приходит исходный код, выходят скомпилированные сборки.Рослин дает вам доступ внутри этой коробки.Это означает, что вы можете получить синтаксическую и семантическую информацию о некотором коде, изменить его и вернуть его компилятору для дальнейшей обработки.Вы можете использовать это для анализа кода, рефакторинга, генерации кода и т. Д.

Существует длинный список функций, которые не реализованы в текущей CTP на форуме Roslyn .

Что касается производительности, я не думаю, что это одна из целей Roslyn.Кроме того, JIT-компилятор важнее для оптимизации производительности, чем C # / VB-компилятор.И Roslyn заменяет компилятор C # / VB, а не JIT-компилятор.

8 голосов
/ 24 января 2012

Компилятор как услуга (CaaS) по отношению к Roslyn просто означает, что процесс компиляции разбит на куски с помощью открытого API, который позволяет исследовать синтаксические и семантические модели, созданные компилятором во время компиляции. Компиляторы Roslyn C # и VB полностью заменяют существующие компиляторы, поэтому вы можете продолжать использовать их так же, как сегодня используете компиляторы (как отдельные исполняемые файлы, преобразующие текстовые файлы в сборки .net). Вы также можете использовать компиляторы библиотека API-интерфейсов, помогающая создавать инструменты для более глубокого анализа кода.

Roslyn не дает вам конкретного преимущества в производительности по сравнению с использованием существующих компиляторов, потому что когда Roslyn выпускает, они будут одинаковыми. Тем не менее, можно использовать Roslyn для создания специализированных рефакторингов кода, которые улучшают ваш исходный код.

5 голосов
/ 19 января 2012

Одним из преимуществ Roslyn является то, что вашему приложению необходим интерфейс сценариев. С Roslyn вы можете напрямую скомпилировать скрипт в виде исходного кода C # с теми же возможностями программирования, что и в исходном приложении, и напрямую использовать его.

2 голосов
/ 11 августа 2012

Я взволнован Рослином, потому что он позволит упростить реализацию Аспектно-ориентированного программирования. Используя AOP, вы можете писать общие «политики» и применять их по всему коду, а не распространять их по всему коду. Используя компилятор Roslyn, вы могли бы внедрить эти политики в свой код во время компиляции, и сохранить сквозные проблемы загрязнения вашего бизнес-кода. Если вам нужны некоторые варианты использования, посмотрите, что PostSharp перечисляет в качестве вариантов их использования

http://www.sharpcrafters.com/

  • Правила ведения журнала
  • Правила обработки исключений
  • Автоматическая синхронизация потоков (убедитесь, что все правильно вызывается в потоке пользовательского интерфейса)
  • Автоматический аудит вызовов функций
  • Автоматически создавать реализации INotifyPropertyChanged для автоматических свойств
  • и более
...