2013-08-15 54 views
19

Ai đó có thể giải thích sự khác biệt, ưu/khuyết điểm giữaRazorEngine vs RazorTemplates vs RazorMachine

RazorEngine

RazorTemplates

RazorMachine

tôi cần phải chọn một cho thế hệ email là gì. Các yêu cầu khá bình thường: nhanh, dễ sử dụng. Có vẻ như tất cả chúng đều có tất cả các tính năng tôi cần nhưng vì tôi là người mới sử dụng Razor, điều này không rõ ràng đối với tôi, cái nào tốt hơn.

Cảm ơn.

Trả lời

17

Tôi đã tự mình thử tất cả 3 thư viện và tìm thấy một số khác biệt.

  • RazorEngine - cách dễ nhất và hoạt động tốt nhất trong số tất cả chúng, hỗ trợ bộ nhớ đệm theo mặc định.
  • RazorTemplates - không hỗ trợ một số chỉ thị Razor (ví dụ @model) và sử dụng rất nhiều loại dynamic. Có thể sử dụng các mẫu biên dịch trước.
  • RazorMachine - rất không thể đoán trước và với thiết kế lạ yêu cầu sử dụng một cá thể chung duy nhất thay vì một lớp tĩnh.

Đối với tôi, tôi đã chọn RazorEngine. Ngoài ra ở đây là mã làm thế nào để sử dụng các thư viện:

RazorEngine

string html = Razor.Parse(templateContent, model, templatePath); 

RazorTemplates

if (!_templatesCache.ContainsKey(templatePath)) 
{ 
    var compiledTemplate = Template.Compile(templateContent); 
    _templatesCache.Add(templatePath, compiledTemplate); 
} 

string html = _templatesCache[templatePath].Render(model); 

RazorMachine

private readonly Lazy<RazorMachine> _lazyRazorMachine = 
    new Lazy<RazorMachine>(() => new RazorMachine()); 
//... 

var rm = _lazyRazorMachine.Value; 
string html = rm.ExecuteContent(templateContent, model, null, true).Result; 
.210

Và một số xét nghiệm thực hiện, kiểm tra mỗi thư viện 2 lần trên cùng một mẫu, tất cả đều có một hiệu suất tương tự mà không có một sự khác biệt lớn:

RazorEngine - 1731 ms, 0,1 ms

RazorTemplates - 1753 ms , 0,1 ms

RazorMachine - 1608 ms, 0,1 ms

+0

Bạn đã sử dụng cùng một đối tượng của đối tượng RazorMachine qua nhiều thử nghiệm chưa? Đó là nghĩa vụ phải là một ứng dụng đơn cấp quản lý tất cả các bộ nhớ đệm và biên dịch trước: https://github.com/jlamfers/RazorMachine/wiki/Examples –

+1

@ Chris Hynes Có, nó bật ra vấn đề là vì tôi tạo ra một ví dụ mới mỗi lần, bây giờ tôi đã sửa mã. Mặc dù thực tế vẫn còn, thư viện hoạt động một cách rất bất ngờ. – vorrtex

+3

RazorEngine hoạt động như thế nào với các công cụ nâng cao như mô hình, lớp xem tùy chỉnh, bố cục, khung nhìn, v.v ...? RazorMachine, phức tạp như nó là, nó là điều duy nhất tôi đã tìm thấy rằng thực sự làm việc với các gam màu đầy đủ các tính năng Razor. Tôi đặt cùng một vài lớp làm việc với RazorMachine để cung cấp một môi trường giống như Razor đầy đủ với bố trí, khung nhìn, vv, nhưng chạy dựa trên các tệp tài nguyên nhúng. Điều này cho phép tôi sử dụng các mẫu giống nhau từ một dự án web, dự án dịch vụ hoặc những gì có bạn. –

0

Tôi sử dụng RazorEngine để tạo email và nó hoạt động tốt. Nhìn vào 2 dự án khác, có vẻ như họ làm giống như RazorEngine - hosting MS Razor. Dù sao, có thể đề nghị sau này cho mục đích của bạn.

0

Sử dụng, https://github.com/smsohan/MvcMailer nó thực sự hữu ích khi tạo email dựa trên MVC Razor.

+4

** Nhưng chỉ ** nếu bạn gửi cho bạn email từ ứng dụng Asp.net MVC của bạn. Rất tiếc là không thể sử dụng MvcMailer từ bên trong thư viện lớp học.Và trong một ứng dụng doanh nghiệp, các email thường được gửi từ lớp nghiệp vụ ... Nhưng đó là một thư viện đẹp mặc dù ...;) –