さまざまなビジネスにインストールしたいアプリケーションに取り組んでいます。ビジネスごとに、このアプリケーションのさまざまな部分が必要になる場合があります。たとえば、アプリケーションには次のモジュールがあります: 会社管理、タスク管理、簿記管理。あるビジネスでは、会社管理と簿記管理モジュールのみをインストールするように求められていますが、他のビジネスでは 3 つのモジュールすべてをインストールしたいと考えています。
これらのモジュール (私は 3 つ以上持っています) は 1 つのデータベースに格納されており (歴史的な理由から)、データベースを分離したくありません。さらに、依存関係があります。各モジュールには、顧客、従業員、サプライヤーなどのすべてのリストがあるため、会社の管理モデルを知っている必要があります。これを除いて、各モジュールは個別のアプリケーションと見なすことができます。
アプリケーションは C# .Net で作成され、エンティティ フレームワークを使用しています。私のソリューションのプロジェクトのリストは次のとおりです。
- データフォルダ
- MyApp.Data.EF4 : 作業単位とリポジトリ パターンの edmx と実装が含まれています。私はPOCOを使用しているため、edmxはエンティティを作成しません。MyApp.Common への参照のみが含まれます。
- モジュールフォルダー
- 共通フォルダ
- MyApp.Common : MyApp.Data.EF4 プロジェクトが実装するすべてのインターフェイスが含まれています。
- MyApp.Company.Domain : Company モジュールのドメイン オブジェクト (POCO) が含まれています。このプロジェクトには、どのプロジェクトへの参照もありません。
- MyApp.Company.Services.Contract : このモジュールが公開するサービスのインターフェースが含まれています。
- MyApp.Company.Services : サービスの実装が含まれています。
- タスク フォルダー
- MyApp.Tasks.Domain : Tasks モジュールのドメイン オブジェクト (POCO) が含まれています。このプロジェクトには、MyApp.Company.Domain への参照のみがあります。
- MyApp.Tasks.Services.Contract : このモジュールが公開するサービスのインターフェースが含まれています。
- MyApp.Tasks.Services : サービスの実装が含まれています。
- 簿記フォルダ
- MyApp.Bookkeeping.Domain : 簿記モジュールのドメイン オブジェクト (POCO) が含まれています。このプロジェクトには、MyApp.Company.Domain への参照のみがあります。
- MyApp.Bookkeeping.Services.Contract : このモジュールが公開するサービスのインターフェースが含まれています。
- MyApp.Tasks.Services : サービスの実装が含まれています。
- 共通フォルダ
- プレゼンテーション フォルダ
- MyApp.Web : 他のすべてのモジュール Service、Contract、および Domain への参照を持つ Web アプリケーション。この特定の Web アプリは、すべてのモジュールのプレゼンテーションをカバーする必要があります。つまり、すべてのモジュールを必要とする企業だけがこの Web アプリを入手できます。
私は非常に大きな edmx を持っているため、管理が非常に難しいため、各モジュールが独自の edmx を持つように edmx を分割することを考えました。これにより、MyApp.Web プロジェクトは各モジュールの作業単位を保持します (MyApp.Web はすべてのモジュールを使用するため、すべての作業単位が必要になるため)。
edmx を異なる edmx に分割することは、私にとって良い習慣であるかどうかを考えています。これが良いアイデアかどうかを判断するのに役立つ説明、または私の場合の良い回避策を教えてください。