レイヤード.NET 4.0アプリケーションを作成します。データレイヤーは、Entity Frameworkを使用して実装され、エンティティインスタンスを呼び出し元、つまりビジネスレイヤーに提供するリポジトリがあります。エンティティフレームワークが特定のエンティティを2回(例えばキーによって)尋ねられると、それは同じインスタンスを返すので、エンティティに対して行った変更は、そのエンティティが使用される他の場所に反映される。期限切れポリシーがないため、実際にはキャッシュ機能ではなく、少なくとも多くの場合、エンティティ・フレームワークが依然としてデータベースにクエリを行うため、パフォーマンスはあまり改善されないようです。要は、各エンティティのインスタンス(コンテキストごとに)が1つだけであることを確認することです。Entity Frameworkのように "オブジェクトごとに1つのインスタンス"を実現する
ビジネスレイヤーでは、エンティティは、エンティティと構造が異なる可能性のあるビジネスオブジェクトにマップされます。この場合も、データレイヤのリポジトリと同様に、ビジネスオブジェクトのインスタンスを取得するための集中アクセスポイントがあります。私の目標は、エンティティ・フレームワークが提供する機能と同じ機能を持つことです。つまり、ビジネス・レイヤー内の「特定のオブジェクトに対して常に同じインスタンスを戻す」という意味です。私は、アプリケーション内の特定のビジネスオブジェクトへのアクセスがすべて同じインスタンスで機能することを確認したいと思います。
開始入力
コンテキスト認識が重要です!エンティティ・フレームワークと同様に、各ビジネス・オブジェクト・インスタンスの一意性は、厳密にはアプリケーション全体ではなく、コンテキスト・ベースごとに提供される必要があります。ビジネス層にはコンテキストの概念もあり、各コンテキストには各ビジネスオブジェクトの独自のインスタンスが必要です。このインスタンスは、コンテキストが使用されているすべての場所で再利用する必要があります。
また、単一のビジネスオブジェクトクラスごとに実装する必要がないソリューションを探しています。潜在的に何百もあります。私は、リポジトリを実装している人にできるだけ透明なフレームワークコードのソリューションを好むでしょう。エンティティフレームワーク自体も特定のエンティティタイプについて知らないが、エンティティフレームワークはエンティティモデル開発者にこの機能を透過的に提供することができる。
のEND EDIT
私の質問は以下のとおりです。
- 名がこの "唯一のインスタンスオブジェクトごとに" 行動のためにありますか? Google検索用語は何ですか?
- 参考資料、ガイドライン、またはベストプラクティス、またはこの問題を扱うデザインパターンがありますか?
- .NETには、このような機能を記述するのに役立つクラスがありますか、それとも完全に提供するのでしょうか?
ありがとうございました、 Peter。
偉大な、ヒントありがとう!ビジネスレイヤーで再利用できる(可能な限り)ジェネリック実装を知っていますか、それとも私自身で書く必要がありますか? – Peter