UI (ビュー/ビュー モデル)、サービス、データ アクセス/永続性の 3 つのレイヤーを使用して、C#/.Net 3.5 アプリを構築しています。
サービス レイヤー: 各サービス レイヤー インスタンスは、一意の永続化インスタンスに関連付けられています。サービス層は、インターフェイスを介して永続層を参照します。
永続層: 現在、永続層インターフェイスには、(Fluent) NHibernate を使用する単一の具体的な実装があります。すべての永続層インスタンスは、同じ ISessionFactory を共有します。各永続インスタンスは、そのファクトリを使用して独自の ISession を開きます。
目標: Ayende Rahienが提案したように、各ビュー モデルが独自のデータ コンテキスト (別名 ISession) で動作するようにします。これを実現するために、私のアプリは各 VM に独自のサービス レイヤー インスタンスを提供します (これには、永続レイヤーの独自のインスタンスがあります)。私には、同じサービス層クラスのインスタンスがこれほど多くあることは怪しいにおいがします。
質問: これは良いアプローチですか? VM ごとに 1 つのサービス インスタンスから離れて、アプリごとに 1 つのサービス インスタンスに移行したほうがよいでしょうか? もしそうなら、どのようにそれを行い、各 VM に独自のデータ コンテキストを与えますか?
ありがとう、
ベン