鍍金池/ 問答/Java  PHP  C/ web框架中的controller、service層、dao層、logic層的聯

web框架中的controller、service層、dao層、logic層的聯系與作用啊

一直不太理解controller、service層、dao層、logic層這幾個概念,以及具體如何用、為何這樣用

回答
編輯回答
陌離殤

說下個人目前在用的分布

Controller:接受Web請求,分發(fā)調用不同的邏輯或服務完成一項事情,返回數據
service:做些服務Api接口相關的代碼
dao:和數據庫打交道(對表進行增刪改查)
logic:自己的業(yè)務邏輯相關

現在有個PC注冊賬號的功能
  1:初始階段,controller收到請求,直接在controler里面寫數據庫連接,進行增刪改查,沒毛病,可以運行。
  2:慢慢發(fā)展,功能多了,Controller多起來了,contoller到處都是sql和數據庫打交道的代碼,雖然不影響運行,但是有時候發(fā)現,如果我要修改一個數據表的字段或其他東西,得到好幾個Controller里面去找相同的一個代碼并修改,太麻煩了,干脆都放到一個里面,全部對增刪改查從同一個地方多好,這時候出現了dao層。
  3:繼續(xù)發(fā)展,進軍移動端,有了手機注冊的功能,簡單,寫唄,寫著寫著發(fā)現,我去,怎么和PC注冊功能這么像?都要校驗用戶信息->判斷數據庫有無重復->插入數據庫(重復的業(yè)務功能在幾個控制器都要被重復使用),有了第二步的經驗,把這些相同的業(yè)務操作抽離放到一起唄,出現了logic層(logic層負責做些處理并調用dao層完成數據的入庫等和數據庫打交道的事情),RegisterLogic,規(guī)定所有的注冊功能都走這一個邏輯了,維護更加方便了,以后即使增加一百種注冊方式,只要 new RegisterLogic()->register();就行了。
  4:繼續(xù)發(fā)展下去,公司有聲有色的,老板說,網站太無聊了,加點天氣預報,隨機推送笑話的附屬功能吧,這行功能不屬于自己的系統(tǒng)的業(yè)務邏輯,更具第二步和第三步的經驗,應該單獨放一個地方,沒準以后其他的地方會用到,這時候service層就出現了。
  
2017年4月26日 13:38