繁体   English   中英

NVelocity项目已经死了吗? 还有替代品吗?

[英]Is the NVelocity project dead? Are there alternatives?

我正在寻找.NET / C#的模板引擎来在我的应用程序中生成电子邮件通知。 我过去读过有关NVelocity的内容并认为它符合我的需求,但似乎这个项目已经死了。

您是否仍然建议将NVelocity用于此目的,或者您可以建议任何替代方案吗?

注意:我发现了一些其他模板引擎,但这些引擎主要是ASP.NET MVC(Brail,NHaml等)的“视图引擎”。 但我认为这些不是我想要的。

Castle Project分叉了该项目并进行了维护,最近于2010年12月10日发布了1.1.1版本。更多详细信息可以在Castle Projects NVelocity网站上找到 他们还对其进行了一些改进,其细节可以在他们的NVelocity改进页面找到。 该项目看起来已经死了,在MonoRail 3中,它已经被基于Razor的Castle Blade所取代。

如果您正在寻找替代方案,那么我建议使用ASP.Net MVC3或Spark View EngineRazor视图 引擎

开源项目RazorEngine允许您使用ASP.Net MVC或Web页面之外的Razor View引擎,以便您可以使用它来生成模板化电子邮件。

由于NVelocity似乎已经死亡(再次),我建议使用DotLiquid 目前还不能说太多,因为我还在评估它,但它确实看起来很有前途(并建立MonoTouch / MonoDroid库,因为我很关心)。

更新 [2012年6月11日]

将“安全”类/集合作为模型的约束可能是头痛的主要原因。 在评估此引擎时,您可能希望从这一点开始。

Codeplex上有项目。

http://www.codeplex.com/NVelocity

项目描述:NVelocity是一个非常有道理的开源java模板工程框架的端口,速度为1.6。 NVelocity是一个用C#编写的纯.Net库,目前面向Framework 3.5版。

签入的初始源代码似乎是直接来自svn.castleproject.org。

创建CodePlex项目的人(用户名:TerryLiang)也在8月份从nLucene创建了一个。 对于那个项目,从那以后他已经制作了大约50个签到,所以也许他正计划在该项目上做一些认真的工作。

除了很难找到最新版本的项目之外,NVelocity没有任何问题。 Google通常会将旧的sourceforge链接作为第一个匹配,而codeplex链接是下一个最常见的链接。 得到它的地方是来自Castle的Pervez Choudhury提到的。 我们在工作中使用Castle版本的NVelocity,它很棒。

自从第一次提出这个问题以来,这几年出现了另一种选择,那就是微软的T4。 大多数人认为T4是预编译生成器,因为它是第一次发布的,但实际上你现在可以用它来生成生成器类并在运行时进行动态生成。 它被称为预处理的T4模板,您可以在这里阅读更多相关信息。 它的优点是它已经内置在Visual Studio中,因此您无需执行任何特殊操作即可。

您可以使用brail或nhaml standalone来生成HTML电子邮件。

nhaml的核心(不确定brail ??)没有引用MVC或ASP。

我使用nhaml来生成XPS文档,以便从win表单应用程序进行打印和报告。

如果它必须是文本或许http://www.stringtemplate.org/

这里有一个类似的问题如何使用Brail作为独立的通用模板引擎(如NVelocity)?

我没有看到不使用NVelocity(Castle项目分叉)的理由。 它是稳定的,您的特定需求(电子邮件模板)可能没有使用NVelocity的其他项目那么复杂,所以您不应该期待任何问题。

我无法为DotLiquid提供 Sorin,所以只想添加我的评论 - 它似乎是一个积极开发的优秀平台。

并且它们具有trunk版本中的功能(不是在发布的dll中),如果以这种方式注册,则可以使用pocos而无需从任何基类继承:

foreach (var type in {Assembly}.GetTypes())
    Template.RegisterSafeType(type, type.GetProperties().Select(p => p.Name).ToArray());

这解决了索林提到的头痛问题。

StringTemplate也是一件好事,但是过于严格和限制,模板太纯粹的视图,使用起来很不实际......

我同意西蒙的意见; http://www.stringtemplate.org/非常出色,设计精良,并且得到了积极的维护。

您可以使用IKVM将其转换为程序集,从而在.Net中使用原始(且经常更新)的Velocity Java版本。 我用这种方式成功地使用了速度来生成.Net下的代码。 你也可以看一下StringTemplate。 有StringTemplate的java和C#版本。 你可以在这里找到一个关于在.Net中使用Velocity的快速迷你教程。 我建议仔细看看StringTemplate ,因为我认为它是一个更干净的模板引擎(我是最近的转换)。

我建议使用XSLT进行模板化。 是的,它需要更多的时间来学习技术,但是你有比其他任何东西更灵活的模板解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM