我有一個爲公司A完成的Grails應用程序。現在有一些要爲公司B工作的更改。
我不想複製整個項目因爲它會在稍後創建問題(代碼重複,難以管理,修復雙方中的錯誤等)
相反,我希望與某些特定於公司的代碼部分具有相同的項目,所以我可以像「If company = A then ...「。
差異可以在課程級別(每個公司的單獨課程文件)或只有一小部分代碼(具有80%相同代碼的同一類別+ 20%公司特定代碼)。
使用一些可配置的代碼部件來擁有相同的Grails項目以便我可以分別爲公司A或B構建項目的最佳方式是什麼?對於不同的環境(公司)有1個Grails應用程序
回答
將您的項目拆分爲模塊和/或插件。這兩家公司的應用程序將會有一些共同的部分,並擴展功能以提供公司特定信息。
您也可以考慮將您的應用程序的某些部分分爲單機(微)服務
很難拆解,因爲: 1.我不知道下一個公司會發生什麼變化 2.變更可以是整個通用邏輯內的很小的代碼塊 例如在gsp文件中只有另一行數據對於不應該在其他公司中的公司 因此,將每個小部分作爲插件或服務將會創建大量影響可讀性的插件或服務。 – Artin
有很多方法可以解決這個問題。可以將應用程序A複製到B,適當地更改B,然後比較兩個應用程序並查看它們共享的通用部分。有些零件可以提取成「核心」,其他零件可以參數化等 – injecteer
必須同意注射器。你是對的,你事先不知道公司2或3或n的變化。小的差異也許你通過配置值處理代碼;可以通過構建配置在公司特定的插件中交換更大的差異。您現在可以通過重構成精心設計的插件來緩解未來的一些痛苦。 – railsdog
這一切都取決於如何交織在一起的數據集將是的。以及他們將會發生多大變化。如果不可能將數據分成插件,並且可以通過同一個數據庫進行數據分析,並且貓仍然是一隻貓的公司,而不是一隻狗。然後,您可以查看創建基類,然後根據業務進行擴展,然後根據整體存儲方法進行擴展,然後針對擴展值進行特定操作
- 1. 上傳相同的應用程序爲不同的公司
- 2. jQuery ajax公司環境
- 3. 從2個不同的應用程序訪問1個伯克利環境
- 4. 從我公司的應用程序服務器推送Iphone日曆(JAVA環境)
- 5. 公司的應用程序分發給公司的客戶
- 6. 如何爲不同公司/用戶構建應用程序
- 7. 如何告訴Grails應用程序在哪個環境中?
- 8. 公司的Iphone開發應用程序
- 9. 不同的公司
- 10. 將企業iPhone應用程序從公司銷售到公司
- 11. 適用於Windows Phone 7的公司應用程序?
- 12. 虛擬應用程序的不同應用程序設置/環境變量
- 13. 在適用於不同環境的JSF應用程序中使用語言環境變體
- 14. 對於第一個iOS應用程序,itunesconnect中沒有關於公司名稱的字段
- 15. 選擇公司2的值,公司1的值,如果不
- 16. Grails命令對象不適用於生產環境
- 17. 不同應用程序的木偶環境
- 18. 在不同的環境下記錄應用程序Log4j
- 19. 混帳:應用程序配置和不同的環境
- 20. For循環所有可用的公司?
- 21. 如何將公司的React-Native應用程序部署到公司的員工?
- 22. 爲iPhone應用程序分配使用不同的公司名稱?
- 23. 定製Grails和Flex構建針對不同的環境
- 24. 在代理配置的環境下運行的Java小程序(公司網絡)
- 25. 用現有的應用程序管理Heroku多個環境
- 26. 適用於不同環境的Jboss-web.xml
- 27. package.json適用於不同的環境?
- 28. Vue公司的應用程序不會加載
- 29. 將應用程序徽標中的公司名稱與ios中的應用程序名稱不同
- 30. 在不同環境中加載web應用程序
我認爲您應該使用多租戶架構https://en.wikipedia.org/wiki/Multitenancy – Abs