手把手教你寫ORM(三)

2021-08-29 06:15:14 字數 1246 閱讀 1078

昨天處於暈死狀態,少寫了乙個元件,還需要乙個元件用來專門管理cache的,這裡說道為什麼要分這麼多元件,其實這是習慣問題,很多人喜歡寫乙個很大的dll,不過我比較喜歡拆分,小粒度的專案比較好管理和單獨測試,把用單元測試驗證好了的小組件湊起來除錯和寫成乙個巨大的dll慢慢一行行的追蹤**,肯定是前者更加舒心和滿足懶漢的要求。

之前說了,今天主要將實現yourname.config這個專案,這個專案用來管理所有的配置檔案,把所有的配置檔案cache到記憶體,並且需要在配置檔案更新的時候重新整理記憶體中的配置資料。

這裡如何在記憶體儲存這些配置檔案是小問題,用hashtable就能解決了,key用檔案的path,value就是檔案的內容了。

這裡我們建立乙個resource類,用來處理這些配置資源

1resource27

8public

resource(

string

path)916

1718

這裡的**已經具備了基本功能了,不過最好在add前先檢測以下項是否存在最好。

這樣子,當我們去new resource的時候乙個配置檔案就載入到了hashtable裡面了。

這個時候我們不用每一次需要配置的時候都去讀取檔案,不過占用了記憶體,典型的空間換時間的方法。

不過現在還有乙個問題,就是如果在執行的時候,如果,我們修改了配置檔案的話,由於載入到了記憶體,我們的修改不會馬上體現到程式裡,必須重新啟動程式才行,對於web來說,重新啟動iis站點是沒有用的,必須重起服務。

這是乙個問題

怎麼獲取乙個檔案是否修改了呢?我們可以通過比對檔案的最後修改時間的屬性來解決。

這裡我們為了記錄檔案的最後修改時間,再新增乙個hashtable,還是用path作key,value就是檔案的最後修改時間了

具體**:

1resource28

9public

resource(

string

path)

1020

2122

23這裡很多的判斷阿容錯阿這些我都沒做,也沒有用現成專案的現成源**,都是些此文時現用記事本手寫的,如果有錯請見諒阿。

這裡我們就可以通過  resource rc=new resource("***.xml"); rc.configs["xx.xml"];來獲取xml的配置內容了,但是這樣子還不是最終的版本,我們需要通過類名就能獲取他的配置,還有就是光有配置的xml還不行,我們還需要從xml裡面分析出配置的內容才行,這些都是下一步我們來實現的東西

to be continue......

手把手教你寫ORM(五)

cmmi是魔鬼 繼續上面的內容,這裡我們要實現乙個外掛程式的結構來動態從外部載入資料元件,其好處不用我再多說了,可能有人會發問,外掛程式是aop的拿手好戲你咋個不用?真是暈死,就2行 犯得著引入那麼大一堆東西進來麼?外掛程式,首先要定義介面,當然通過refrection我們無所不能,但是有乙個定義好...

手把手教你寫ORM大全篇

根據dudu boss的建議將本系列作乙個歸納,下乙個系列正在籌畫中正在sso和工作流中舉棋不定,在這裡再次重申,本系列都是一些概念的簡單化demo的實現,因為現實中有很多很好的開源框架但是源 讀起來太繁雜,所以我這裡簡化了一下來實現並且把一些中間過程都記錄下來並且加上一些自己的思考,主要是針對一些...

手把手教你寫個ORM(一)

這是手把手系列的第一篇,希望能夠開門紅,高手們可以離開了,菜鳥們請繼續 這裡準備把乙個類似ibaties的半自動orm的設計和實現過程一步步地剖析出來,供菜鳥參考,功能很簡單,甚至我只能用簡陋來形容了,不過把一些關鍵點破後,希望後浪們不用再花功夫摸索了。為什麼我們要重 明輪子?因為不親自經歷一遍發明...