2012-01-19 32 views
18

CaaS (Compiler As A Service) liên quan đến dự án Roslyn là gì?Lợi ích của việc sử dụng Roslyn - compiler là một dịch vụ

Cách sử dụng tính năng Roslyn cải thiện hiệu suất của ứng dụng C# trên trình biên dịch C# 4.0 hiện tại?

Những hạn chế/vấn đề đã biết trong Roslyn-CTP là gì?

+0

Nó không rõ ràng với chính xác những gì bạn có ý nghĩa bởi "quá trình biên dịch". Bạn muốn biết chính xác những gì? – svick

+0

@svick tức là chính xác CaaS được áp dụng cho Roslyn và một số ánh sáng trên CaaS nói chung là .. – VS1

+0

Xem câu trả lời cập nhật của tôi cho điều đó. – svick

Trả lời

14

Trình biên dịch dưới dạng dịch vụ (CaaS) chính xác có ý nghĩa gì với Roslyn? Bạn có thể xem a video where Anders Hejlsberg explains that (nói về Roslyn bắt đầu sau 35 phút). Về cơ bản, trình biên dịch C# cũ là một "hộp đen": mã nguồn đi kèm, các assembly được biên dịch xuất hiện. Roslyn cho phép bạn truy cập bên trong hộp đó. Điều đó có nghĩa là bạn có thể nhận được thông tin cú pháp và ngữ nghĩa về một số mã, sửa đổi nó và đưa nó trở lại trình biên dịch để xử lý nó hơn nữa. Bạn có thể sử dụng điều đó để thực hiện phân tích mã, tái cấu trúc, tạo mã và hơn thế nữa.

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

Về hiệu suất, tôi không nghĩ đó là một trong những mục tiêu của Roslyn. Bên cạnh đó, trình biên dịch JIT quan trọng hơn cho việc tối ưu hóa hiệu năng hơn trình biên dịch C#/VB. Và Roslyn thay thế trình biên dịch C#/VB, không phải trình biên dịch JIT thứ.

+0

Chỉ cần cập nhật: Theo hiệu suất của microsoft thực sự là một trong những "tính năng" chính mà họ muốn có trong Roslyn http://blogs.msdn.com/b/csharpfaq/archive/2014/01/15/roslyn-performance-matt -gertz.aspx – skewl84

+0

@ skewl84 Hiệu suất của trình biên dịch Roslyn, đúng vậy. Nhưng không phải là hiệu suất của mã được biên dịch, đó là câu hỏi được đặt ra. – svick

+2

@svick .. Rất tiếc, tôi đã bị mang đi bởi sự khiếp sợ của "Roslyn" .. xấu của tôi – skewl84

5

Một lợi thế mà Roslyn có là khi ứng dụng của bạn cần giao diện tập lệnh. Với Roslyn, bạn có thể biên dịch trực tiếp tập lệnh dưới dạng mã nguồn C# với các khả năng lập trình giống như nguồn của ứng dụng và trực tiếp sử dụng nó.

+0

bạn có nghĩa là gì sau khi biên dịch, tập lệnh được chuyển thành mã nguồn C#? – VS1

+0

Có, người dùng có thể được cung cấp một hộp văn bản mà anh ta có thể viết bằng ngôn ngữ cấp cao như VB.NET hoặc C# và mã có thể được biên dịch và sử dụng trực tiếp bởi ứng dụng ... –

+0

Bạn có thể làm điều đó mà không cần Roslyn . VS hiện đang hỗ trợ biên dịch chuỗi mã nguồn thành dự án hiện tại khi chạy. – IamIC

7

Trình biên dịch như một dịch vụ (CaaS) liên quan đến Roslyn chỉ có nghĩa là quá trình biên dịch được chia nhỏ thành từng phần với API công cộng cho phép bạn kiểm tra các mô hình cú pháp và ngữ nghĩa được xây dựng bởi trình biên dịch trong quá trình biên dịch. Trình biên dịch Roslyn C# và VB hoàn toàn thay thế các trình biên dịch hiện có, vì vậy bạn có thể tiếp tục sử dụng chúng theo cùng cách bạn sử dụng các trình biên dịch ngày nay (như các tệp thực thi riêng lẻ chuyển đổi các tệp văn bản thành các hội đồng .net). thư viện API giúp bạn xây dựng các công cụ làm các loại phân tích mã sâu hơn hoặc khác nhau.

Roslyn không cung cấp cho bạn lợi thế hiệu suất cụ thể hơn bằng cách sử dụng các trình biên dịch hiện có vì khi Roslyn phát hành chúng sẽ là một và giống nhau. Tuy nhiên, bạn có thể sử dụng roslyn để xây dựng các phép tái cấu trúc mã chuyên biệt để cải thiện mã nguồn của bạn.

2

Tôi rất vui mừng về Roslyn vì nó sẽ cho phép một cách dễ dàng hơn để thực hiện Lập trình hướng Aspect. Sử dụng AOP, bạn có thể viết "các chính sách" phổ biến và áp dụng chúng trên mã của bạn thay vì trải rộng trên tất cả các mã của bạn. Sử dụng trình biên dịch Roslyn, bạn có thể dệt các chính sách này qua mã của bạn vào thời gian biên dịch và giữ các mối quan tâm chéo để gây ô nhiễm mã doanh nghiệp của bạn.Nếu bạn muốn có một số trường hợp sử dụng, kiểm tra những gì PostSharp danh sách như trường hợp sử dụng của họ

http://www.sharpcrafters.com/

  • Chính sách ghi
  • chính sách xử lý ngoại lệ
  • tự động đồng bộ hóa thread (đảm bảo những điều đúng đắn được gọi trên chuỗi giao diện người dùng)
  • Kiểm tra tự động các cuộc gọi chức năng
  • Tự động tạo INotifyPropertyChan triển khai ged cho các thuộc tính tự động
  • và nhiều hơn nữa
+0

Nhưng không phải là AST không thay đổi? –

Các vấn đề liên quan