複数のWCFサービス(LINQ-TO-EFで動作)に接続するWPFアプリケーションを開発しています。
WPF は MVVM 方式で設計されています。
WCF サービスごとに、次のものがあります。
- サービス層 DLL - これには、サービス インターフェイス、サービス実装が含まれます。サービスの実装は BL オブジェクトを作成し、それらのメソッドを呼び出すだけです
- Service BL Layer DLL - これにはマネージャー ファクトリが含まれます (ファクトリはUserManager、TaskManagerなどを作成します)。各マネージャーには、インターフェースと実装があります (単体テストと DI 用)。たとえば、TaskManagerには「GetTasks」、「CheckTaskIsValid」などがあります。さらに、BL レイヤーにはData-EntityからDTOに変換する「Trasnlator」クラスがあります。BL マネージャー メソッドは、DTO をサービス層に返します。
上記に加えて、すべてのサービス BL は、以下を含むデータ アクセス レイヤー DLLを参照します。
- MS SQL Server のテーブルを含む EDMX ファイル
- 自動生成された DbContext + POCO エンティティ
- クエリ プロバイダー (BL マネージャー クラスで使用)。各クエリ プロバイダーには、単体テストと DI を目的としたインターフェイスと実装があります。
- DbContext ファクトリ - 単体テストと DI を目的としたインターフェイス + 実装。
サービスは CQS 設計 (コマンド-クエリ-分離、CQRS と混同しない) であり、クエリのみを担当する 1 つのサービスと、コマンドの送信を担当する 1 つのサービスがあることを意味します。
すべてのサービスをホストするWCF ホスト プロジェクトを通じて DI (AutoFac を使用) を使用しています (サービスに依存関係を注入できるように、IInstanceProvider を実装しました)。
DbContextは既にUoW およびリポジトリであるため、独自のリポジトリまたは作業単位は実装しませんでした。
この設計は欠陥がありますか?
私は DDD に関する多くの投稿を読みましたが、私の設計が DDD ではないことを知っています。
私の質問は - 私のデザインは十分ですか?すべてのコードを DDD にリファクタリングする必要がありますか? (集約やルート集約などを使用)。
設計についてできる限り詳細を提供するように努めたので、「あなたの質問は一般的すぎる」や「いくつかの例が必要」などの回答が得られないことを願っています... 役立つ情報があれば大歓迎です!