2016-08-04 7 views
0

私は会社Aのために行われるGrailsアプリケーションを持っています。今度は会社Bのためにいくつかの変更があります。
私はプロジェクト全体を複製したくありませんそれは代わりに、私はその後、会社= Aの場合」のように行うことができますので、いくつかの企業固有のコードの部分と同じプロジェクトを持ちたい
以降(などコードの重複、ハード管理、両側のバグを修正し、)問題を作成しますので、 ... "。
違いは、クラスレベル(会社ごとに別々のクラスファイル)またはコードのわずかな部分(80%同一コード+ 20%会社固有コードの同じクラス)である可能性があります。
いくつかの設定可能なコード部分を持つ同じGrailsプロジェクトを持ち、A社またはB社のプロジェクトを別々にビルドできるようにする最良の方法は何ですか?異なる環境(会社)に1つのGrailsアプリケーションがある

+0

私はあなたがマルチテナントアーキテクチャで行くべきだと思いhttps://en.wikipedia.org/wiki/Multitenancy拡張値の全体的な、その後、具体的な方法を保存した業務に応じて、その後基底クラスを作成する拡張で見ることができます – Abs

答えて

0

は、モジュールおよび/またはプラグインにあなたのプロジェクトを分解します。両社のアプリケーションに共通する部分があり、会社の特質を提供する機能が拡張されます。

はまた、それはすべてのデータセットがあることを行っている絡み合っ方法によって異なり、スタンドアローン(マイクロ)サービス

+0

私は次の会社のために何が変更されるのか事前にわかりません 2.変更は非常に小さなコードブロック全体の共通ロジック内になる可能性があります たとえば、gspファイルでは、別のデータ行他の会社にはいけない会社のため プラグインやサービスとして各小さな部分を持つことは、可読性に影響を与える膨大な量のプラグインやサービスを作成します。 – Artin

+0

これを解決する方法はたくさんあります。あなたはアプリAをBにコピーし、Bを適切に変更して、両方のアプリを比較し、共有する共通部分を確認することができます。いくつかの部分は "コア"に抽出することができ、他の部分はパラメータ化することができます – injecteer

+0

injecteerに同意する必要があります。あなたは正しいです、あなたは、会社2、3、またはnの変更を事前に知っていません。小さな違いは、おそらくあなたはコードで設定値を使って対処します。より大きな違いは、ビルド設定を使用して企業固有のプラグインに入れ替えることができます。あなたは現在、うまく設計されたプラグインにリファクタリングすることで、将来の苦痛を軽減することができます。 – railsdog

0

へのアプリの特定の部分を変換すると考えることができます。同様に私はどれほど大きく変化するのでしょうか?プラグインへの分割が不可能で、データが同じデータベースにまたがっていて、猫がまだ犬ではなく猫の会社になることは大丈夫です。そして、あなたは

関連する問題