-1

こんにちは、魔女のアプリケーションをリファクタリングしている最中です。コーディングとアーキテクチャ設計が不適切だったため、アプリを再構築することになりました。幸いなことに、プロジェクトは数か月前に開始されたため、やるべきことはそれほど多くありません。

同僚と話し合った結果、アプリケーションを 3 つのレイヤー (DataAcces、ビジネス ロジック、および GUI) に分割することにしました。

Entity Framework、Automapper、Unity を組み合わせてソリューション全体を再構築しました。

プロジェクトマネージャーと話し合った後、クライアントのチームがこれらのフレームワークに関する知識を持っているため、ある時点で Entity Framework と Unity を NHibernate と Ninject に置き換える必要があるかもしれないことを知りました。

この決定が下されるまでにはしばらく時間がかかり、他の誰かがこれを行う必要がある可能性があります.

Entity Framework 、 Automapper 、 Unity の周りにラッパーを作成し、アプリケーションの有効期間のある時点でそれらを変更する決定が下される場合は、それらを別のプロジェクトに配置することにしました。

現状では、すべてのレイヤーで必要なコードが含まれているため、アプリケーションのレイヤーがこのプロジェクトに属するかどうかはわかりません。例:

-エンティティ フレームワーク - DatAccess

-Automapper - サービスレイヤー

-Unity - GUI レイヤー、サービス レイヤー、DataAccess レイヤー

このため、アプリケーションのすべてのレイヤーでこのプロジェクトへの参照が存在します。

これがアプリケーションの全体的なアーキテクチャに適しているかどうかはわかりません。N 層アーキテクチャに関して私がこれまでに知っていることは、レイヤー間を明確に分離する必要があるということです。

私が見逃しているより良いオプションはありますか、それともこの方法で進めるのが正しいですか?

4

1 に答える 1

1

DataContracts プロジェクトを追加する必要があります。

したがって、参照は次のようになります。

  • データアクセス層
    • Entity Framework - 注: これは一般公開しないでください。DAL でラップする必要があります。
    • データ契約
  • オートマッパー
    • データ契約
  • GUI レイヤー
    • データ契約
  • サービス層
    • データ契約
  • 団結
    • データアクセス層
    • オートマッパー
    • データ契約
    • GUI レイヤー
    • サービス層

レイヤーには、DataContracts プロジェクトで定義されているインターフェイスが必要です。たとえば、サービス層では DataAccesController に依存せず、IDataAccesController に依存します。ユニティレイヤーを使用してすべてを結び付けることができます。これがユニティの目的だからです。

交換可能な IoC フレームワークを持つことは、あまりお勧めできません。

クライアントがエンティティ フレームワークの代わりに nhibernate を使用することを決定した場合、DAL を変更するだけで済みます。

もちろん、あなたの現在の実装についてはわかりませんが、これは私が一般的に設定する方法です。

于 2013-07-20T15:20:34.433 に答える