標籤:c# orm 架構
一、故事
近些年一直開發MIS系統,用過PB,VB,C# ,現在學了半年的java,早先聽人說,.NET和 java一直就是互相借鑒,一起升級,都是為了讓程式開發趨於簡單,高校,而這不可避免就肯定用到架構,對java中很多架構的實現原理,我也比較感興趣,在本系列的部落格正,咱們將一起實現一個簡單的.NET版 ORM架構。
有人會有疑問,網上有很多成熟的ORM架構,為什麼不直接用,偏偏要自己做一個呢?
對於這個答案,是仁者見仁的問題,就好似建造大廈,如果他停留在會照著圖紙建房子,他肯定是個工人,而如果他能瞭解圖紙上的原理,那麼他必然是一個管理者,當他瞭解原理且能自己畫出一份圖紙的時候,他就是設計師!
二,技術瞭解
1.什麼是ORM?
ORM,即Object-RelationalMapping(對象關係映射),它的作用是在關係型資料庫和業務實體物件之間作一個映射,這樣,我們在具體的操作業務對象的時候,就不需要再去和複雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。
2.ORM 優缺點
展開說說
優點:
(1),隱藏了資料訪問細節。
“封閉”的通用資料庫互動,ORM的核心。他使得我們的通用資料庫互動變得簡單易行,並且完全不用考慮該死的SQL語句。快速開發,由此而來。
(2),ORM使我們構造固化資料結構變得簡單易行。
回想我們沒有ORM的年代,我們要為每個表編寫形形色色的sql語句,我們拿到的資料內容,要自己轉換為對象,我們為了某個欄位值寫錯的bug徹夜不眠,而現在,基本上所有的ORM架構都提供了通過物件模型構造關聯式資料庫結構的功能。而這,“太好了!!!”。
缺點:
(1)犧牲效能:
無可避免的,自動化意味著映射和關聯管理,代價是犧牲效能(早期,這是所有不喜歡ORM人的共同點)。現在的各種ORM架構都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。
(2)查詢語言:
物件導向的查詢語言(X-QL)作為一種資料庫與對象之間的過渡,雖然隱藏了資料層面的業務抽象,但並不能完全的屏蔽掉資料庫層的設計,並且無疑將增加學習成本.
(3)複雜查詢:
對於複雜查詢,ORM仍然力不從心。雖然可以實現,但是不值的。視圖可以解決大部分calculatedcolumn,case ,group,having,order by, exists,但是查詢條件(a and b and not c and (d ord))我們有些也要謹慎考慮和重新編寫sql語句!
總結:世上任何事情是完美的,任何優勢的背後都隱藏著缺點,這是必然的。問題在於,我們是如何平衡他們的額。在簡答業務的場合下,簡單三成可能就是最佳選擇,而在某些商務邏輯複雜,Team Dev龐大的項目中,ORM卻又是個不得不考慮的問題,具體怎麼辦?就看你怎麼衡量,沒人說用了ORM就不讓底層人員寫sql語句了…………
三,模組設計構想
四、本篇總結
本次簡單講述了ORM實現的基本思路分析及ORM架構使用的優缺點及在項目中如何合理的分析與應用。我們用ORM架構是來解決問題,但是,不是什麼問題都是一種架構可以解決的,資料庫的封裝,ORM只是做了其中的工作,也不要覺得這個東西是多麼的高深,隨著我們代碼的不斷推進,我們設計的不斷完善,其實我們可以發現,所有的代碼都是基本技術的組合,只是我們對於他的組合形式不熟悉,相信自己,架構我們也是可以寫出來的!
附件(系列部落格連結):
1,DIY.NETORM架構——整體分析