CUBA Platform —— 開源的、可靠的企業級應用開發利器

来源:https://www.cnblogs.com/cubacn/archive/2018/07/26/cubaplatform1.html
-Advertisement-
Play Games

本文為CUBA-Platform簡介 ,一個結合了可靠架構、企業級應用程式“必備”功能和應用程式快速開發工具的開源框架。 ...


 

原文:CUBA Platform: An Open-Source Java Framework for Rapid Application Development

翻譯:CUBA China                                                         

CUBA-Platform 官方網站 : https://www.cuba-platform.com

CUBA China 官方網站 : http://cuba-platform.cn

歡迎轉載,轉載請註明來源: https://www.cnblogs.com/cubacn/p/cubaplatform1.html。

前言

  CUBA China是由多名具有豐富的行業軟體、工具軟體開發經驗的開發人員組成的團隊,我們出於對CUBA-Platform開發技術的共同愛好而成立, 我們的初衷是建立一個社區、與更多的行業軟體開發人員一起交流關於CUBA-Platform及企業級應用的開始技術、架構經驗等。

  作為企業軟體開發行業的“老兵”,我們經歷過眾多的開發框架,包括國內的、國外的,我們每個人對於所使用過的框架都持有種種不滿意,但CUBA-Platform的整體表現讓我們印象深刻,她具有深厚的技術沉澱(GITHUB上自2009年起有代碼提交)、源自實踐的設計、豐富的文檔、開放的姿態、先進的技術棧、完備的企業軟體基礎功能、高度可定製的系統架構、開發工具加持等等,所有這些讓我們認為她是一個值得投入的框架。

  獨樂樂不如眾樂樂,所以我們計劃構建並維護一個中國地區CUBA-Platform的社區,為國內的企業應用開發人員提供關於CUBA-Platform及企業級應用的技術交流、討論的平臺。。

  這篇文章是我們介紹CUBA-Platform的第一篇文章,後續我們會持續推出一系列翻譯或原創文章。 如果您希望進一步瞭解CUBA-Platform並及時獲得最新的技術文章,請掃描文章右側或下方的二維碼關註我們的公眾號。

摘要

  本文CUBA-Platform簡介 一個結合了可靠架構企業應用程式必備功能和應用程式快速開發工具的開源框架。

為什麼需要開發框架

       從進入電腦時代起,企業應用軟體開發一直面臨一個挑戰:雖然企業應用開發的目的是解決實際業務問題,但事實上開發人員必須花費大量時間和精力在純技術層面,比如軟體架構和一些很通用的功能。

       為瞭解決上述技術與業務之間的不對等精力消耗,涌現了很多開發框架,目的都是為了提高抽象級別,將開發人員從低級繁雜的工作中解放出來。隨著時間的推移,這些開發工具越來越智能,使得開發效率越來越高。Borland Delphi就是21世紀初最成功的例子之一,它能使開發產出大幅提升。

       過去的十年以來, 企業級應用軟體的需求越來越多、系統越來越龐大、功能越來越複雜、技術更新迭代不斷,促生了對新一代高效框架和開發工具的需求。

       在這篇文章里我們要介紹CUBA-Platform  :一個結合了可靠架構、企業級應用程式必備功能和快速應用程式開發工具的開源框架,它有助於大幅提高研發團隊的開發效率、提高交付質量。

CUBA平臺與其他框架有何不同?

       CUBA平臺與其他大多數Java框架最大的區別是:它的抽象級別更高,開發人員可以只專註於解決業務問題。它把稍高但是又有些偏“底層”的技術細節(如Vaadin,Spring和EclipseLink)也封裝起來,並自帶豐富的應用功能和開發工具,因此開發人員可以最大限度地專註於業務實現 。同時,CUBA並不限制對底層代碼的訪問,這樣可以保證框架可以適應具體項目的需求。

       CUBA平臺能為開發企業應用程式帶來巨大價值:複雜的數據模型、數十或數百個頁面、各式各樣的業務流程、系統的健壯性安全性等等。  

CUBA應用內部細節初探

架構

       CUBA應用程式具有標準的三層體系架構。連接各層的紐帶是元數據 – 就是我們所知的數據模型。它使所有可視組件都具有數據感知能力。比如,表格可以知道自己所展示實體的屬性、標簽知道自己在顯示日期。類似地,元數據有助於可視組件通過ORM與數據層進行通信,ORM用來定義對象的關係圖,決定是否需要載入或者更新數據。安全子系統、報表生成器和平臺的其他組件也有同樣的機制。

前端界面(Vaadin)

       CUBA-Platform使用Vaadin作為預設的前端界面框架,並提供聲明式的界面開發模型,用戶可以在可視化設計器或XML中定義頁面佈局。CUBA框架內置70多種Vaadin可視化組件供選擇,比如各類按鈕、表格組件、樹組件、表單欄位、 地圖組件、動態圖表、透視表等等,涵蓋企業應用界面需要的一切組件。界面定義完成後,在Java控制器中添加組件的初始化邏輯和事件處理邏輯。基於組件的數據感知功能,用戶可以非常快速地創建專業的企業應用頁面。業務邏輯代碼和頁面佈局代碼分離,系統更易於維護。如果各式各樣可視化組件還是不能滿足用戶需求,CUBA也可以靈活的集成外部JavaScript庫、GWT或Vaadin組件。

[WEB前端界面示例]

 

 

端界面 (Polymer)

       Google Polymer是CUBA-Platform的另一個可選的前端界面技術,通過Restful API與CUBA項目服務端進行通訊。Google Polymer客戶端界面一般用於功能操作較少,但界面要求更靈活、可提供移動優先的響應式WEB界面。

[Polymer界面示例]

 

過濾器

        CUBA用戶界面的一個重要功能:過濾器 – 這個組件能夠讓用戶自定義搜索條件,並且開發起來很簡單:開發人員只需將它放到一個顯示實體列表的頁面就萬事大吉了。用戶或管理員可以根據各自的需求定義各自的搜索條件。

       過濾器得益於CUBA元數據驅動的開發理念,過濾器能感知到自己綁定的實體,通過元數據,過濾器可準確地展示出表格可過濾的欄位、限制關鍵字的值類型、提供備選值列表等。

[添加過濾欄位]

[過濾器界面]

安全控制

       訪問控制對於企業級應用來說至關重要,在CUBA項目中所有的用戶操作均由安全子系統控制。

       CUBA支持實體級別、行級別、實體屬性級別(列級別)的數據讀寫控制;功能界面功能也可以基於角色開放或拒絕;也可以對界面上的組件進行基於角色的許可權控制。行級別的安全機制用來控制用戶只能對實體的某些數據記錄(行)的訪問 - 例如,某部門的用戶只能看到該部門用戶創建的文檔。

       所有許可權設置都可以在運行時通過界面進行配置,所有更改都可以由系統管理員線上操作。當然,所有數據的更改歷史都有記錄,誰在何時更改了什麼 -出現問題時溯源以及彙報都很方便!

企業級應用必備功能

內置基礎的WEB安全設施

       CUBA-Platform作為一個框架,整合了最佳安全實踐,可自動對WEB應用程式中的大部分常見漏洞提供防護。比如跨站腳本(XSS)攻擊、跨站請求偽造攻擊(CSRF)、SQL註入攻擊等。

用戶管理模塊

       用戶管理模塊包含了用戶管理、角色管理、訪問組管理等界面,通過用戶管理模塊可在運行時對系統用戶、角色、訪問組進行增、刪、改的維護;可對用戶的許可權進行管理。

管理工具

       CUBA-Platform內置了多個管理員實用工具,這些有助於系統管理員瞭解系統的運行情況、快速查找定位系統問題、自動執行重覆性的管理任務等。

       日誌查看功能

       通過日誌查看功能,系統管理員不必登錄伺服器,直接登錄系統來查看各種日誌,比如伺服器日誌、實體日誌、session日誌等。

       實體(Entity)探查

         CUBA-Platform可在運行時分析實體定義、動態生成實體數據瀏覽界面、數據編輯界面,管理員可通過實體探查功能查看、維護系統數據。

       性能統計

       通過性能統計功能,管理員可 全面瞭解系統運行的數據,比如系統運行時間、記憶體占用數據、CPU占用數據、資料庫連接數據、客戶端請求數據等。這些數據可為管理員優化系統配置、硬體配置、排查問題提供依據。

       定時任務

       通過定時任務,管理員可配置任意需要周期性或定時執行的任務,比如定時清理磁碟空間、定時發送系統狀態通知等。

       數據恢復

       CUBA-Platform支持數據軟刪除,實體刪除執行了刪除操作後並不被物理刪除,只是給數據添加了刪除標記。如果發生了數據誤刪,管理可通過數據恢復功能恢復刪除的數據。

       Session查看

       通過用戶會話功能,管理員可查看所有線上的用戶,並可對用戶會話進行管理。比如發送消息給用戶、註銷用戶登錄等。

多語言和多時區支持

       CUBA-Platform提供了標準化多語言開發規範,可以使業務系統很方便地支持多國語言,這點對於開發國際性的業務系統很有幫助。

通用REST API

       通過CBUA-Platform,可很容易地實現REST API。方便外部系統與CUBA開發的業務系統進行集成,外部系統可以通過REST API調用基於CUBA的業務系統的中間件服務、訪問領域實體數據。交互的數據格式支持JSON和XML。

管理

       報表模塊可以幫助開發人員快速生成各種類型的統計報表,並支持以多種格式輸出。

工作流模塊

       CUBA Platform的BPM模塊基於Activiti,提供流程設計、執行和管理業務流程的工具,支持BPMN 2.0標準。

全文檢索

       CUBA-Platform的全文搜索(FTS)功能對實體屬性和上傳的文件內容進行索引,提供非結構化搜索。

CUBA應用部署

       在程式部署和軟體運行環境方面,可選項很多。CUBA應用程式有多種部署配置方案,可以在單個伺服器運行所有程式,或者採用單獨中間件(後臺服務程式)加Web集群的方式。

       平臺開箱支持的資料庫有:PostgreSQL,Oracle,Microsoft SQL Server,MySQL和HSQL(通常用於原型設計),隨著項目的發展,用戶也可以輕鬆地切換資料庫。

       WEB應用方面, CUBA應用程式可以部署到任何Java EE Web 伺服器(例如Jetty,Tomcat,Glassfish或Websphere)。當然,用戶也可以把應用編成Docker鏡像,也可以在流行的PaaS雲中部署,比如CloudFoundry,OpenShift或Jelastic。

如何開發CUBA應用?

       使用CUBA 平臺開發應用程式,你只需要懂得Java SE,XML和JPQL – 你的應用程式代碼會更統一更易於維護。你的開發團隊也更加靈活 – 你並不需要專門的Web開發人員或Java EE專家團隊。

       

用戶可以自己選擇IDE開發業務邏輯,比如IntelliJ IDEA或Eclipse。CUBA也提供了CUBA應用的集成開環境:CUBA Studio – 一個輔助開發的可視化工具,CUBA有關的任務都可以通過它自動完成:

  · 配置項目基礎信息可視化設計UI和數據模型

  · 帶有多種佈局選項的增刪查改腳手架頁面

  · 自動生成和運行資料庫腳本

  · 監聽處理器(handlers)和介面創建腳手架代碼

         Studio與IDE之間的所有改動都是同步的,用戶可以完全自由地選擇在哪裡進行更改。為了進一步提高開發人員的效率,Studio會自動熱部署除數據模型之外的所有代碼。因此,Studio大大避免了例行工作和編寫樣板代碼的工作量,而且還不限制用戶對編碼工具的選擇。

       如果用戶考慮將舊系統升級到流行的技術棧,CUBA也有解決方案。Studio自帶的遷移工具可以將舊資料庫轉換為符合CUBA平臺的資料庫,並根據數據模型自動生成頁面,用戶只需要添加自定義頁面和遷移業務邏輯代碼。

收費嗎?

       如標題所述,核心框架(CUBA Framework)是開源的,是Apache 2.0許可, 源碼都在GitHub上。所以對用戶在CUBA上開發的軟體沒有許可限制。您可以免費使用IDEA或Eclipse基於CUBA Framework進行業務系統的開發。

       如果您想加快開發過程或者團隊中有一些初級開發人員,那麼您可以使用CUBA Studio來幫助提升開發效率。

 

結束

       CUBA-Platform是一個基礎設施可靠、通用功能完善的開發框架,一篇文章不足以概括她的方方面面。希望本文可以讓您對CUBA平臺有一個初步的瞭解並且決定親自試一試。接下來您可以:下載免費的Studio,根據快速入門指南,在幾分鐘內運行您的第一個CUBA應用程式!

  您也可以訪問我們的論壇,通過討論提交您的問題、想法

 

 

鏈接

CUBA-Platform 官方網站 : https://www.cuba-platform.com

 CUBA China 官方網站 : http://cuba-platform.cn

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,效果圖。 二,代碼。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Todo</title> <meta name="viewport" content="initial-scale=1, maximum-scale=1, ...
  • 線程池 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory thre ...
  • 1.工廠模式 工廠模式是我們最常用的實例化對象模式了,是用工廠方法代替new操作的一種模式。著名的Jive論壇 ,就大量使用了工廠模式,工廠模式在Java程式系統可以說是隨處可見。因為工廠模式就相當於創建實例對象的new,我們經常要根據類Class生成實例對象,如A a=new A() 工廠模式也是 ...
  • 前言 之前學多線程的時候沒有學習線程的同步工具類(輔助類)。ps:當時覺得暫時用不上,認為是挺高深的知識點就沒去管了.. 在前幾天,朋友發了一篇比較好的Semaphore文章過來,然後在瀏覽博客的時候又發現面試還會考,那還是挺重要的知識點。於是花了點時間去瞭解一下。 Java為我們提供了 三個同步工 ...
  • #include #include //提供malloc()原型 /* 線性表需要的方法: 1、 List MakeEmpty():初始化一個空線性表 2、 EementType FindKey(int K, List L):根據位序K,返回相應元素 3、 int Find(ElementType ... ...
  • 前言 這次分析信號量Semaphore,為什麼稱之為信號量呢?是因為它可以控制同時訪問某個資源的操作數量或是同時執行某個指定操作的數量。就好比它像一個租賃汽車的公司,租賃公司的汽車的數量是固定的,用完需要歸還,用之前需要去租借(acquire 前提是還有可用的汽車),如果汽車都被租出去了,那隻能等到 ...
  • 首先感謝授課XXX老師。 1.什麼是線程安全問題 當多個線程共用同一個全局變數,做寫的操作時候,可能會受到其他線程的干擾,導致數據出現問題,這種現象就叫做線程安全問題。做讀的時候不會產生線程安全問題。 什麼安全:多個線程同時共用一個全局變數,做寫操作的時候會發生線程安全。 多個線程共用同一個局部變數 ...
  • 最近在做一個項目的時候,需要使用golang來調用操作系統中的命令行,來執行shell命令或者直接調用第三方程式,這其中自然就用到了golang自帶的exec.Command. 但是如果直接使用原生exec.Command會造成大量的重覆代碼,網上搜了一圈又沒有找到對exec.Command相應的封 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...