在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  PHP  網(wǎng)絡(luò)安全  HTML/ 如何避免 Service層互相調(diào)用,避免 Service層調(diào)用其它的Dao層

如何避免 Service層互相調(diào)用,避免 Service層調(diào)用其它的Dao層

學(xué)習(xí)架構(gòu)過(guò)程中出現(xiàn)了幾種問(wèn)題:

  1. 部分 Service層 會(huì)調(diào)用 其它的Dao層, 比如 UserService 會(huì)調(diào)用 UserPositionDao
    UserBookDao
  2. 部分 Service層 會(huì)調(diào)用 其它的Service層, 比如 UserService 會(huì)調(diào)用 UserAppleService
    UserPencilService
  3. 部門 Controller層 會(huì)調(diào)用 多個(gè)Service層

按照分層設(shè)計(jì)思想來(lái)說(shuō),這樣的設(shè)計(jì)是不合理的,有大神說(shuō)要使用 Facade分層來(lái)避免,于是我改成了

  1. 一個(gè) Service 只調(diào)用 一個(gè) Dao, 且不能互相調(diào) Service
  2. 一個(gè) Facade 可以調(diào)用不同的 Service
  3. 一個(gè) Controller 只能調(diào)用 一個(gè) Facade,且不能調(diào) Service

這樣問(wèn)題來(lái)了, 我在UserService里寫的所有方法,是不是都要在 UserFacade里重新實(shí)現(xiàn)一遍,否則 Controller 沒(méi)法穿透 Facade 去使用 Service的方法。

除非 Facade 與 Service 平級(jí),F(xiàn)acade 只是一種特殊的 Service, 且 Controller 最多只能同時(shí)調(diào)用它自己的 Facade 與 Service.

是這樣嘛?

回答
編輯回答
近義詞

Service調(diào)用其他ORM層怎么了,要不分層還有什么意義,直接去掉Service不行了

2017年6月14日 07:43
編輯回答
檸檬藍(lán)

一般springmvc架構(gòu)設(shè)計(jì)調(diào)用規(guī)范
Controller調(diào)用Service層是:一對(duì)一接口調(diào)用,且Controller層不做任何業(yè)務(wù)處理,目的是為了后續(xù)拓展直接替換Controller為RPC框架而準(zhǔn)備
Service層避免互相調(diào)用:一般情況下事物配置在service層,為了避免事物嵌套或單個(gè)事物過(guò)大等問(wèn)題的
service層調(diào)用dao層:除了盡量控制事物大小,即控制Service調(diào)用dao層的復(fù)雜度,將單個(gè)事物經(jīng)量控制在100ms之內(nèi)

2017年12月25日 10:44
編輯回答
涼心人

按照分層設(shè)計(jì)思想。這樣是不合理的。但是現(xiàn)在都是講的面向服務(wù)編程(SOA)。你的服務(wù)調(diào)用其他的服務(wù)不可避免。你可以使用rpc框架如dubbo來(lái)遠(yuǎn)程調(diào)用其他service。來(lái)降低耦合度。

clipboard.png
系統(tǒng)架構(gòu)也是這樣演進(jìn)的

2018年2月21日 09:33