你真的了解传统IT的集中式三层架构及主流开发技术选型?!
【引言】
最近在看一本書《未來架構?從服務化到云原生》,關于技術架構這部分,結合書中內容,有一些認知和感悟。
?
互聯網的技術架構正在經歷由集中式—>分布式—>云平臺的發展歷程中。這三種技術架構是一個迭代發展過程,技術和優勢也是一個逐漸演進過程;從業務需求和架構成熟度來說,是一個愈加遞增、健壯的發展。
?
目前,集中式架構主要集中在傳統IT行業,分布式和云平臺技術架構集中在需求演變快速的互聯網行業;但這并不能表明滿足低并發、擴展性差的集中式架構就落后了,對于傳統行業來說,在業務壓力不大的、并發要求和擴展性不高、公司技術人員能力迭代更新延遲的前提下,集中式三層架構依舊有其優勢和價值。
?
今天就來聊一聊集中式三層架構模型。
很多同學可能都知道傳統的三層模型:web層、服務層、數據訪問層。
這里再行贅述下:
數據訪問層用于定義數據訪問接口,實現對真實數據庫的訪問服務;
服務層用于對應用業務邏輯處理;
Web層用于處理異常、邏輯跳轉控制、頁面渲染模型等,又被稱為mvc層(Model View Controller)。
?
?
在傳統三層架構中,NoSQL還未興起,故數據訪問層主要對關系型數據進行訪問。
JAVA開發中,訪問關系型數據庫需要通過統一接口層JDBC,通過JDBC可以很方便的訪問各種關系型數據庫(Oracle、MySQL、DB2、SQL SERVER)。
?
然而存儲在關系數據庫中的二位關系表格面向集合設計的數據與面向對象的模型思維并不容易映射、對應。于是有了很多ORM(Object-Relationship-Mapping)框架,目的是為了使用面向對象的理念去操控數據庫。其中MyBatis(前身是IBATIS)、JPA及其默認實現Hibernate,是ORM框架領域的開源產品;其中JPA是Java官方的持久化設計規范,但在實際使用中略顯笨重,故業界采用更為靈活、可控性更高的MyBatis作為ORM框架首選。
?
服務層實現業務應用的邏輯處理,承接數據層和web層,故需要一個能便捷訪問數據層和web層的框架。
?
Java官方推薦EJB2.X,但因其大量的XML配置和繁瑣的部署方式,不為開發者中意;即使后續推出的簡化很多的EJB3.X,依舊沒能成為Java開發標準。
?
業界大神 Rod Johnson開發了Spring Framework(很多同學看到這個詞估計都笑了,很熟悉對不對),極大簡化了Java EE開發,提供了IOC(控制反轉)和AOP(面向切面編程)特性,因給開發者帶來極大開發便捷性,迅速被接受為Java后端實際開發標準。
?
Spring Framework提供一種容器能力,容器中任何對象都以Bean方式注入,能夠很優雅便捷的串聯、整合數據訪問對象和其他第三方組。
?
再講一下Web層,又被稱為mvc層(Model View Controller)。
MVC用于分離前端展現和后端服務,最初有Java的Servlet標準實現,但因為Servlet侵入了大量的HttpRequest、HttpResponse、HttpSession等API,導致基于servlet的開發程序并不適用于單元測試,這就很大阻礙了整體研發進度的推進,大大增加了研發周期和成本;且實現配置、跳轉、表單封裝等操作存在大量重復工作。
?
因此需要更好的MVC框架來改善開發流程,Strtus 1.X?及基于WebWork封裝的Struts 2.X/Spring MVC,初期因Struts使用簡單收到開發者喜愛,后Srping對MVC開發力度增大,且由于設計理念清晰和與Spring Hibernate強融合能力,成為MVC框架業界主流標準。
?
由以上,故當今實現集中式三層架構的主流技術選型為:
Spring Framework +Struts(Spring MVC)+ JPA(Hibernate)?開發ssh套件;
或Spring Framework +Struts(Spring MVC)+ IBATIS(MyBatis)開發ssh套件。
?
【總結】
1. 本文簡述了集中式三層架構,并給出了個人觀點:對于傳統行業來說,在業務壓力不大的、并發要求和擴展性不高、公司技術人員能力迭代更新延遲的前提下,集中式三層架構依舊有其優勢和價值;
2. 當今實現集中式三層架構的主流技術選型為:Spring Framework +Struts(Spring MVC)+ JPA(Hibernate)?開發ssh套件;或Spring Framework +Struts(Spring MVC)+ IBATIS(MyBatis)開發ssh套件。
3. 還是那句話:適合自己才是最好的;既要仰望星空,也要腳踏實地。
?
歡迎關注個人微信公眾號“一森咖記”
?
近期熱文
你可能也會對以下話題感興趣。點擊鏈接便可查看。
-
為什么不建議把數據庫部署在docker容器內?
-
Redis緩存雪崩、緩存擊穿、緩存穿透 及 常見緩存模式
-
動圖演示:如何徹底理解紅黑樹?
-
基于Kubernetes的云平臺存儲容器化實踐
-
今天來聊一聊數據庫事務的四種隔離性及Oracle和MySQL各自的默認隔離級別及原因分析
-
MySQL8.0 為嘛棄用Query Cache?
-
MySQL數據延遲跳動的問題分析
-
MySQL 5.6和 5.7_同步賬號修改密碼方式:真的不一樣
-
MySQL8.0 為嘛棄用Query Cache?
-
你應該知道的分布式系統之奠基石CAP理論
-
MySQL數據延遲跳動的問題分析
-
如何判斷一個應用系統性能好不好?
-
MySQL Document Store 混合使用關系型數據與非關系型數據
-
分布式一致性算法:Paxos算法學習
-
MySQL 中你不得不知的重要知識點
-
神技_如何快捷下載Oracle補丁的方法?!
-
趨勢篇:oracle 11g,12c,18c,19c之support lifetime
-
Centos能不能替換RHEL?
-
Centos能不能替換RHEL?
-
年末總結_聊一聊數據庫行業的“繼往開來”
-
【干貨篇】在國內外數據庫百家爭鳴的時代,DBA們該何去何從?
-
實操:12C RAC環境下的ADG同步庫搭建
-
淺談MySQL三種鎖:全局鎖、表鎖和行鎖
總結
以上是生活随笔為你收集整理的你真的了解传统IT的集中式三层架构及主流开发技术选型?!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java LocalDateTime 加
- 下一篇: 用Moment.js 计算两个时间直接的