Ответ 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 мс