CUBA平台的理念
最近發生了很多事。 在CUBA于6月1日正式發布之后,我們推出了一個新版本,在一些Java網站上發布了我們的第一篇文章,并在倫敦的Devoxx UK會議上介紹了該平臺 。 但是在熱潮繼續之前,大約是時候闡明CUBA背后的哲學了。
與企業軟件開發相關的第一句話可能是:緩慢,例行,復雜和混亂-一點都不令人興奮! 應對這些挑戰的常用方法是提高抽象水平-開發人員可以使用封裝內部機制的接口和工具進行操作。 這樣一來,您就可以專注于高級業務需求,而無需為每個項目重新發明通用流程。 這樣的概念通常在框架或平臺中實現。
之前的CUBA文章解釋了為什么CUBA不僅是一堆眾所周知的,全面集成在一起的開源框架。 簡而言之,它為聲明性UI提供了具有數據感知的可視組件,從復雜的安全模型到BPM的開箱即用功能以及強大的開發工具來補充您選擇的IDE。
您可以在我們的“ 學習”頁面上輕松找到更多詳細信息,因此,與其列出所有細節,我將嘗試“提高抽象級別”并解釋CUBA的基本原理。
實際的
該平臺是一種生物,其發展主要受開發人員的特定要求驅動。 當然,我們會不斷跟蹤新興技術,但是我們相當保守,只有在看到它們可以為企業軟件開發帶來切實價值時才采用它們。 因此,CUBA非常實用。 它的每個部分都是為了解決某些實際問題而創建的。
積分
除了明顯的素材功能外,CUBA Studio提供的可視化開發環境大大減少了初學者和初學者的學習難度。 平臺為您的應用程序帶來統一的結構甚至更為重要。 當您打開基于CUBA的項目時,您將始終知道在何處可以找到屏幕或屏幕中的組件。 業務邏輯位于何處以及如何調用。
快速理解和更改其他開發人員編寫的代碼的這種能力不可低估,這是持續進行企業開發的重大好處。 企業應用程序生命周期可能會持續數十年,并且您的解決方案必須隨著業務環境的發展而不斷發展,無論團隊中的任何變化如何。 因此,在需要時靈活地輪換,擴大或縮小團隊規模是公司的主要考慮之一,尤其是那些外包開發或分布團隊的公司。
打開
CUBA的主要原則之一是開放性。 這從完整的平臺源代碼開始,當您處理基于CUBA的項目時,您將擁有這些源代碼。 此外,該平臺也是開放的,您可以根據自己的需要更改幾乎任何部分。 您不需要派生它來定制平臺的某些部分–可以在您的項目中擴展和修改平臺功能。 為此,我們通常遵循開放繼承模式,以提供對平臺內部組件的訪問。 我們知道,當項目升級到較新的平臺版本時,這可能會導致問題。 但是,從我們的經驗來看,這比維護叉子或接受無法針對特定任務調整工具的邪惡程度要小得多。
我們還可以提供許多特定的擴展點,但是在這種情況下,我們必須預期應用程序開發人員將如何使用該平臺。 這樣的預測總是遲早會失敗。 因此,我們改為使整個平臺易于擴展:您可以繼承和覆蓋平臺Java代碼,包括對象模型,XML屏幕布局和配置參數。 在可傳遞性上,對于基于CUBA的項目來說仍然如此。 如果遵循一些簡單的約定,您的應用程序將可以擴展,從而使您可以將單個產品適應許多客戶。
共生
CUBA并未定位為“自身事物”。 當已經存在合適且得到良好支持的儀器并且我們可以在不犧牲平臺可用性的情況下進行集成時,我們將與之集成。 這種集成的一個例子是全文搜索和BPM引擎,JavaScript圖表和Google Maps API。 同時,由于我們找不到合適的工具(從技術和許可證角度考慮),我們不得不從頭開始實現自己的報告生成器 。
CUBA Studio也遵循此原則。 它是一個獨立的Web應用程序,不會替代您的首選IDE。 您可以并行使用Studio和IDE,并在它們之間切換以完成不同的任務。 在Studio中實施的WYSIWYG方法非常適合設計數據模型和屏幕布局,而經典的Java IDE最適合編寫代碼。 您可以直接在IDE中更改項目的任何部分,甚至可以更改Studio創建的內容。 當您返回Studio時,它將立即解析所有更改,使您可以繼續進行可視化開發。 如您所見,我們遵循共生方法,而不是與Java IDE的功能競爭。 此外,為了提高編碼效率,我們為最受歡迎的IDE開發了插件。
當我們與第三方框架集成時,我們總是將其包裝在更高級別的API中。 這樣可以在需要時替換基礎實現,并使整個平臺API長期保持穩定,并減少對集成第三方框架中不斷變化的依賴。 但是,我們不限制直接使用基礎框架和庫。 如果CUBA API不適合特定的用例,這是有道理的。 例如,如果您無法通過通用UI進行某些操作,則可以打開視覺組件并直接訪問Vaadin(或Swing)。 數據訪問也是如此; 如果某些操作很慢或ORM不支持,只需編寫SQL并通過JDBC或MyBatis運行它即可。 當然,此類“ hack”會導致更復雜,更不便于移植的應用程序代碼,但與使用標準平臺API相比,它們通常很少見。 這種固有的靈活性知識和“可以”的感覺為開發人員增加了很多信心。
使用范圍廣
如果您需要創建一個包含5-10個屏幕的任何內容的應用程序,我們建議您使用CUBA,只要它們由標準組件(例如字段,表單和表格)組成。 使用CUBA的效果隨應用程序的復雜性呈指數級增長,而與域無關。 我們已經在金融,制造,物流和其他領域交付了復雜的項目。 例如,一個不明顯但很流行的用例是使用CUBA作為后端和管理UI,同時使用另一種更輕或更可定制的Web技術創建最終用戶界面。
我希望您能自己看到該平臺的一些用例,因此在下一篇文章中,我們將重點介紹“內幕”,因為我們將詳細介紹CUBA的各個部分。
翻譯自: https://www.javacodegeeks.com/2015/06/the-philosophy-of-the-cuba-platform.html
總結
- 上一篇: 银行卡挂失流程
- 下一篇: 银行卡可以在网上解冻吗?