RazorEngine vs RazorTemplates vs RazorMachine

Ser*_*gii 20 .net razor razorengine

有人可以解释它们之间的区别,利弊

RazorEngine

RazorTemplates

RazorMachine

我需要选择一个用于生成电子邮件.这些要求很常见:快速,易用.似乎所有这些都具有我需要的所有功能但是因为我是Razor新手,我不太清楚哪一个更好.

谢谢.

vor*_*olf 20

我自己尝试了所有3个库,发现了一些差异.

  • RazorEngine是最简单的,在所有这些中效果最好,默认支持缓存.
  • RazorTemplates - 不支持某些Razor指令(例如@model)并使用许多dynamic类型.可以使用预编译模板.
  • RazorMachine - 非常难以预测,并且需要使用全局单个实例而不是静态类的奇怪设计.

至于我,我选择了RazorEngine.这里还有代码如何使用这些库:

RazorEngine

string html = Razor.Parse(templateContent, model, templatePath);
Run Code Online (Sandbox Code Playgroud)

RazorTemplates

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

string html = _templatesCache[templatePath].Render(model);
Run Code Online (Sandbox Code Playgroud)

RazorMachine

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

var rm = _lazyRazorMachine.Value;
string html = rm.ExecuteContent(templateContent, model, null, true).Result;
Run Code Online (Sandbox Code Playgroud)

还有一些性能测试,在同一个模板上对每个库进行了2次测试,所有这些都具有相似的性能,没有太大区别:

RazorEngine - 1731 ms,0.1 ms

RazorTemplates - 1753 ms,0.1 ms

RazorMachine - 1608 ms,0.1 ms

  • RazorEngine如何使用模型,自定义视图类,布局,视图等高级内容?RazorMachine虽然很复杂,但它是我发现的唯一可以与Razor全部功能配合使用的东西.我整理了几个与RazorMachine一起工作的类,提供了一个完整的Razor环境,包括布局,视图启动等,但是基于嵌入式资源文件运行.这让我可以使用Web项目,服务项目或您拥有的相同模板. (3认同)