本次StringTempletReplet.dll元件更新了一些演算法。主要是更依賴記憶體裡靜態變數內的數值。
做到了在不改變模板的條件下。快取模板,快取委託,快取標籤解析資料。但這會更消耗一些記憶體。
為了可以動態更換模板,不得不每次檢測文件的時間。在這個上消耗了不少時間。也許將來應該去掉動態更換模板的功能,只提供一個通知模板類別重新讀哪個模板檔案的介面。
取消了這個頁面(RetuenString.aspx -接受標籤字串回傳解析結果)
畢竟標籤不會做成一種腳本語言。這個功能沒有意義。
有人說不知道總麼用這個模板類別在此簡單說一下:
模板類別主要作用讀的不是整頁的模板。主要是讀頁面碎片模板。就是讀碎片,解析,顯示。
在web2.0站點,如blog開發。使用者自訂皮膚的頁面。或者說全靜態頁新聞系統更新中是有很大作用的。
標籤的功能是透過標籤解析函數來擴展的。所以模板類別的速度不光是StringTempletReplet.dll元件本身執行的速度。還要加上標籤解析函數執行的時間。我例子提供的標籤解析函數只是返回簡單的字串。
是為了方便說名一下。模板類別做的只是提供一個舞台。並儘量讓模板類別執行的時間快一些。至於標籤解析函數是總麼執行。用多少時間。那就是使用人的事情了。
正規替換模板類別也寫過。但是自己測試在長度為200多萬的字串上進行標籤定位分析。比指針定位慢8倍以上。當模板字串長度不斷減少的時候。也許差距會漫漫減少。但是即使兩個的標籤定位時間一樣。根據字串不可改變性,對一個字串不斷的替換會產生新的字串。太消耗資源了。
Business.cs可以放在UI層 也可以放在邏輯層。只要繼承了FunctionList類別就可以。繼承這個類別只要重寫靜態建構子就可以了。在靜態建構函式內建立標籤和標籤執行函式的對應。
其實在以前的版本裡寫過一種執行標籤。就是在標籤名前加"執行_"標記
{$執行_標籤名稱:參數1:參數2:參數3::字元10$}
這樣就不用重寫靜態建構子。是透過反射來執行。但是速度很慢。後來就取消了。畢竟對模板類別來說速度是很關鍵的。
我沒有固定的位置可以讓大家下載,以前是把壓縮檔該為gif圖片。傳到網易的個人資料裡。但是後來網易對圖片進行檢測了。讓大家下不了。我在找新位置吧。圖片位置會多變。
現在是