0

私のソリューションでは FluentNHibernate を使用しています。fluentnhibernate のドキュメントから推奨されるフォルダー構造は次のようになります。

ビジネスモデルのPOCOクラスがあるエンティティフォルダー。Mappings フォルダー。その下に、データ モデルへのマッピングがあります。

これらの 2 つのフォルダーは、「BusinessModel」というビジネス レイヤー プロジェクトに入るでしょうか。下記参照:

BuessinessModel
    |_ Entities
          |- Student.cs
          |- Course.cs
          |- Faculty.cs
    |_ Mappings
          |- Mappings.cs

また、CRUD を実行するデータ アクセス レイヤーの BusinessModel プロジェクトを参照する「DataAccess」という別のプロジェクトを作成することもできます。

ベストプラクティスは何ですか? そこに建築家はいますか?ありがとう。


AK: n 層アーキテクチャ - BLL、DAL、およびインターフェイスに関する投稿を読みました。ベストプラクティスとは? .

あなたのものを引用させてください

「人」を例にとると、人に関連するさまざまなデータ操作 (1 人の人のすべてのデータの取得、多数の人に関する浅いデータの収集、CRUD 操作、検索など) について考えてから、それに沿ってインターフェイスを設計します。論理グループ。

私はこれを理解しようとしています。だから、あなたはそれを言っています

  1. BLL プロジェクトには、この Person クラスがあります。

  2. また、BLL プロジェクトには、Person オブジェクトに必要なすべてのデータ操作メソッドを宣言するインターフェイスがあります。

  3. 次に、DAL プロジェクトで、BLL で定義したインターフェイスの具体的な実装を行います。

    この音はあなたにとって正しいですか?ありがとう。

4

2 に答える 2

1

すべてのソリューション/プロジェクトに同じアーキテクチャをやみくもに適用するのは危険ですが。私の標準/デフォルトのアプローチは次のようになります:

上級

  • 私たちは、UI、BL (ビジネス ロジック)、DA (データ アクセス) の 3 層を目指しています。
  • これは、(おそらく) 次の 4 つのコンポーネントの論理チャンク (名前空間と考えてください) で構成されます: Common、UI、BL、DA。これら 4 つのチャンクのそれぞれには、おそらく複数のコード レベル プロジェクトが含まれることに注意してください。
  • Common は、他の 3 人が共有する必要があるもの (POCO など) を貼り付ける場所です。

あなたの詳細

  • Common 内で BusinessModel を (おそらくスタンドアロン プロジェクトとして) 作成します。
  • 私が推測しているマッピングは、物理データ ソースに依存しているため、具体的な DA 実装に組み込む必要があります。

その他の注意事項

  • ベスト/一般的な方法は、主要なチャンク (特に BL と DA) を疎結合することです。通常は依存性注入を使用します。
  • これは、Inferfaces を定義することによって実現され、これらのインターフェイスは、共通から POCO またはビジネスモデル エンティティを使用する/使用できます。
于 2011-09-14T01:22:28.820 に答える
1

具体的なデータ アクセスをビジネス レイヤーから分離する必要があります。エンティティ (ドメイン モデル) とリポジトリ インターフェイスを使用してビジネス レイヤーを作成することをお勧めします。

次に、fluentnhibernate を使用してデータ アクセス用のマッピングと具体的なリポジトリを含むデータ アクセスの具体的な実装を作成します。

ビジネス |_ エンティティ |- Student.cs |- Course.cs |- Facility.cs |_ RepositoryInterfaces |- IStudentRepository.cs |- ICourseRepository.cs

DAL (コンクリート - FluentNHibernate を使用) |_ マッピング |- Mappings.cs |_ リポジトリ |- StudentRepository.cs |- CourseRepository.cs

于 2011-09-14T09:54:22.977 に答える