私はより良い開発者になろうとしています...
私が取り組んでいるもの:
- .Net MVC Framework 1.0
- Entity Framework 3.5
私はいくつかの読書をしてきました、そして私がしたいことは次のとおりだと思います:
- ドメイン内の各アグリゲートのリポジトリを作成します。たとえば、Orderリポジトリは、OrderのOrderItemを管理します。
- ビジネスロジックを処理するサービスレイヤーを作成します。各リポジトリには、同様のメソッドを持つ対応するサービスオブジェクトがあります。
- リポジトリとサービスの間を通過するDTOを作成します
- おそらく、ビューが使用するクラスであるViewModelを作成します。
集約リポジトリインターフェイスが実装するベースリポジトリインターフェイスがあります...
public interface IRepository<T>
{
IEnumerable<T> ListAll();
T GetById(int id);
bool Add(T entity);
bool Remove(T entity);
}
私の注文リポジトリのインターフェースは次のように定義されています...この学習演習にさらに取り組むにつれて、追加のメソッドが存在する可能性があります。
public interface IOrderRepository : IRepository<Order>
{
}
私のサービスクラスは、各サービス実装にビジネスロジックが含まれていることを除いて、基本的にリポジトリと同じように定義されています。サービスはコンストラクターでリポジトリーインターフェースを取ります(この演習ではIoCの準備ができていませんが、それが最終的にはそこにあると信じています)。
- リポジトリの実装は、EntityFrameworkを使用してデータベースからプッシュおよびプルします。データを取得するとき。メソッドはDTOのみを返し、EFで生成されたオブジェクトは返しません
- サービス(私はそれらを呼んでいます)はリポジトリを制御し、ビジネスロジックを実行します。サービスは、コントローラーに表示されるもの、つまり_orderService.GetById(1)です。
- ここでフリップフロップを開始し、フィードバックを使用できます...サービスクラスにViewModelクラスを設定させる必要があります... ViewModelクラスを持たない必要があります...多分、あるタイプから別のタイプへのマッピングが多すぎますか?
関心の分離に関して、私が向かっている方向性についてフィードバックをもらいたいと思います。
ありがとう