0

WinForms または WebForms アプリを開発するときは、ソリューションを作成して複数のプロジェクトを追加します。BOL プロジェクトはビジネス オブジェクト用のクラス ライブラリです。ADO.NET 関連の SQL および DAL プロジェクトがあります。検証などのクラスを含むユーティリティ プロジェクトがあります。現在、私が通常 GUI と呼んでいるプレゼンテーション層には、フォームが含まれています。フォームは、DAL などに接続する SQL に接続する BOL と直接連携します。

これはもう皆さんご存知だと思いますが、ここで混乱してしまいます。MVC での作業では、すべてのプロジェクトにこのタイプの機能が含まれていますが、フォルダーに分割されているだけで、すべて 1 つのプロジェクトになっています。Nerd Dinner アプリケーションを見てみましたが、それもすべて 1 つのプロジェクトに含まれています。最終結果は、すべてを処理する単一の DLL です。これは良い考えですか、それともピースを別のプロジェクトに分けますか? 通常、ある DLL は別の DLL を経由してから、データ アクセス DLL の種類に到達する必要があります。多分私は全体の概念について混乱しています。

4

1 に答える 1

2

この論理レイヤーは、いつでも個別の物理レイヤー(プロジェクト)に分離できます。エンティティ用に別のプロジェクトを作成したり、データアクセスコード用にプロジェクトを作成したりできます。

これが私の最近のプロジェクトの1つのために私がした構造です

1)UI:UI関連のものを含む標準のMVCプロジェクト。コントローラーとビュー、および関連するCSSのものとスクリプト。

2)エンティティ:クラスライブラリプロジェクト。私の事業体はここにあります。これらは私のドメインモーダルを表す単なるPOCOです(私はこれをCodeFirstデータベースの生成に使用します)。

3)データアクセス:クラスライブラリプロジェクト。ここにデータアクセスコードがあります。リポジトリ、インターフェイス、および私のDBContextクラスも同様です。

4)テスト:私のユニットテストはこのプロジェクトにあります。

UIプロジェクトには、私のエンティティと私のデータアクセスプロジェクトへの参照があります。

Repositaryメソッドがオブジェクトを返すため、DataAccessProjectにはエンティティへの参照があります。

UIプロジェクトのViewModelsフォルダー内にもViewModelクラスがほとんどありません。複数のドメインオブジェクトからのデータを表示する必要がある一部の画面でこれを使用します。ドメインオブジェクトをビューモデルオブジェクトにマッピングするマッピング/サービスクラスがあります。プロジェクトがbifgの場合、これを同じソリューションの下で個別のプロジェクトとして保持できます。

解決策は次のようになります。(これは私が取り組んでいるオープンソースプロジェクトです)

ここに画像の説明を入力してください

于 2012-06-05T21:39:56.570 に答える