在探討系統重構的代碼結構組織以前,先初步考慮框架與數據庫的交互,在.net平臺上數據訪問方案有人總結爲三類:DataSet、ADO.net 2.0、ORM組件。我只熟悉ADO.NET方式,衆多的企業特性(如鏈接池、緩存等)均自行寫代碼實現,在這次重構時,我固然能夠直接將原來的數據訪問方案直接搬過來在Model中實現與數據層的交互,但既然考慮重構,爲什麼不嘗試一下新的ORM呢,在起初我考慮HNibernate框架的,但我在2008年的一個全國應用範圍的項目中見過開發團隊用Entity Framework做爲數據層訪問方案,一直對此方案比較好奇,因此這裏採用Entity Framework 6.0.1
again, 對此有選擇性障礙的人,中止尋找銀彈吧,好比Entity Framework框架討論不少的運行性能問題,我認爲可用空間換時間的思路(比較粗暴的說法:硬件空間換響應時間。固然不是這樣簡單的概念,這裏我我的喜歡這樣概述此思路而已)來解決,不用鑽牛角尖太深。
EF有三種方式(three ways)着手:Database First、Model First、Code First,通俗的話來講:數據庫
一般分工明確的項目團隊中,設計人員用ORM工具(好比我習慣用PowerDesigner)完成數據庫結構的設計,而後交給開發人員進行邏輯代碼的開發。 for me, 這部分工做已經完成了,整個後臺管理平臺的數據結構乖乖的列在數據庫中了,看起來我可用Database First方式着手。
這裏順便想提一句Code First方式,這令我回想起早幾年的技術銷售(TS)的工做,這個角色的工做中涉及的POC要求一個快字,Code First簡直就是爲快而生的,用戶POC需求拿到後,直接進入代碼編寫業務邏輯,不用花時間在數據層的處理上,最重要的是POC成功後,即便要將POC直接轉化到生產環境也是可行的。緩存
Code First方式簡單的開發流程可歸納以下:數據結構
開發流程的核心基本就是如此,中間涉及的各類規則可參閱這裏,包括數據庫鏈接字符串規則、Entity關聯規則、甚至你能夠自定義規則mvc
一句話小結三種方式的選擇:Code First適合作演示系統,不少東西不用費時間考慮,Database First顯然適合導入現有的數據結構,從頭實施大型項目仍是以模型先着手,完整的模型視圖有利於理清各個對象間的關係。app
肯定了asp.net mvc + EF 後,接下來如何進行呢?對我來講,涉及的新技術好多哦,系統的學習是不可能的,我決定採起這樣的方式進行:蒐集asp.net mvc的最佳實踐經驗,以此爲基礎來展開本次重構,整體來說從如下幾個方面着手蒐集框架