`
liudunxu2
  • 浏览: 32212 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

nvelocity的单例用法

 
阅读更多
目前nvelocity的典型用法是

//创建一个模板引擎

VelocityEngine vltEngine=new VelocityEngine();

//文件型模板,还可以是assembly,则使用资源文件

vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER,”file”);

//模板存放目录

vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,Server.MapPath(“~/Template”));

vltEngine.Init();

这对于调用次数很少,或者只在程序初始化调用的情形是适合的,但是对于网站这种要多次调用模板的系统显得就不太合适。可以看一下VelocityEngine的init方法实现:

/*
* This is the primary initialization method in the Velocity
* Runtime. The systems that are setup/initialized here are
* as follows:
*
* <ul>
* <li>Logging System</li>
* <li>ResourceManager</li>
* <li>Parser Pool</li>
* <li>Global Cache</li>
* <li>Static Content Include System</li>
* <li>Velocimacro System</li>
* </ul>
*/
public virtual void init() {
lock(this) {
if (initialized == false) {
info("************************************************************** ");
info("Starting NVelocity v0.4.1");
info("RuntimeInstance initializing.");
initializeProperties();
initializeLogger();
initializeResourceManager();
initializeDirectives();
initializeParserPool();


/*
* initialize the VM Factory. It will use the properties
* accessable from Runtime, so keep this here at the end.
*/
vmFactory.initVelocimacro();


info("NVelocity successfully started.");


initialized = true;
}
}
}

这其中包含了大量的对配置文件的读取,解析工作,工作日志记录等操作。其中还用到了反射等比较耗费性能的操作。

通过下面测试代码

Stopwatch stw = new Stopwatch();

stw.Start();

for (int i = 0; i < 100; i++)

{

var vltEngine = new VelocityEngine();

vltEngine.Init();

}

stw.Stop();

Console.WriteLine(stw.ElapsedMilliseconds);

可以发现,运行时间为7833毫秒,这是不能接受的。

其实NVelocity提供了单例的方法供我们调用,可参考官网的介绍(http://velocity.apache.org/engine/devel/developer-guide.html#singleton):

This is the legacy pattern, where there is only one instance of the Velocity engine in the JVM (or web application, depending) that is shared by all. This is very convenient as it allows localized configuration and sharing of resources. For example, this is a very appropriate model for use in a Servlet 2.2+ compliant web application as each web application can have its own instance of Velocity, allowing that web application's servlet to share resources like templates, a logger, etc. The singleton is accessable via theorg.apache.velocity.app.Velocityclass, and and example of use:


这样,将NVelocity的初始化放到静态构造函数中执行,只执行一次,可以保证性能

分享到:
评论

相关推荐

    2017年NVelocity引擎各种用法

    2017年的这个资源集合提供了一系列NVelocity的使用案例,旨在帮助初学者快速理解和掌握其核心功能。 一、NVelocity基本概念 NVelocity引擎主要由两个核心组件构成:模板(Template)和上下文(Context)。模板是纯...

    Asp.Net之NVelocity的三种用法

    .Net之NVelocity的三种用法 using NVelocity; using NVelocity.App; using NVelocity.Runtime; VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file...

    NVelocity操作基础代码

    2. **上下文(Context)**:在NVelocity中,数据模型存储在上下文中,可以使用`context.Put("key", value)`方法添加键值对。然后在模板中,可以通过`$key`来访问这些值。 3. **模板解析与合并**:使用`VelocityEngine...

    NVelocity用法

    ### NVelocity用法详解 NVelocity 是一个 .NET 框架下的模板引擎,它提供了一种简单且高效的方式来处理动态内容的生成。基于 Java 的 Velocity 引擎,NVelocity 被设计用于 .NET 平台,允许开发人员利用其强大的...

    NVelocity中文文档以及NVelocity.dll 1.0(适用用.net环境下)

    NVelocity是Java模板引擎...要使用NVelocity模板技术需要学习VTL语言。网络上关于NVelocity的VTL语言介绍的比较少,不过没有关系,由于NVelocity是有Velocity移植过来的所以Velocity的VTL语言完全适用于NVelocity。

    .NET + NVelocity简单例子

    .NET框架是Microsoft开发的一种应用程序开发平台,它提供了一组丰富的服务...在学习过程中,不断尝试和实践是提升技能的关键,你可以通过修改`NVelocitySample`项目中的模板和代码,来深入理解和掌握NVelocity的用法。

    nvelocity_模板_NVelocity_C#_模板引擎_

    在C#环境中,开发者通常会使用NVelocity的API来初始化模板引擎,加载模板文件,并将数据模型放入上下文。以下是一个简单的使用示例: ```csharp VelocityEngine engine = new VelocityEngine(); engine.Init(); //...

    NVelocity语法 java or c#

    NVelocity支持对象的方法调用,例如`&lt;p&gt;Today is $date.format('yyyy-MM-dd')&lt;/p&gt;`,其中`date`是对象,`format`是其方法,参数 `'yyyy-MM-dd'` 定义了日期格式。 3. **条件语句**: `#{if}`, `#{elseif}`, 和 `#...

    NVelocity语法

    NVelocity支持多种输出方式,例如输出变量的值、对象的属性、方法等。输出结果可以是字符串、数字、布尔值等。 注意 * NVelocity是大小写不敏感的,但可以通过设置 `runtime.strict.math=true` 来启用严格解析模式...

    NVelocity.dll

    4. **渲染模板:** 使用`EngineFactory`初始化NVelocity引擎,然后调用`Evaluate`或`Merge`方法,传入上下文和模板,生成最终的输出。 **最佳实践与注意事项:** 1. **模板设计:** 保持模板简洁,尽量减少逻辑...

    Nvelocity真静态案例

    Nvelocity的使用通常包含以下几个步骤: 1. **安装Nvelocity库**:在VS2008中,你需要通过NuGet或手动下载NVelocity.dll添加到项目引用中。 2. **创建模板文件**:在项目中创建一个HTML模板文件,例如`template.vm...

    Velocity文档和NVelocity类库

    NVelocity.dll是NVelocity的核心库,包含了所有必要的类和方法,使得.NET开发者可以轻松地在他们的应用程序中集成模板引擎。 **Velocity模板语言基础** Velocity模板语言(VTL)是Velocity的核心,它是一种非编程...

    使用NVelocity实现的简单学员管理

    本项目“使用NVelocity实现的简单学员管理”显然利用了NVelocity的强大功能,构建了一个无需依赖WebForm的轻量级学员管理系统。WebForm通常涉及ASP.NET中的视图状态、生命周期和控件模型,而NVelocity则提供了一种...

    NVelocity简单实例+资源包

    下面我们将详细探讨NVelocity的基本概念、用法以及如何在实际项目中应用。 1. **基本概念** - **模板**:NVelocity的中心是模板,这是一种特殊的文本文件,其中包含了固定文本和可变内容。可变内容由${expression}...

    NVelocity1.1版及示例Demo(全源码)

    4. **自定义指令和方法**:NVelocity支持扩展,可以定义自己的指令或方法,增加更多定制化功能。 5. **性能优化**:NVelocity通过预编译模板来提升性能,将模板转化为.NET字节码,减少运行时解析的时间。 关于...

    nvelocity 模型适配

    1. **模板语言**:NVelocity使用自己的模板语言(VTL, Velocity Template Language),这是一种非脚本语言,设计简洁,易于学习和使用。VTL使得开发者能够通过简单的指令(如`#set`, `#if`, `#foreach`等)来控制...

    Nvelocity模板引擎

    为了在项目中使用NVelocity,你需要首先添加NVelocity.dll为项目引用,然后创建一个VelocityEngine实例,配置必要的属性如模板目录。接着,创建一个VelocityContext对象,将数据模型放入其中。最后,通过Engine实例...

    nvelocity 模版 例子

    本篇将详细介绍NVelocity模板及其使用示例。 1. **NVelocity简介** NVelocity旨在使开发者能够将显示逻辑与业务逻辑分离,它允许开发人员创建动态HTML、XML或任何文本格式的文档,而不涉及复杂的嵌入式脚本语言。...

    C# NVelocity模板调用实例

    C# NVelocity模板调用实例是使用开源的NVelocity模板引擎在C#环境中进行动态内容生成的一个典型应用。NVelocity是Apache软件基金会的项目,它提供了强大的模板语言,允许开发者将逻辑与展示分离,使代码更易于维护和...

    NVelocity使用文档

    本使用文档将深入探讨NVelocity的核心概念、安装与配置、语法特性、以及实际应用示例,帮助你全面掌握这一工具。 **一、NVelocity简介** NVelocity的主要功能是将静态模板与动态数据结合,生成定制化的输出。它允许...

Global site tag (gtag.js) - Google Analytics