RazorEngine vs RazorTemplates vs RazorMachine

时间:2013-08-15 13:34:57

标签: .net razor razorengine

有人可以解释

之间的区别,利弊

RazorEngine

RazorTemplates

RazorMachine

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

感谢。

3 个答案:

答案 0 :(得分:19)

我自己尝试了所有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 ms,0.1 ms

     

RazorTemplates - 1753 ms,0.1 ms

     

RazorMachine - 1608 ms,0.1 ms

答案 1 :(得分:0)

我使用RazorEngine进行电子邮件生成,效果很好。看看其他两个项目,它们看起来像RazorEngine一样 - 托管MS Razor。无论如何,可以为你的目的推荐后者。

答案 2 :(得分:-1)

使用,https://github.com/smsohan/MvcMailer它真的有助于制作基于MVC Razor的电子邮件。