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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

我个人的CRUD故事-或我如何来到CUBA平台

發布時間:2023/12/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我个人的CRUD故事-或我如何来到CUBA平台 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在此博客文章中,我想介紹一下我如何使用CUBA平臺以及此工具的好處。 在我年輕的“業務應用程序開發”歷史上,我將深入探討不同的階段,只為您提供一些背景知識。 因此,讓我們從如何進入典型的CRUD應用程序開始,以幫助非技術人員提高生產力。

關于我的CRUD背景的簡短歷史

多年來,我偶然發現了公司完全不同領域中的同類問題。 從小商店到相當大的企業,人們通常都有一些基本的業務流程,應該加以實現。 這些業務流程通常與輸入數據并駕齊驅。

我在租車世界中首先遇到了這類要求。 我工作過的一家公司開始在周末將小挖掘機出租給私人園丁。 顯然,他們想安排他們所擁有的一些挖掘機的租賃。

所以基本上這是領域:

具有客戶-訂單關系的域示例

每兩本軟件工程書中都會發現一個典型示例。

我們從訪問數據庫之類的東西開始就可以實現我們的目標。 隨著業務的增長,對軟件的需求也隨之增長。

從向用戶顯示在給定時間范圍內租用了哪些產品的訂單列表(我應該指出,這是一種非常糟糕的方式),我們想要實現某種更高級的計劃視圖。 由于用戶的位置不只一個,因此基于Web的軟件似乎更有意義。 因此,我開始了PHP之旅,那是當時的一個非常流行的選擇。

但是真正讓我感到奇怪的是這種情況,我不得不一遍又一遍地做同樣的事情。 因為除了實際的重要視圖(如上面提到的調度視圖)外,還有大量的視圖和CRUD東西也必須實現。 通常,沒有人真正在乎這些屏幕,因為它不支持主要業務流程。 但是,產品,租用地點,用戶,角色和所擁有的東西也都希望由用戶創建和管理。

在停留在PHP世界中之前(這很早就出現在不同的Framework上,或者至少是“引起我的注意”)–因此,我真的要使用HTML,PHP, PEAR等“裸機”和其他瘋狂的東西,例如script.aculo.us 。

腳手架救援

快進-幾年,然后進行CRUD項目。 由于計算機科學的研究主要以Java形式進行,因此面向對象是我想到的所有方面。 看來我已經準備好邁出下一步。 正如我們大多數人所知道的那樣,用Java做基于Web的軟件比痛苦更不是痛苦。 因此,我環顧四周以擺脫過去幾年中制作的舊PHP東西。

在此期間,博客上的新孩子是Rails。 諸如CoC , 數據庫遷移等引入的Web應用程序概念對我來說非常令人驚訝。 但是有一件事是令人大開眼界的: 腳手架 。 要從定義業務對象的模型出發,從數據庫定義到HTML表單以及“ RESTful API”生成完整的堆棧,這是非常必要的。 這讓我改變了主意,“我必須以編程方式創建什么,軟件/框架/生成器應該為我做什么”。

軟件行業的普遍共識是,現在和現在仍然是,必須謹慎對待這些腳手架機制。 這種癲癇癥的原因是多方面的。 一件事是,“它不適用于實際應用程序”。 另一個經常聽到的消息是“結果UI不符合我們的要求”。

一個由Grails生成的作者和書籍的腳手架示例。

考慮時,這是絕對正確的。 因為有了(G)Rails之類的框架,您便擁有了通用工具。 這意味著它不直接與某些類型的應用程序綁定。 您可以創建具有高度優化的ui的在線商店,就像可以實現各種應用程序一樣為基于Javascript的胖客戶端創建RESTful HTTP后端。 您可以像企業應用程序一樣執行CRUD,就像為公司的營銷活動創建響應式網站一樣。

Web應用程序世界中可實現的應用程序空間

因此,腳手架不能解決所有這些問題,因為范圍太寬。 這就是為什么這些腳手架嘗試的結果會以域類型的CRUD接口結束的原因,從UI的角度以及功能上來看,域類型都有一定的局限性。 完全可以,因為這些框架的重點從來沒有放在支架的方面。

“特定于域”取決于角度

盡管我說過,Rails都是通用的 ,但Martin Fowler 告訴我們這不是通用的 ,而是特定于領域的 。 我是誰,他是最初的敏捷宣言的一部分 ,是重構的作者,是Refactoring的作者,還有很多其他好東西,這推動了軟件行業的發展?

問題是, 特定領域是一個非常通用的術語。 從Java Servlets的角度來看,Rails絕對是特定于域的,該域是“帶有關系數據庫后端的Web應用程序”。 對于更通用的Spring MVC與基于Spring(MVC)的全棧Framework Grails,也是如此。 另一方面,Java Servlet比使用套接字更加具體,因為您受HTTP約束。

從通用到特定于Web開發領域的領域

當我在圖的第二層中的這些框架中創建大多數像CRUD的業務應用程序時,我認為如果存在一類框架/平臺,該方案可以更好地滿足業務應用程序的要求。 當我們將關注點進一步縮小到這部分應用程序時,腳手架可能會創造出真正可用的東西。

幾個月前,我通過Java代碼極客的一篇文章了解了CUBA平臺 。 CUBA主要是一個商業“框架”,它的口號是:“一個用于加快企業軟件開發速度的高級Java框架”。

乍一看,它看起來就像是另一個具有共同部分的Web框架。 OR-Mapper,依賴注入,腳手架,UI等。 與其單獨創建所有子部分,不如使用Grails一樣,它使用一種元框架方法。 OR-Mapper是JPA(EclipseLink),Spring for DI,Vaadin作為UI框架。

通用的新類別–特定領域的維度?

在深入研究之后,我意識到,這件事似乎與我之前在Web開發領域中看到的有些不同。

所不同的是,CUBA的作者走的是“特定領域”之路,正如我在上圖中所想到的那樣,確實專注于縮小“企業軟件開發”的范圍。 考慮到這一點,作者能夠提出更多的意見。 固執己見的框架通常會提高生產力(如果您遵循生活方式)(就像Rails世界中的“ The Rails way ”一樣)。

CUBA平臺似乎也是如此。 自從我第一次使用Rails來支持PHP / Java以來??,遵循他們對過濾,安全性,報告等內容的意見就極大地提高了生產率。

短語“快速應用程序開發”在這里確實具有另一個含義。 這是由于多種原因。

是什么讓這

業務應用程序的域模型通常具有許多實體以及它們之間的連接。 這將導致一個UI,您必須在其中創建實際工作流程中的許多相關實體。

首先,他們完全正確地獲得了業務應用程序所需的基本內容。 CUBA創建了一個可以完全滿足這些需求的腳手架UI。 它基于他們為兩個實體可以具有的不同樣式的關聯做出的不同選擇。 一對多或一對一關聯通過PickerField表示,“ 多對多”關聯為關聯創建一個添加/刪除表,而“ 一對多”關聯將在實體的詳細視圖中創建一個表,該表包含一個側。

使用這些簡單但令人難以置信的強大工具,您可以在數分鐘內用相似的復雜UI創建一個非常復雜的域模型,這使通過UI創建相關實體的圖變得很高興。

第二部分是通用過濾器解決方案。 感覺有點像您可以從Excel的附加功能中了解到的過濾可能性,您可以過濾表所基于的實體的關聯。 這真是太神奇了,并且不需要開發人員手動創建的大量自定義過濾器編程。

接下來,有一個完整的安全子系統。 它基于ACL方法,該方法允許您作為用戶創建用戶,組,角色,使您可以在視圖,實體(+屬性)以及實體實例級別上分割應用程序。 創建滿足以下要求的應用程序(在這種情況下創建僅表示:使用軟件)沒有問題。

  • 紐約的經理看到紐約的所有客戶
  • 紐約銷售人員會看到他們在紐約創建的所有詳細信息的客戶。 SF客戶僅顯示屬性“名稱”和“城市”,其中只能編輯“名稱”。
  • TX(總部)的經理可以從所有位置查看所有客戶,但無法對其進行編輯
  • 使用全面的UI來管理這些事情,幾乎不需要實現本地的安全解決方案。

    此功能列表可能會持續很長時間。 我沒有介紹報告部分,也沒有介紹業務流程管理,計劃的任務,HTTP-JSON API,Fat Client生成,不同的管理可能性等。 我可能會在以后的博客文章中進一步介紹。

    這一發現的實質

    當看到所有這些不同的部分時,CUBA與編程框架的不同之處在于在這些技術框架之上添加了不同的“平臺”功能。 這些東西使程序員可以更加專注于業務問題。 盡管這是不言而喻的,但這原則上是一件好事。

    問題是,作為程序員,這通常很難想象。 我們這些技術人員熱衷于使用NTLM身份驗證 , 擺弄直到我們獲得用于輸入訂單實例的完美用戶界面 ,或者為API創建超媒體驅動的RESTful HTTP接口 。 我們想要創造事物,這完全是我們產業的基礎。

    換句話說,您可以從另一個角度看它。 我們可能已經從Isacc Newton, Scott Hanselman或Sheldon Cooper那里知道:

    我們都站在巨人的肩膀上

    在軟件開發領域尤其如此。 從底層開始,像所有電氣工程一樣,主要的硬件抽象是:操作系統,通過HTTP等網絡協議,諸如關系數據庫之類的數據存儲機制,直至Servlet,Rack和Rails等API和框架。 所有這些使我們作為業務軟件開發人員能夠基本創建這些分布式,可擴展且易于使用的生產力工具。

    考慮到這一點,從字面上看,沒有理由不提任何可能的抽象字母。 顯然,這種一般性建議必須謹慎對待。 有很多充分的理由來使用C以及Plain Java Servlets或CUBA開發軟件。

    歸結為這種“正確的工作工具”之類的東西。 當您要創建典型的企業應用程序(指甲)并且附帶此CUBA(錘子)時,它非常適合。 另一方面,這種含義不應讓任何人認為,一切都是釘子。

    我絕對建議你檢查出CUBA尤其是不同的在線演示,你會發現在這里 。

    • [編輯2015-10-30:添加了說明,CUBA是一種商業產品]

    翻譯自: https://www.javacodegeeks.com/2015/11/my-personal-crud-story-or-how-i-came-to-cuba-platform.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的我个人的CRUD故事-或我如何来到CUBA平台的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。