2016-03-19 15 views
0

私はn層アプリケーションを持っています。フロントエンドはMVCサイトです(違いがある場合)。 MVCサイト、ビジネスロジック、およびDALはすべて、シングルトンクラスが定義されている特定の共有DLLにアクセスできます。私のシングルトンは誰が見ることができますか?

DALのシングルトンのプロパティBarに "foo"の値を割り当てたように、これはすべて、Barにアクセスすると "foo"と表示されます。

質問は、何ですかelseはシングルトンを見ることができますか?別のユーザーがMVCアプリケーションにログインし、そのページがBarプロパティを「Fred」に設定するページ。最初のユーザーはBarにアクセスしたときに何を表示しますか?

シングルトンは本当にそのクラスの唯一のインスタンスですか?または、それは与えられたユーザーのためのそのクラスの唯一のインスタンスですか?

最初のユーザーが同じアプリ内のブラウザで別のウィンドウを開くとどうなりますか?彼がBarを1つのウィンドウで変更すると、それは他のウィンドウで変更されますか?

+0

シングルトンを適切に実装した場合は、AppDomain全体で単一のインスタンスを表示する必要があります。しかし、あなたはコードを投稿していないので、それを知ることはできません。 –

答えて

0

質問は、他に何がシングルトンを見ることができますか?他のユーザー がMVCアプリケーションにログインし、そのページでBar プロパティを「Fred」に設定しているページ。最初のユーザーはBarにアクセスするときに何を表示しますか?

すべてのユーザーに最後の値が表示されます。 (あなたの例では "Fred")

本当にそのクラスのインスタンスはシングルトンですか?または、指定されたユーザーに対して、そのクラスのインスタンスのみが ですか?

これはスレッド全体のクラスの唯一のインスタンスです。 Webアプリケーションが複数のワーカースレッドで実行される場合、複数のインスタンスが存在します。

最初のユーザーがブラウザで別のウィンドウを開いた場合、同じアプリケーションの はどうなりますか? Barが1つのウィンドウで変更されると、他のウィンドウで が変更されていますか?

ウェブアプリケーション」と言えば、「ウィンドウ」という用語はあまり良くありません。各ウィンドウは、の要求によって作成されます。各要求はあなたのシングルトンオブジェクトの値を変更することができます。

+0

OK。それはシングルトンのように一度だけインスタンス化されるが、より限定された範囲を持つ構造があることを考えれば?現在のユーザーに限りますか? 私の初期の考えは、自分のシグネチャーでやっていることを行うことですが、セッションでデータを保存することです。それをセッションキーでシングルトンに保存するか、シングルトンに保存します。 –

+0

セッションを使用する必要があります。 –

関連する問題