Подтвердить что ты не робот

RazorEngine vs RazorTemplates против RazorMachine

Может кто-нибудь объяснить, в чем отличия, плюсы/минусы между

RazorEngine

RazorTemplates

RazorMachine

Мне нужно выбрать один для генерации электронной почты. Требования довольно обычны: быстрая, удобная в использовании. Кажется, что у всех из них есть все возможности, которые мне нужны, но поскольку я новичок Razor, мне не совсем понятно, что лучше.

Спасибо.

4b9b3361

Ответ 1

Я сам пробовал все 3 библиотеки и обнаружил несколько отличий.

  • RazorEngine - самый простой и лучший из всех, поддерживает кеширование по умолчанию.
  • RazorTemplates - не поддерживает некоторые директивы Razor (например, @model) и использует множество типов dynamic. Можно использовать предварительно скомпилированные шаблоны.
  • RazorMachine - очень непредсказуемый и со странным дизайном, который требует использования глобального одиночного экземпляра вместо статического класса.

Что касается меня, я выбрал RazorEngine. Также здесь приведен код использования этих библиотек:

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;

И некоторые тесты производительности, протестировали каждую библиотеку 2 раза на одном шаблоне, все они имеют схожую производительность без большой разницы:

RazorEngine - 1731 мс, 0,1 мс

RazorTemplates - 1753 мс, 0,1 мс

RazorMachine - 1608 мс, 0,1 мс

Ответ 2

Я использую RazorEngine для генерации электронной почты, и он работает отлично. Глядя на другие 2 проекта, похоже, они делают то же самое, что и RazorEngine - хостинг MS Razor. В любом случае, вы можете рекомендовать последний для своей цели.

Ответ 3

Используйте https://github.com/smsohan/MvcMailer, это действительно помогает создавать письма на основе MVC Razor.