C#で標準の3層アプリケーションを構築しています
1フロントエンド用のコンソールアプリ/ただし、これをASP.NETMVCWebページに変更する可能性があります
2ビジネスロジック層
3SQLデータベースに接続されたEntityFrameworkを使用するデータレイヤー/ただし、これはWindowsAzureに変更される可能性があります
主な目的は、いくつかの顧客データを表示することです。
データベースに保存されている顧客には、次のフィールドがあります-
CustomerID
Firstname
Lastname
DateOfBirth
Othervalue1
Othervalue2
Othervalue3
Creationdate
Updatedate
IsDisabled //this represents "deleted" customers i.e. the app will never use deleted customers, but I want to keep them in the database anyway
中間層では、私は欲しいだけです
CustomerID
Firstname
Lastname
DateOfBirth
Othervalue1
Othervalue2
Othervalue3
Updatedate
そして、最初のアプリケーションのフロントエンドでは、
CustomerID
Firstname
Lastname
DateOfBirth
データレイヤーから顧客をロードし(変更される可能性があります)、その顧客を中間層で使用し、次にプレゼンテーション層で使用する(変更される可能性があります)という観点から、n層アプリを適切に実装するにはどうすればよいですか?
顧客モデルはどこに置きますか?複数必要ですか?どこかにICustomerインターフェースが必要ですか?
プロジェクトの詳細 プロジェクトは2つのチームによって開発されます。1つは米国にあり、もう1つは東ヨーロッパにあり、4〜5人のチームメンバーがいます。
このプロジェクトでは使用されないレガシーデータアクセス層があります。代わりに、EntityFrameworkを使用して新しいものを構築します。すべての新しいアプリケーションで使用されるデータレイヤーを設計および構築する必要があります(このアプリでは、customerテーブルと1つまたは2つのテーブルのみが必要です)。他のプロジェクトは、このレイヤーに他のテーブルを追加します。
DIを使用してICustomerRepositoryを注入しています(このSOの質問を参照してください)。ただし、リポジトリと作業単位のパターンを実装します。
私の懸念は、レイヤーを適切に分離することです。今後数か月で多くの新しいプロジェクトを追加し、新しいデータレイヤーは急速に成長します。また、ある時点でAzureへの移行も検討しているため、ビジネスレイヤーとフロントエンドレイヤーを書き直さなくても、EntityFrameworkデータレイヤーをスワップアウトできるようにしたいと考えています。