我來(lái)回答一下,具體用什么框架跟項(xiàng)目規(guī)模和大小有很大的關(guān)系,下面從單體應(yīng)用架構(gòu)和微服務(wù)架構(gòu)兩個(gè)方面講一下。
一、單體應(yīng)用架構(gòu)
單體應(yīng)用架構(gòu)比較簡(jiǎn)單,普遍用到就是五大框架,包括mvc層、持久層等。由于這五大框架是web開(kāi)發(fā)框架學(xué)習(xí)的基礎(chǔ),相對(duì)于微服務(wù)框架比較簡(jiǎn)單,在此簡(jiǎn)單介紹一下。
1.Spring:ioc容器和bean管理,解決的是業(yè)務(wù)邏輯層和其他各層的松耦合問(wèn)題,也起到紐帶和橋梁的作用。
2.Springmvc:目前使用最普遍和最流行的mvc框架。
3.Struts2:也是一款類似于Springmvc功能的mvc框架,它的前身struts1基本沒(méi)人使用了。struts2相較于springmvc有諸多劣勢(shì),包括自身漏洞門(mén)問(wèn)題,慢慢走向沒(méi)落。現(xiàn)在使用的大部分都是維護(hù)的老項(xiàng)目老電銷(xiāo)外呼程序。
4.hibernate:重量級(jí)的面向?qū)ο蟮某志脤涌蚣埽鋵?shí)它的功能非常強(qiáng)大,由于其自身功能的強(qiáng)大在使用和配置上比較復(fù)雜,很多程序員待之以鄙夷。hibernate用于中小電銷(xiāo)外呼程序項(xiàng)目還是很合適的,開(kāi)發(fā)效率較高。
5.mybatis:是一款中低量級(jí)別的半自動(dòng)的持久層框架,由于自身使用的靈活性和易于aql調(diào)優(yōu),目前還是非常流行的,很多大型項(xiàng)目都用到它。
二、微服務(wù)架構(gòu)
微服務(wù)架構(gòu)相對(duì)于單體應(yīng)用架構(gòu)復(fù)雜些,尤其是微服務(wù)架構(gòu)用到分布式應(yīng)用架構(gòu)就更為復(fù)雜。
1.springboot:微服務(wù)基礎(chǔ)框架,由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置源碼,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。通過(guò)這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開(kāi)發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。特點(diǎn) :1. 創(chuàng)建獨(dú)立的Spring應(yīng)用程序 2. 嵌入的Tomcat,無(wú)需部署WAR文件 3. 簡(jiǎn)化Maven配置 4. 自動(dòng)配置Spring 5. 提供生產(chǎn)就緒型功能,如指標(biāo),健康檢查和外部配置 6. 絕對(duì)沒(méi)有代碼生成和對(duì)XML沒(méi)有要求配置。一句話總結(jié):使用springboot可以高效快速開(kāi)發(fā)web應(yīng)用,而且可以不使用單體應(yīng)用開(kāi)發(fā)框架中那些繁雜的xml配置。
2.Dubbo:Dubbo是一個(gè)分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。簡(jiǎn)單的說(shuō),dubbo就是個(gè)服務(wù)框架,如果沒(méi)有分布式的需求,其實(shí)是不需要用的,只有在分布式的時(shí)候,才有dubbo這樣的分布式服務(wù)框架的需求,并且本質(zhì)上是個(gè)服務(wù)調(diào)用的東東,說(shuō)白了就是個(gè)遠(yuǎn)程服務(wù)調(diào)用的分布式框架(告別Web Service模式中的WSdl,以服務(wù)者與消費(fèi)者的方式在dubbo上注冊(cè)) 其核心部分包含: 1. 遠(yuǎn)程通訊: 提供對(duì)多種基于長(zhǎng)連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請(qǐng)求-響應(yīng)”模式的信息交換方式。 2. 集群容錯(cuò): 提供基于接口方法的透明遠(yuǎn)程過(guò)程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯(cuò),地址路由,動(dòng)態(tài)配置等集群支持。 3. 自動(dòng)發(fā)現(xiàn): 基于注冊(cè)中心目錄服務(wù),使服務(wù)消費(fèi)方能動(dòng)態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。
3.SpringCloud:用官方文檔的說(shuō)明:Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式電銷(xiāo)外呼程序中的一些通用模式(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領(lǐng)導(dǎo)選舉,分布式 會(huì)話,群集狀態(tài))。 分布式電銷(xiāo)外呼程序的協(xié)調(diào)導(dǎo)致了鍋爐板模式,并且使用Spring Cloud開(kāi)發(fā)人員可以快速地站起來(lái)實(shí)現(xiàn)這些模式的服務(wù)和應(yīng)用程序。 它們可以在任何分布式環(huán)境中正常工作,包括開(kāi)發(fā)人員自己的筆記本電腦,裸機(jī)數(shù)據(jù)中心和受管平臺(tái),如Cloud Foundry。
以上就是公司普遍使用的一些框架,當(dāng)然還有其他的一些框架源碼,比如jFinal、ejb、公司自研封裝的一些框架等等,不管用什么框架,技術(shù)選型的前提就是滿足需求,學(xué)習(xí)成本低,開(kāi)發(fā)效率高,伸縮性能和可擴(kuò)展性能要好等等。 以上,你都用過(guò)嗎?歡迎留言討論。
【無(wú)情懷,不編碼。做一個(gè)有情懷的碼農(nóng),雖千萬(wàn)人,吾往矣!】 關(guān)注java自學(xué)、java技術(shù)、求職領(lǐng)域,為你導(dǎo)航領(lǐng)路,指點(diǎn)迷津,分享學(xué)習(xí)感受和技能經(jīng)驗(yàn)。歡迎點(diǎn)贊、轉(zhuǎn)發(fā)、關(guān)注和留言,任何java學(xué)習(xí)或求職面試問(wèn)題可以留言私信,有問(wèn)必答。