<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    常言笑的家

    Spring, Hibernate, Struts, Ajax, RoR

    簡單的MVC就夠了嗎?淺談service Layer的引入

    MVC是web開發中常見的程序結構。

    簡單的mvc結構如下:

    view層:顯示層。

    control層:業務層,集合了各種action。

    model層:模型層,一般和數據打交道。簡單的sample:一個表對應一個model類。

    其中control層調用model層的方法,實現對數據的訪問。

     

    采用這樣的結構在一定程度上,可以做到代碼清晰,較容易擴展,代碼的管理復雜度較低。

    但是如果是業務很多,邏輯又很復雜的網站,如果再加上開發人員的水平參差不齊,那必然會導致下面的情況:

    1 action中的代碼越來越長,邏輯越來越復雜,不同action之間看起來有很多可以重用的代碼, 但是真要進行重構的話,又非常困難。

    2 model層中包含的方法越來越多,有些方法也過于復雜。甚至在不少方法中還包含了業務邏輯。

    3 代碼的修改,還是牽一發而動全身。

    4 代碼難以進行自動化測試。

     

    本來以為引入了mvc,程序的管理復雜度問題就高枕無憂了,但現在又面臨了相同的問題了。

     

    以我最近的所學看,在mvc中再引入service層,可以在很大程度上避免或者緩解上述問題。

    原有的mvc結構改成如下:

    1 view層:顯示層。

    2 control層:業務層,集合了各種action。

    3 service層。

    4 DAO層。

    原來的model層不見了,增加了service層和DAO層。DAO,即Data Access Object,數據訪問接口,數據訪問:顧名思義就是與數據庫打交道

     

    在這個結構中,control不直接和DAO聯系,

    需要操作數據的時候,通過service層訪問DAO層來實現。

    service層做的事情,不僅僅是調用DAO操作數據,還會包含了一定的業務邏輯。整個程序的設計,也變成了針對服務進行設計。

     

    這樣做的好處是:

    1 control層中的action得以精簡,因為action中的一些邏輯,被重構成一個個的服務。而不同的action也可以重用服務了

    2 只負責和數據打交道的DAO層,相比之前的model層,也得以精簡(DAO層盡量只做最原子的數據操作,不同數據操作之間的聯系,這邊不考慮,那是service層的事情)。

    3 service層可以實現很大程度上的代碼復用,程序的功能封裝更清晰了。

    4 由于service層更加清晰的定義了應用程序的邊界,那么對于各個service函數(對應某個服務/應用),要做到自動化測試就方便多了。WEB程序如何做到能方便的進行單元測試,這是一直困擾我的難題,這樣的設計似乎真的可行了~

    5 開發人員的工作分配,理論上真的可以按層次劃分了。只是理論上~

     

    同時,這樣的設計模式也是存在一定的缺點的:

    層次太多,剛接觸的開發人員理解起來比簡單的mvc結構費時;

    service層的設計需要一定的功力,因為action中和model層的邏輯在很大程度上轉移到這里了。

     

    但整體上看,service Layer的引入,更加清晰的定義了應用程序的邊界,提供了一系列可以重用的操作集合。這對于網站的可擴展性和可維護性是非常有幫助的。

     

    當然,如果網站的業務邏輯并不復雜,完全沒必要用這樣的設計。過度設計是萬惡之源~

    posted on 2010-10-07 16:29 常言笑 閱讀(658) 評論(0)  編輯  收藏 所屬分類: 技術總結

    My Links

    Blog Stats

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品亚洲综合久久| 亚洲精品亚洲人成在线麻豆| 久久国产亚洲精品| 97在线线免费观看视频在线观看 | 牛牛在线精品观看免费正| 久久久久久成人毛片免费看| 国产亚洲人成网站在线观看不卡 | 亚洲中文字幕第一页在线| 日本免费精品一区二区三区| 中文字幕第一页亚洲| 特级一级毛片免费看| 亚洲一卡2卡4卡5卡6卡在线99| 亚洲卡一卡二卡乱码新区| 2022久久国产精品免费热麻豆| 男女啪啪永久免费观看网站| 亚洲综合色婷婷在线观看| 最好免费观看韩国+日本 | 亚洲成av人片一区二区三区| 亚洲男女内射在线播放| 久久最新免费视频| 久久亚洲精品成人| 114一级毛片免费| 亚洲AV香蕉一区区二区三区| 亚洲麻豆精品国偷自产在线91| 国产亚洲精品成人AA片| 免费在线观看中文字幕| 伊人久久大香线蕉免费视频| 亚洲成A∨人片在线观看无码| 黄色免费网址大全| 亚洲AV无码码潮喷在线观看| 四虎最新永久免费视频| 亚洲欧美国产欧美色欲| 4399影视免费观看高清直播| 亚洲综合av一区二区三区不卡| 日本在线看片免费人成视频1000| 国产大片51精品免费观看| 国产vA免费精品高清在线观看| 国产在线19禁免费观看| 久久免费观看国产精品88av| 久久亚洲精品国产亚洲老地址 | 亚洲一区二区三区免费视频|