次のもの(リファクタリングが必要)で構成されるアプリケーションを設計する正しい方法に興味があります。
Excel Addin COM-Excelに公開されたWinFormsとメソッド(計算呼び出しとフォームアクティベーションメソッド)を含む可視クライアントライブラリこれは、クライアントライブラリの機能を使用してWCFサービスに接続します。WCFサービスには現在、計算ロジック、検証ロジック、ORMツールを介したデータベースアクセスが含まれています。
つまり、アドイン->クライアントDLLでのWinform/直接呼び出し->WCF->DBまたは計算
現在、これは2つのプロジェクトにのみ存在します。私の最初は、次のように再設計することです。
クライアントサイドプロジェクト
- Excelの「表示」(Project.Client.Excel)。これにより、COMの可視性のレベルが1つのプロジェクトに制限されます。
- WinFormの「ビュー」(Project.Client.UI)
- 両方の「ビュー」セットのプレゼンテーション(Project.Client.Presenter)
サーバーサイドプロジェクト
- データ転送オブジェクトを含むWCF「ビュー」?(Project.Server.WCFまたはサービス)
- サーバー側のプレゼンター(Project.Server.Presenter)?
- ビジネスロジック(Project.Business)
- データアクセス層(Project.DAL)
私の質問は次のとおりです。
- DTOは、WCFプロジェクトのどこに配置する必要がありますか、それとも独自のライブラリ/プロジェクトとして配置する必要がありますか?
- エンティティ変換ルーチンはどこに属しますか(データエンティティ<>ビジネスエンティティ<> DTO)?すべてがビジネスロジック層にあるのか、それとも一部がサーバープレゼンターにあるのか。
- このタイプのスキームの正しいアーキテクチャは何でしょうか?
- 私がおそらく逃した他のたくさん?
リファクタリングのアイデアの一部は、アーキテクチャを修正し、関心の分離などを行い、単体テストを設計に含めることができるようにすることです。