2016-08-04 37 views
0

我有一個爲公司A完成的Grails應用程序。現在有一些要爲公司B工作的更改。
我不想複製整個項目因爲它會在稍後創建問題(代碼重複,難以管理,修復雙方中的錯誤等)
相反,我希望與某些特定於公司的代碼部分具有相同的項目,所以我可以像「If company = A then ...「。
差異可以在課程級別(每個公司的單獨課程文件)或只有一小部分代碼(具有80%相同代碼的同一類別+ 20%公司特定代碼)。
使用一些可配置的代碼部件來擁有相同的Grails項目以便我可以分別爲公司A或B構建項目的最佳方式是什麼?對於不同的環境(公司)有1個Grails應用程序

+0

我認爲您應該使用多租戶架構https://en.wikipedia.org/wiki/Multitenancy – Abs

回答

0

將您的項目拆分爲模塊和/或插件。這兩家公司的應用程序將會有一些共同的部分,並擴展功能以提供公司特定信息。

您也可以考慮將您的應用程序的某些部分分爲單機(微)服務

+0

很難拆解,因爲: 1.我不知道下一個公司會發生什麼變化 2.變更可以是整個通用邏輯內的很小的代碼塊 例如在gsp文件中只有另一行數據對於不應該在其他公司中的公司 因此,將每個小部分作爲插件或服務將會創建大量影響可讀性的插件或服務。 – Artin

+0

有很多方法可以解決這個問題。可以將應用程序A複製到B,適當地更改B,然後比較兩個應用程序並查看它們共享的通用部分。有些零件可以提取成「核心」,其他零件可以參數化等 – injecteer

+0

必須同意注射器。你是對的,你事先不知道公司2或3或n的變化。小的差異也許你通過配置值處理代碼;可以通過構建配置在公司特定的插件中交換更大的差異。您現在可以通過重構成精心設計的插件來緩解未來的一些痛苦。 – railsdog

0

這一切都取決於如何交織在一起的數據集將是的。以及他們將會發生多大變化。如果不可能將數據分成插件,並且可以通過同一個數據庫進行數據分析,並且貓仍然是一隻貓的公司,而不是一隻狗。然後,您可以查看創建基類,然後根據業務進行擴展,然後根據整體存儲方法進行擴展,然後針對擴展值進行特定操作

相關問題