精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

新項目模塊不能拆拆拆,但怎么應(yīng)對大型項目?

開發(fā) 項目管理
很多同學(xué)創(chuàng)建一個項目之后,就迫不及待的上手開寫了。項目代碼不像一些框架代碼一樣可以隨意的去寫,但一般都是采用MVC的模式進行開發(fā)。很悲催的是,Java中Web開發(fā)的這些目錄名稱,到現(xiàn)在還是一團亂麻,你需要自己去規(guī)劃。

[[378316]]


很多同學(xué)創(chuàng)建一個項目之后,就迫不及待的上手開寫了。項目代碼不像一些框架代碼一樣可以隨意的去寫,但一般都是采用MVC的模式進行開發(fā)。很悲催的是,Java中Web開發(fā)的這些目錄名稱,到現(xiàn)在還是一團亂麻,你需要自己去規(guī)劃。

什么Controller、Service、Dao等,但其實這種劃分方式弊端很多! 本文將先介紹兩種典型的分層結(jié)構(gòu),然后稍微借鑒一下DDD的思想,談一下我在項目中常用的目錄結(jié)構(gòu)。本篇文章非常的實用,將探討怎樣做一個應(yīng)對大型項目的目錄劃分。

清晰的目錄結(jié)構(gòu),能夠輔助其他同學(xué)輕而易舉的了解項目的功能模塊,在項目中保持整體一致的約定也是一個非常好的習(xí)慣。如果再加上一個擴展性,那目錄劃分就是重中之重。

有兩種典型的分類方式,但也有很多細節(jié)。

1. 最簡單的MVC

我們平常最熟悉的,就是MVC結(jié)構(gòu)。這種結(jié)構(gòu)很流行,寫簡單項目很方便,但是會產(chǎn)生嚴重的耦合問題、Service爆炸問題,數(shù)千、上萬行的代碼是家常便飯。

  1. Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄字段)。
  2. View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。
  3. Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)。

在項目劃分上,就類似下面的目錄結(jié)構(gòu)。

1.1 模型

domain是DDD中一個非常寬泛的概念。不過,我們平常就當(dāng)作數(shù)據(jù)庫對應(yīng)的Java 類使用了(沒什么錯)。在實際操作中,它還可能有下面幾種名字,在普通項目中區(qū)別不大,你最好在項目中保持相同的意義來避免歧義。

  • entity 這個意義比較明顯,就是實體的意思,最常用。比如JPA的Entity注解
  • model模型的意思,一般用來在不同系統(tǒng)之間交互。但如果你的模型非常簡單,直接用entity來表示也是可以的
  • domain 這個范圍有點大,甚至?xí)I(lǐng)域內(nèi)service。如果你對DDD的概念不是很熟悉,那就玩上面幾種

對于簡單的項目,我通常在項目中使用entity來表示和數(shù)據(jù)庫的交互。在JPA之類的ORM中,也是做相關(guān)處理的。比如javax.persistence.Entity注解。你要明白的是,Spring Data其實取了一個比較折衷的點,把很多東西揉在一起了。

1.2 Dao

dao層叫數(shù)據(jù)訪問層,全稱為data access object,屬于一種比較底層,比較基礎(chǔ)的操作。在一些其他框架中,還會叫別的名字。

  • mapper 這個一般是Mybaits之類的框架所生成的目錄,通常是一些接口。
  • repository 倉庫的意思,在jpa中經(jīng)常用。

Dao應(yīng)該滿足最小封裝原則,理論上只涉及一句SQL的執(zhí)行。如果有多個數(shù)據(jù)的存取動作,需要封裝在Service中,并用事務(wù)進行管理(雖然這么說,但repository在DDD中,是不和具體的數(shù)據(jù)庫打交道的)。

1.3 service和controller

這個沒什么好說的,基本上所有重要的邏輯都在這里完成。service用于邏輯處理,controller用于接口暴露。

2. 根據(jù)功能組織

大多數(shù)情況下,我們使用上面的這種劃分模式,能夠很好的完成工作。比如,所有的數(shù)據(jù)處理,都放在Dao層,所有的邏輯處理,都放在Service層。

這在小項目中相安無事,但如果項目中,有成百上千個Entity,這些目錄中的文件就會爆炸,以至于最后無法維護。

另外一個問題就是,僅僅一個簡單的功能,就可能分散在多個package下的多個文件中,大型項目維護變得困難。

我們有另外一個思路,就是根據(jù)功能進行分組。比如下面的截圖。

我們把相似功能,放在modules下的單個文件夾中。如果這個功能模塊比較大,我么可以在功能模塊下,再進行分層設(shè)計。

比如上圖,有一個商品服務(wù),我們單獨給它分配了一個目錄空間goods,然后在里面又劃分了dao、entity等目錄;但對于Service和Controller,我們簡單的放在了外層,可以看到在模塊內(nèi)的分配是比較靈活的。

這么做的好處是顯而易見的。功能變的非常的集中,各個package之間的內(nèi)容互不影響。

3. 還是不夠優(yōu)雅

其實,即使我們這樣劃分了,項目仍然會面臨很大的挑戰(zhàn)(很多DDD的書籍,會大量討論各層的交互)。

下面分享一個我在平常使用的分層模式,兼顧高內(nèi)聚和低耦合,有著良好的擴展性。

  1. config,最外層的一些全局配置,比如web配置,消息隊列配置等
  2. system,全局的工具和依賴功能,在DDD中叫做基礎(chǔ)設(shè)施(但在非DDD實踐的項目中名稱太怪異了)
  3. auth,權(quán)限認證模塊,比如JWT或者Spring Sercurity,這部分的設(shè)計要獨立,以便后續(xù)抽離到Zuul之類的網(wǎng)關(guān)
  4. bc,在DDD中是限界上下文的意思(Bounded Context),我們也可以直接叫模塊,這些模塊有著嚴格的界限,可以根據(jù)請求量,拆分成相應(yīng)的微服務(wù)。在上圖,crm、images、order等等,都可以抽離成獨立的微服務(wù)

我們再來看一下每個模塊之內(nèi)的結(jié)構(gòu)。

  1. 和傳統(tǒng)的MVC類似。不過,為了屏蔽變化,兼顧擴展性,我們增加了更多的內(nèi)容。
  2. persitence,持久層,具體使用JPA還是Mybatis,這個是無關(guān)緊要的。我們的目標,就是盡量的弱化持久層的實現(xiàn),將變化封裝在Domain層中
  3. persitence/dao,具體的持久層接口,比如MyBatis的Mapper文件,或者JPA的Repository
  4. domain層,具體的業(yè)務(wù)層,你可以認為是一堆Getter、Setter的Bean。我們盡量會把大多數(shù)驗證類和變化封裝在這里(可以大體認為是DDD中的充血模型)
  5. controller,具體的Rest接口層。但不同的是,有很多不同的請求和返回,我們封裝成了Request和Response,用來接受提交的數(shù)據(jù),對返回數(shù)據(jù)進行瘦身等
  6. application,應(yīng)對傳統(tǒng)的service層,除了在application能夠調(diào)用Dao,其他層是沒有權(quán)利調(diào)用Dao的
  7. api,和application的功能是相同的。只不過,api的接口,指的是模塊之間可以相互調(diào)用的接口。除了api暴露的這些接口,bc之間的類和接口,默認彼此是不可見的
  8. util,不通用的util,會放在模塊內(nèi)部,而不是抽離出公共的util

除了要解決目錄方面的問題,我們還要把數(shù)據(jù)的流向給規(guī)劃清楚。

一個上層的應(yīng)用,是可以通過API接口直接調(diào)用下層服務(wù)的。比如,訂單系統(tǒng)訪問商品基礎(chǔ)信息的數(shù)據(jù);反之卻不可以,比如商品基礎(chǔ)信息模塊訪問訂單系統(tǒng)的接口。

低層想要對高層的數(shù)據(jù)產(chǎn)生變化,就只能通過消息模塊,將變更發(fā)布出去,其他的模塊就可以訂閱這些變化。

小結(jié)

綜上所述,xjjdog認為,如果你的項目,可能會比較大,單純的使用分層的package,并不是一個好的習(xí)慣。

你可能對這種后臺管理類的項目駕輕就熟,有很多有用的模版,它們都是簡單的MVC分層。這應(yīng)付一些外包項目,干一些一錘子買賣的時活,或許沒什么問題,但一旦是比較大的長期項目,這種分層的目錄接口就顯現(xiàn)出它的弊端。

這是因為:項目的短期風(fēng)險,是工期問題;而長期風(fēng)險,是擴展問題。隨著訪問量的增加,還有低耦合高內(nèi)聚的需求增加,如何快速的應(yīng)對需求,減少BUG,將會是制約項目發(fā)展的最主要因素。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

 

責(zé)任編輯:武曉燕 來源: 小姐姐味道
相關(guān)推薦

2015-04-15 09:29:18

UltimateAndroied

2012-06-26 10:34:28

RIM

2021-07-08 07:52:48

微服務(wù)業(yè)務(wù)架構(gòu)

2010-11-11 11:19:19

騰訊

2021-01-13 08:41:08

整數(shù)動態(tài)規(guī)劃

2010-05-28 10:44:50

李彥宏百度

2009-08-26 03:39:00

C#裝箱和拆箱

2015-08-26 10:36:32

ios開發(fā)漫談

2021-05-12 08:54:56

FastAP web 框架數(shù)據(jù)庫操作

2015-08-31 10:11:43

iOS大項目開發(fā)

2009-01-23 20:02:30

金山分拆WPS

2023-03-02 20:41:12

特斯拉比亞迪

2023-02-13 08:21:25

微服務(wù)架構(gòu)微前端

2010-11-22 14:47:22

MySQL存儲過程

2009-03-03 08:45:41

AMD分拆制造工廠

2010-03-25 21:49:44

2012-03-26 11:32:45

Java

2015-07-27 10:43:26

2009-08-28 11:22:11

C#裝箱和拆箱

2024-12-19 11:00:00

TCP網(wǎng)絡(luò)通信粘包
點贊
收藏

51CTO技術(shù)棧公眾號

色哟哟网站入口亚洲精品| 午夜av电影一区| 114国产精品久久免费观看| 国产va在线播放| 欧美日韩破处| 欧美午夜电影网| 日本a在线天堂| 国产中文在线| 精品影视av免费| 久久久久女教师免费一区| 香蕉网在线播放| 亚洲精品伦理| 五月开心婷婷久久| 相泽南亚洲一区二区在线播放| 国产精品久久免费| 国产一区成人| 久久色在线播放| 人妻在线日韩免费视频| 日本电影久久久| 精品国产91久久久久久| 国产日本欧美在线| 国产在线网站| 成人高清视频在线| 国产欧美日韩综合精品| 日本熟女一区二区| 香蕉久久网站| 亚洲人在线观看| 中文字幕天堂网| 成人国产精品久久| 色88888久久久久久影院按摩| 强开小嫩苞一区二区三区网站| 美国成人毛片| 成人免费av在线| 亚洲最大的av网站| 中文字幕在线视频第一页| 99成人精品| 欧美精品成人在线| 亚洲精品国产精品乱码在线观看| 欧美男人操女人视频| 日韩一区二区三区三四区视频在线观看 | 99国产欧美另类久久久精品| 91在线播放国产| 一级特黄aaa| 蜜臀a∨国产成人精品| 国产成人高潮免费观看精品| 日韩特黄一级片| 国产一区欧美| 欧美激情第一页xxx| 老司机成人免费视频| 日韩国产一区| 色偷偷亚洲男人天堂| 欧美黄色激情视频| 国产成人av| 永久免费毛片在线播放不卡| 久久精品国产亚洲av久| 亚洲va久久久噜噜噜久久| 亚洲精品99久久久久| 美女黄色一级视频| 粉嫩久久久久久久极品| 欧美精品一区二区三| 亚洲少妇一区二区三区| 中文一区二区三区四区| 亚洲国产精品小视频| 美女又爽又黄视频毛茸茸| 日韩av不卡一区| 亚洲精品一区二区三区不| 国产国语性生话播放| 精品在线播放| 亚洲一区二区黄| 久久视频一区二区三区| 999国产精品永久免费视频app| 中文字幕不卡av| 性色国产成人久久久精品| 中文字幕一区二区三区乱码图片 | 亚洲色图欧美色| 久久看人人摘| 欧美成人黄色小视频| 久久精品www| 一本一本久久| 国产精品一区二区三区成人| 99久久精品免费看国产交换| 成人白浆超碰人人人人| 欧美一区二区三区电影在线观看| 成人av一区| 亚洲乱码精品一二三四区日韩在线| 老司机激情视频| 亚洲美女尤物影院| 欧美日韩精品一区二区三区四区| 熟妇无码乱子成人精品| 色婷婷久久久| 精品国产一区二区三区久久| 国产一级特黄a高潮片| 国产视频一区欧美| 国产欧美中文字幕| 成人无码一区二区三区| 国产免费久久精品| 成人在线视频一区二区三区| 午夜影院在线播放| 在线综合亚洲欧美在线视频| www.日本高清| 久久麻豆精品| 欧美亚洲成人免费| aa视频在线免费观看| 91丨porny丨国产入口| 中文字幕一区二区三区5566| 天堂网在线最新版www中文网| 8x福利精品第一导航| 中文字幕av观看| 亚洲理论电影网| 国产成人欧美在线观看| 噜噜噜久久,亚洲精品国产品| 国产欧美1区2区3区| 男人天堂av片| 亚洲精品777| 亚洲无av在线中文字幕| 国产五月天婷婷| 国产一区二区三区免费看| 欧美系列一区| 国产va在线视频| 日韩一区二区精品葵司在线| 亚洲色图第四色| 国产视频久久| 国产一区二区三区四区五区加勒比 | 亚洲区中文字幕| 久久久久久国产精品免费播放| 日本vs亚洲vs韩国一区三区二区| 久久99热只有频精品91密拍| 日本性爱视频在线观看| 欧美精品自拍偷拍| 免费视频91蜜桃| 亚洲精品社区| 国产精品三区四区| 超碰在线caoporn| 欧美日韩国产在线观看| 无码一区二区三区在线| 制服诱惑一区二区| 国产精品中出一区二区三区| 91黄色在线| 在线播放一区二区三区| 天天干天天操天天拍| 天堂成人国产精品一区| 玛丽玛丽电影原版免费观看1977 | 亚洲成a天堂v人片| a级大片免费看| 欧美+日本+国产+在线a∨观看| 国产精品视频久久| 黄色小视频在线免费观看| 欧美午夜女人视频在线| 欧美熟妇一区二区| 玖玖在线精品| 日韩精品一线二线三线| 日本欧美韩国| 自拍亚洲一区欧美另类| 亚洲在线精品视频| 亚洲欧洲综合另类在线| 欧美午夜精品理论片| 中文字幕一区二区三区久久网站| 91精品久久久久久蜜桃| 男女视频在线| 亚洲精品国产精品久久清纯直播 | 级毛片内射视频| 丝袜脚交一区二区| 亚洲一区三区视频在线观看| 日韩精品一页| 免费av在线一区| 亚洲乱码国产乱码精品精软件| 亚洲一区二区三区影院| v天堂中文在线| 亚洲欧美日韩专区| 天堂va久久久噜噜噜久久va| 国产精品蜜月aⅴ在线| 久久激情视频免费观看| 超碰在线观看99| 午夜激情综合网| 男人操女人动态图| 蜜桃一区二区三区在线| 大胆欧美熟妇xx| 亚洲人成网亚洲欧洲无码| 国产精品国产三级国产aⅴ9色| 天堂资源在线中文| 欧美精品一区二区在线播放| 久久中文字幕免费| 国产精品久久久久久久久动漫 | 亚洲色欲久久久综合网东京热| 国产精品15p| 国产成人精品一区二区三区| 毛片网站在线免费观看| 亚洲аv电影天堂网| 国产熟妇一区二区三区四区| ...中文天堂在线一区| 制服丝袜第一页在线观看| 日韩精品福利网| 肉大捧一出免费观看网站在线播放 | 国产专区一区二区三区| 色豆豆成人网| 欧美激情xxxx性bbbb| 国产在线观看网站| 精品久久久久久亚洲综合网 | 欧美人伦禁忌dvd放荡欲情| 劲爆欧美第一页| 欧美激情在线看| 四虎精品一区二区| 久久精品国产秦先生| 日日摸日日碰夜夜爽无码| 欧美先锋资源| 国产在线一区二区三区播放| 国产美女亚洲精品7777| 欧美诱惑福利视频| 丝袜美腿av在线| 中文字幕在线观看日韩| 天天操天天射天天舔| 337p亚洲精品色噜噜噜| 日韩欧美在线观看免费| 亚洲永久免费av| 疯狂撞击丝袜人妻| 久久久精品2019中文字幕之3| 性一交一黄一片| 精东粉嫩av免费一区二区三区| 久激情内射婷内射蜜桃| 欧美精品九九| 永久免费精品视频网站| 国产精品一区二区av日韩在线| 动漫一区二区在线| 91国产一区| 国产精品视频久久久久| 日日夜夜天天综合| 2020久久国产精品| 国产盗摄一区二区| 久久福利视频网| 欧洲不卡av| 自拍偷拍亚洲精品| 成人在线观看黄色| 亚洲人成自拍网站| 欧美女子与性| 亚洲欧美制服综合另类| 偷拍精品一区二区三区| 欧美精品一区二区三区蜜臀| 精品国产无码一区二区| 欧美一区二区视频免费观看| 一区二区国产欧美| 欧美丰满少妇xxxbbb| 亚洲熟女乱色一区二区三区久久久| 色婷婷精品大在线视频| 亚洲色成人www永久网站| 欧美午夜片在线免费观看| 久久狠狠高潮亚洲精品| 天天做天天摸天天爽国产一区 | 欧美日韩一区成人| 国产主播第一页| 在线精品视频小说1| 不卡av电影在线| 在线观看免费视频综合| 中文字幕av第一页| 欧美午夜精品久久久| 夜夜爽8888| 制服.丝袜.亚洲.另类.中文| 国产不卡精品视频| 欧美第一区第二区| 欧美一区二区黄片| 亚洲第一网中文字幕| 天堂a√在线| 国产一区二区三区久久精品| 一本一道波多野毛片中文在线 | 欧洲视频一区二区三区| 成人黄色小视频| 一区二区三区四区国产| 欧美在线网址| 成人免费aaa| 日本亚洲一区二区| 污污视频在线免费| 成人激情小说网站| 国产全是老熟女太爽了| 国产精品美女视频| 欧产日产国产v| 婷婷夜色潮精品综合在线| 国产一卡二卡三卡| 制服丝袜在线91| 男人天堂av网| 国产一区二区三区丝袜| 成人影院www在线观看| 欧美激情亚洲一区| 依依综合在线| 成人乱人伦精品视频在线观看| 白嫩白嫩国产精品| 欧美日韩综合精品| 一区二区蜜桃| 男人天堂网视频| 国产一区二区三区免费| 在线免费观看a级片| 日韩美女精品在线| 久久青青草视频| 欧美一区二区视频网站| 精品资源在线看| 久久久久久久久综合| 日韩视频网站在线观看| 成人动漫视频在线观看完整版| 九九综合久久| 很污的网站在线观看| 男女男精品视频| 日本黄色特级片| 亚洲黄一区二区三区| 国产在线一级片| 亚洲福利视频专区| 日本在线www| 日本韩国在线不卡| 91麻豆精品激情在线观看最新| 色播五月综合| 国产欧美在线| 白丝校花扒腿让我c| 欧美国产精品一区二区| 国产午夜在线播放| 日韩欧美国产wwwww| bbbbbbbbbbb在线视频| 午夜精品一区二区三区在线| 国产电影一区| 色综合久久av| 亚洲欧美成人| 国产婷婷在线观看| 亚洲色图视频免费播放| 国产精品露脸视频| 亚洲精品视频在线观看视频| 福利成人导航| 666精品在线| 91九色精品国产一区二区| 蜜桃免费在线视频| 久久久91精品国产一区二区三区| 国产精品500部| 精品国产污网站| wwwww亚洲| 翡翠波斯猫1977年美国| 亚洲一区色图| www午夜视频| 欧美国产综合一区二区| 国语对白做受69按摩| 精品视频在线播放| 色偷偷色偷偷色偷偷在线视频| 国产精品免费一区二区三区四区| 中文字幕一区二区三区乱码图片| 欧美视频国产视频| 国产精品久久久久影院老司| 国产无遮挡又黄又爽又色视频| 一个人www欧美| 精品日本视频| 日韩国产精品一区二区| 日本免费新一区视频| 国产无遮挡在线观看| 欧美中文一区二区三区| av免费观看一区二区| 国产精品久久久久不卡| 日韩精品免费一区二区在线观看| 99热这里只有精品在线播放| 国产精品国产自产拍高清av王其 | 男女视频一区二区| 自拍偷拍你懂的| 91精品久久久久久久99蜜桃| 污片在线免费观看| av成人观看| 夜夜嗨网站十八久久 | 亚洲国产精品嫩草影院久久av| 日本不卡在线观看视频| 久久久亚洲精品石原莉奈 | 日本欧美一区二区在线观看| 国产大屁股喷水视频在线观看| 7777精品伊人久久久大香线蕉最新版| www在线观看播放免费视频日本| 99国产在线| 一本色道久久综合亚洲精品高清| 亚洲精品国产91| 欧美精品在欧美一区二区少妇| caopen在线视频| 国产一区二区在线观看免费播放| 性高湖久久久久久久久| 美国美女黄色片| 日韩一级黄色大片| 国产v日韩v欧美v| 亚洲精品日韩在线观看| 国产精品一二三四| 91蜜桃视频在线观看| 在线国产精品视频| 中文字幕av一区二区三区四区| 女人扒开屁股爽桶30分钟| 国产精品毛片高清在线完整版| 亚洲av综合色区无码一二三区| 2024亚洲男人天堂| 五月婷婷亚洲| 亚洲一区二区三区无码久久| 欧美三区在线观看| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美精品一区二区三区在线看午夜| 精品制服美女久久| 五月天婷婷综合网| 日韩中文理论片| 精品少妇3p| 尤物国产在线观看| 婷婷成人激情在线网| 黄网页在线观看| 欧美18视频| 成人在线综合网| 影音先锋国产在线| 97视频在线观看免费|