新規顧客ごとにコピー貼り付けされたアプリケーションを維持しています(...はい、私はを知っています)。新しい顧客が必要としない新しい機能が必要だった場合、コード部分のみが変更されました。このソリューションには、すべてのコードがすべての顧客に対して同じである一種の「common.dll」も含まれています。各顧客ごとに異なるデータベース構造を持つマルチ顧客プロジェクトのアーキテクチャー設計
各顧客の基礎となるMSSQLデータベースは、わずかに異なります。すべてが多かれ少なかれ同じテーブルを持っていますが、カスタムの特定の機能のための追加の列や新しいテーブルを持つ顧客もいます。
Visual Studioソリューションでは、顧客ごとに「型付きデータセット」(ADO.NET C#2.0)が使用されているため、常に特定のソリューション(ファイル)があり、特定の型付きデータセット(「XyDataSet.xsd」など) )。ソリューションでは、私はヘルパークラスを持っています。注文を処理する。このクラスのメソッドの1つは、顧客固有のDataSetを使用して注文を取得する(GetDataRow(型指定されたDataRow))GetOrder(string orderId)です。
ご覧のとおり、顧客ごとに「ソリューション」に「GetOrder」メソッドがあります。これは、おそらく追加の列のように注文表にはほとんど違いがないためです。ですから、一般的な "GetOrder"機能に変更が必要な場合、私はもちろんそれをメンテナンスの悪夢となっているすべてのプロジェクトで変更する必要があります。
この「アーキテクチャ」を改善できる方法は誰か分かりますか?または、現在の基礎となるさまざまなDBスキームでは、アプリケーションレベルを上げてもそれほど改善しないでしょうか?
ありがとうございます。これにより、より良いアプリケーションアーキテクチャのためにリファクタリングすることができます。 – Patric