本次StringTempletReplet.dll组件更新了一些算法。主要是更依赖内存里静态变量内的数值。做到了在不改变模板的条件下。缓存模板,缓存委托,缓存标签解析数据。但是这会更消耗一些内存。
为了可以动态更换模板,不得不每次检测文件的时间。在这个上消耗了不少时间。也许将来应该去掉动态更换模板的功能,只提供一个通知模板类重新读哪个模板文件的接口。
取消了这个页面 (RetuenString.aspx--接受标签字符串返回解析结果)毕竟标签不会做成一种脚本语言。这个功能没有意义。
有人说不知道总么用这个模板类在此简要说一下:
模板类主要作用读的不是整页的模板。主要是读页面碎片模板。就是读碎片,解析,显示。在web2.0站点,比如blog开发。用户自定义皮肤的页面。或者说全静态页新闻系统更新中是有很大作用的。
标签的功能是通过标签解析函数来扩展的。所以模板类的速度不光是StringTempletReplet.dll组件本身执行的速度。还要加上标签解析函数执行的时间。我例子提供的标签解析函数只是返回简单的字符串。是为了方便说名一下。模板类做的只是提供一个舞台。并尽量让模板类执行的时间快一些。至于标签解析函数是总么执行。用多少时间。那就是使用人的事情了。
正则替换模板类也写过。但是自己测试在长度为200多万的字符串上进行标签定位分析。比指针定位要慢8倍以上。当模板字符串长度不断减小的时候。也许差距会漫漫减小。但是即使两个的标签定位时间一样。根据字符串不可改变性,对一个字符串不断的替换会产生新的字符串。太消耗资源了。
Business.cs可以放在UI层 也可以放在逻辑层。只要继承了FunctionList类就可以。继承这个类只要重写静态构造函数就可以了。在静态构造函数内建立标签和标签执行函数的对应。其实在以前的版本里写过一种执行标签。就是在标签名前加"执行_"标记 {$执行_标签名:参数1:参数2:参数3::字符10$}这样就不用重写静态构造函数。是通过反射来执行。但是速度很慢。后来就取消了。毕竟对模板类来说速度是很关键的。
我没有固定的位置可以让大家下载,以前是把压缩文件该为gif图片。传到网易的个人资料里。但是后来网易对图片进行检测了。让大家下不了。我在找新位置吧。图片位置会多变。
现在是 http://www.93913.com/Edit_html/UploadFile/20065/200652205536669.gif
只要图片还没有被删除。可以下这个位置的图片 改为 Templet.rar 文件就好