如何讓MVC和多層架構和諧並存(一)

MVC的架構和多層架構,在ORM框架上是不兼容的。MVC的數據庫操做須要經過實體框架Entity Framework,多層的數據庫操做須要經過DAL層。咱們最近剛完成的項目,實現了MVC和多層的並存,有一些心得,記述一下。算法

爲何硬要把MVC和多層捆在一塊兒用?有三個緣由,首先,新的項目是一個站長工具網站(www.youhuafenxi.com),裏面不少查詢算法,咱們在BLL層裏都有積累,能夠直接拿來用;其次,MVC的優雅和乾淨,特別適合咱們這個網站;最後,新技術的探索和使用永無止境,不學習就會落後。數據庫

總體項目以下:架構

11OO6D19SH9248BGU0_thumb7

通過考慮,我決定數據操做走多層,放棄Entity Framework。緣由在於:1 團隊成員不多接觸Entity Framework,原本Mvc已是新東西了,再引入Entity Framework,此次項目中的新東西有點太多,風險太高。我一貫以爲一個項目中新東西比例不宜超過30%;2 據我用過的朋友說,Entity Framework性能不太好,固然這個有待實際覈實;3 BLL是個公用層,咱們寫在BLL層裏的代碼未來還能夠被別的項目複用,而Entity Framework寫的代碼通常只能被本項目使用。框架

MVC架構,數據實體是Models這個目錄:工具

2WPUXP8SR717OEPDN4XY_thumb

多層的數據實體是Model層:性能

_QQ9CDKFPONL_8R62Q6_thumb4

這兩種Model有什麼差異呢?多層的Model,是徹底和數據庫字段一一對應的,很簡單,都是屬性。MVC的Model,是和View業務邏輯對應的。這個業務邏輯可能和數據庫有關聯,也可能沒有關聯,甚至可能和多個數據表有關聯,有可能很複雜,好比帶List列表。可是,基本的業務邏輯,View的表單元素仍是能夠和數據表一一對應的。這樣,只要把Mvc的Model和多層的Model有相關性的按照相同表字段創建關聯,就可使用到多層的數據操做。學習

 

(未完待續)網站

相關文章
相關標籤/搜索