日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CUBA平台使用感想 - 架构师角度

發(fā)布時(shí)間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CUBA平台使用感想 - 架构师角度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用CUBA.Platform快要有一年了,從最初的難以理解和比較抵觸,到現(xiàn)在真的有點(diǎn)喜歡這個(gè)框架,中間也確實(shí)經(jīng)歷了不少事情。

先簡單介紹一下CUBA平臺(tái),這個(gè)框架是基于Spring的一個(gè)Java開發(fā)框架,目前的版本采用典型的三層架構(gòu),ORM層使用的是EclipseLink,中間件層使用的是Spring,展示層使用的是Vaadin(web client),Swing(desktop client)和Polymer(web portal)。所以其核心還是以Spring為中心的Java EE框架。

由于之前我用的Hibernate+Spring boot+Angular的技術(shù)架構(gòu),所以剛開始接觸CUBA的時(shí)候會(huì)比較抵觸,主要有這幾個(gè)方面:

  • 使用了不少xml,其中Spring bean的配置、view(EclipseLink的視圖)的配置、REST service的配置、頁面結(jié)構(gòu)的配置等等,基本都是用xml來做。對(duì)于習(xí)慣了Spring boot的開發(fā)者來說,可能是會(huì)覺得比較麻煩。但是其實(shí)xml配置也有一個(gè)好處,就是配置都集中在xml文件里,而不會(huì)分散在各個(gè)包內(nèi)。
  • 使用了Vaadin框架作為前端頁面實(shí)現(xiàn)。CUBA本身支持三種前端,包括基于Vaadin的web client,基于Swing的desktop client,還有基于Polymer的web portal。其中Vaadin和Swing都是用Java語言寫的前端,只有Polymer是google的框架,使用的是純前端的技術(shù)。Vaadin有個(gè)問題就是做樣式調(diào)整需要后端人員配合,這樣的話,純前端人員使用上會(huì)覺得非常麻煩。
  • CUBA提供了一個(gè)便于開發(fā)的Studio,使得開發(fā)的過程中需要在Studio和IDE環(huán)境之間頻繁切換。這個(gè)對(duì)于老鳥來說,多少有點(diǎn)累贅。
  • 然后站在架構(gòu)師的角度,我再說說CUBA比較好的地方,最后再說我是怎么克服或者說理解CUBA的架構(gòu),才明白其實(shí)之前三點(diǎn)對(duì)CUBA討厭的地方只是對(duì)這個(gè)框架不了解。

    CUBA框架在架構(gòu)上的優(yōu)點(diǎn),通過我這近一年的使用來看,有以下幾個(gè):

    1. 功能組件化。在開發(fā)高度可定制化產(chǎn)品這篇文章中有提到,怎樣做產(chǎn)品和客戶化之間關(guān)系的管理,CUBA獨(dú)特的組件化無疑是個(gè)最大的亮點(diǎn)。我們可以把通用功能,比如短信服務(wù)、消息隊(duì)列機(jī)制、通用報(bào)表等等功能上不依賴具體客戶化的模塊做成CUBA組件。也可以把客戶化功能,比如某某客戶要求的一種特殊的數(shù)據(jù)類型導(dǎo)入或者某某某客戶要求的對(duì)接某一特殊網(wǎng)絡(luò)接口接入數(shù)據(jù)等非常不通用的功能也做成組件化。這樣一來對(duì)于項(xiàng)目實(shí)施就會(huì)有兩種思路:第一種是我們專注通用產(chǎn)品開發(fā),而將客戶化功能作為組件嵌入;另一種就是我們專注客戶化開發(fā),而將通用產(chǎn)品功能作為組件嵌入。這兩種思路在平衡產(chǎn)品研發(fā)和客戶化功能需求的時(shí)候可以按需選擇,如果客戶化功能不多,可以采用第一種方案,反之采取第二種方案。

    2. 支持?jǐn)U展。

  • 支持Bean的擴(kuò)展。CUBA平臺(tái)由于基于Spring技術(shù),所以帶來了很好的可擴(kuò)展性。首先是Spring的Bean,我們只需要繼承并Override Bean的方法然后在Spring Context注冊同樣名稱的Bean就可以替換CUBA提供的Bean,所以,任何CUBA默認(rèn)提供的功能都可以做客戶化定制開發(fā)。比如FileStorage,目前CUBA只提供對(duì)于目錄和對(duì)于AmazonS3的文件存儲(chǔ)方案,但是如果我們需要使用FTP作為文件存儲(chǔ)呢,很簡單,只要實(shí)現(xiàn)CUBA提供的FileStorageAPI的接口,然后在Spring.xml里面配置用你的實(shí)現(xiàn)類替換默認(rèn)的類就行。
  • 支持頁面擴(kuò)展。這里就是用xml配置頁面的好處了,之前也接觸過一些開發(fā)平臺(tái),但是有個(gè)問題就是平臺(tái)提供的一些頁面,沒法做擴(kuò)展。比如用戶編輯頁面,需要增加用戶信息的時(shí)候只能自己開發(fā),平臺(tái)提供的默認(rèn)頁面就成了雞肋。但是如果需要修改CUBA自帶頁面設(shè)計(jì)的組件或者結(jié)構(gòu),或者想擴(kuò)展自己開發(fā)的頁面,只需要在頁面配置的xml文件里“繼承”一下想要擴(kuò)展的頁面就好了。然后可以在新的xml“重寫”或者添加新的頁面元素。這一點(diǎn)是很多框架平臺(tái)做不到的。
  • 支持?jǐn)?shù)據(jù)庫實(shí)體擴(kuò)展。大家可能覺得奇怪,實(shí)體擴(kuò)展不就是類繼承么,有什么好提的?如果只是類的繼承確實(shí)沒什么好提的,但是CUBA提供的不只是繼承,還有替換!有沒有遇到過這樣的情況,使用開發(fā)平臺(tái)的時(shí)候,比如平臺(tái)提供的User實(shí)體,可能你需要添加一些其他的屬性,比如電話號(hào)碼,公司職位等,但是平臺(tái)默認(rèn)提供的User并不支持,你就得開發(fā)一個(gè)UserExt實(shí)體,擴(kuò)展User,然后在UserExt里面一對(duì)一的關(guān)聯(lián)User實(shí)體。這無疑給開發(fā)帶來了麻煩,因?yàn)樾枰P(guān)聯(lián)查詢。但是CUBA提供實(shí)體類擴(kuò)展替換,就是說在CUBA里面,你的UserExt是直接擴(kuò)展User表,并且全局替換掉User實(shí)體,這樣你可以直接在CUBA的User表里面添加字段,而不需要使用關(guān)聯(lián)查詢了,任何JPQL訪問User實(shí)體的時(shí)候都會(huì)在底層被替換成訪問UserExt實(shí)體,這些都是平臺(tái)幫我們做的。我們使用的時(shí)候雖然是UserExt,但是跟用User沒區(qū)別了。
  • 3. 安全子系統(tǒng)

    默認(rèn)提供了集成LDAP的方案,Windos login可以直接使用統(tǒng)一單點(diǎn)登錄。除此之外,CUBA系統(tǒng)本身也支持基于Http的單點(diǎn)登錄,只需要簡單的配置就可以。雖然目前CUBA的單點(diǎn)登錄還不支持外部系統(tǒng),不過這塊可以通過客戶化開發(fā)解決。在CUBA的論壇上也提供了基于SAML協(xié)議的SSO方案。在REST API安全性方面,CUBA默認(rèn)提供三種方式:全局匿名,全局需要認(rèn)證,部分API匿名,以滿足多樣化的API請求環(huán)境。

    4. 方便的REST API開發(fā)

    CUBA開發(fā)的系統(tǒng)本身就帶了很多預(yù)制的REST API,包括執(zhí)行JPQL、查詢實(shí)體、提供授權(quán)token等。除此之外,利用CUBA開發(fā)REST API也是非常的簡單。用SpringMVC已經(jīng)很簡單了,只需要自己寫RestController,RequestMapping等,但是用CUBA,簡單到只需要寫Service!實(shí)體的增刪查改只需要?jiǎng)?chuàng)建實(shí)體類就搞定了。其他service的REST API,只需要寫好service的方法,在Studio里面勾選需要支持REST API的選項(xiàng)(不用studio的話,自己把service添加到rest-service.xml就行)就好了!同時(shí)支持GET跟POST方法。這樣的話,開發(fā)API的腳手架代碼也都可以省去。如果采用前后端分離的開發(fā)方法,后端工程師只需要關(guān)注業(yè)務(wù)邏輯的開發(fā)。

    5. 部署多樣化

    通過CUBA Studio很方便在開發(fā)環(huán)境進(jìn)行部署,用Studio啟動(dòng)項(xiàng)目之后,會(huì)在項(xiàng)目的根目錄創(chuàng)建一個(gè)deploy目錄,里面會(huì)有全套的Tomcat以及部署好的應(yīng)用服務(wù)。想偷懶的話,直接把這個(gè)tomcat丟到服務(wù)器上,啟動(dòng)服務(wù)就行。除此之外,還支持UberJar方案,前后端分離部署方案,前后端分別做集群方案等,以及支持Heroku等云部署方案,docker方案,不贅述了,需要了解的可以參考CUBA官方文檔。

    ?

    最后再說一下本文開頭的幾個(gè)起初覺得CUBA不是很好的地方:

    1.使用很多xml。其實(shí)從開發(fā)人員使用的角度,如果不是老鳥,是感受不到太多xml的,除了screen.xml,這個(gè)需要開發(fā)人員在寫頁面元素的時(shí)候會(huì)用到。很多xml的配置在使用CUBA Studio的過程中它會(huì)自動(dòng)幫我們修改和配置的。但是CUBA用xml比較多還有另外一個(gè)原因,它的xml提供了更多的功能,通過xml這個(gè)紐帶,連接了Studio和CUBA,CUBA和Spring,正是因?yàn)閤ml的集中配置功能,Studio才能很好的幫助管理項(xiàng)目,并進(jìn)行自動(dòng)化配置。

    2.使用Vaadin的情況。其實(shí)CUBA的初衷,并不是用Vaadin來做最終用戶的UI,最終用戶的UI是要用portal來做的,portal是基于Polymer的自適應(yīng)前端框架,可以很好的適配不同分辨率的客戶端,從桌面電腦到手機(jī)。那Vaadin客戶端是做什么用的呢?Vaadin是用來開發(fā)給內(nèi)部人員使用的管理界面,不要求頁面展現(xiàn)多么炫酷,而追求顯示更多的內(nèi)容,更合理的操作。比如一個(gè)典型的場景就是出租車調(diào)度系統(tǒng),乘客和司機(jī)會(huì)通過手機(jī)端訪問portal展現(xiàn)的頁面,而出租車公司的調(diào)度人員會(huì)訪問Vaadin開發(fā)的調(diào)度頁面。這種情況下,開發(fā)人員不需要對(duì)Vaadin的樣式做太多修改,甚至使用默認(rèn)主題就行,只需要能展示清晰、有條理的數(shù)據(jù)給管理人員即可。另外,CUBA將來也不單單是支持Polymer前端portal,也會(huì)支持基于React的前端技術(shù),也有可能支持Angular前端,但是Vaadin還是作為主要的功能前端技術(shù)選型,因?yàn)閂aadin能很好的跟后臺(tái)集成開發(fā),對(duì)快速實(shí)現(xiàn)業(yè)務(wù)功能提供了很好的支持,同時(shí)通過Vaadin的websocket技術(shù),對(duì)前端安全也增加了一份保障。

    3.Studio的情況,通過上面的介紹大家也應(yīng)該知道了,studio可以幫我們完成很多腳手架代碼,并且對(duì)于初學(xué)者來說,是個(gè)非常好的起點(diǎn)。但是,是需要但是一下的,CUBA的下一步動(dòng)作是更多的免費(fèi),所以Studio很可能會(huì)變成一個(gè)完全收費(fèi)的產(chǎn)品,不過不用擔(dān)心,在免費(fèi)領(lǐng)域CUBA會(huì)提供CLI和IDEA+CUBA插件的方式提供服務(wù),對(duì)于喜歡黑屏幕的老鳥,可以直接使用CLI,對(duì)新人可以選擇IDEA加CUBA插件的方式,或者選擇購買Studio(一年300多美金,真不貴)。所以從支持開發(fā)者這點(diǎn)來說,CUBA的工具和服務(wù)是貫穿開發(fā)過程始終的,能在項(xiàng)目的各個(gè)環(huán)節(jié):啟動(dòng)、開發(fā)、測試、部署都提供支持。這一點(diǎn)很多開發(fā)平臺(tái)是做不到的,有的作為代碼生成器可能就是第一次提供給你代碼,后來全靠手工自己寫了。

    ?

    所以從架構(gòu)師的角度看,CUBA采取了經(jīng)典的三層架構(gòu),但是在客戶端層做了多樣化前端技術(shù)支持,并且提供開發(fā)全生命周期的工具支持。總的來看,是非常不錯(cuò)的選擇。

    ps,CUBA名稱就是來源于古巴島,漂亮的地方 ^^?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/byin/p/9810907.html

    總結(jié)

    以上是生活随笔為你收集整理的CUBA平台使用感想 - 架构师角度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。