2011-08-03 9 views
2

以下のコードで、Asp.netアプリケーションでセッションごとに1回だけ "GetClassTeacher"メソッドを実行したい場合、セッションを使用してオブジェクトデータベースを呼び出す前にnullです。シングルトンパターン/ヌルチェック - セッションでAsp.Netを使用しているとき

私の質問は、この方法を実装するための最良の方法ですか、それを達成するためにシングルトンパターンを使用することができますか。セッションごとにそれを実装する方法。

私はセッションを使用してfine--だと思いますが、あなたがする必要はありません場合は、教師のオブジェクトをインスタンス化しないことでオーバーヘッドの一部を削減することができます
public class School 
{ 
    public List<Student> GetAllStudents() {} 

    public List<Teacher> GetAllTeachers() {}  

    //Singleton pattern or Check for Null 
    public Teacher GetClassTeacher() 
    { 
     Teacher teacher = new Teacher(); 
     teacher = Session["Teacher"] as Teacher 
     if (teacher == null) 
     { 
      //Get Teacher Info from Database 
     } 
    } 
} 
+3

なぜ新しいTeacherインスタンスを作成していて、なぜGetClassTeacher()が呼び出されるたびにそれを破棄していますか? –

答えて

2

public Teacher GetClassTeacher() 
    { 
     var teacher = Session["Teacher"] as Teacher 
     if (teacher == null) 
     { 
      //Get Teacher Info from Database 
     } 
    } 
+0

お返事ありがとうございます。セッションからインスタンシエーションして割り当てるときに、より多くのメモリを使用していると思いますか? – user841683

+3

オブジェクトをインスタンシエートすると、メモリが確実に使用されます。また、教師が見つからない場合はnullを返すという前提を設定しています。一方、新たに作成された教師用のオブジェクトを返す場合は、あなたが持っているものにとどまるべきです。いずれにしても、メモリが少し揮発性である限り、セッション状態は使い分けても問題ありません。アプリケーションが大きくなるとスケーリングの問題は発生しません。 – davecoulter

+0

@ user841683: 'new ... 'と言うときはいつでも、メモリを使います。これは、ちょうど次の行に上書きするという新しいインスタンスの作成を避けることができます。 – StriplingWarrior

0

はここのサンプルですシングルトン:http://msdn.microsoft.com/en-us/library/ff650316.aspx。また、異なる実装へのいくつかの調査:http://www.yoda.arachsys.com/csharp/singleton.html

それ以外の場合は、シングルトンを使用する(または使用しない)のが「ベスト」であるかどうかについてはわかりません。あなたの状況はそれを判断するのに役立ちます。個人的には、私はasp.netで何をしているのかはそれほど必要ではありません。

+0

Asp.Netでどのようなシナリオで私はシングルトンを使用します。ほとんどの仕事は、セッション/キャッシュ/スタティックでそれがヌルであるかどうかをチェックすることによって行うことができます – user841683

+1

シングルトンを理解すれば...クラスのインスタンスを複数作成できないようにします。しかし、コード実行を中断する立場にいると大きな問題になる可能性があります。インスタンス化する前に常にnullをチェックするように注意する限り、シングルトンを使用するかどうかにかかわらず、エフェクトは同じです。それでなぜそれを使うのですか?私はしないと言いたい。ここでそれについての詳細な議論があります:http://stackoverflow.com/questions/228164/on-design-patterns-when-to-use-the-singleton – Chains

2

nullを確認することは完全に有効です。セッションの使用も有効です。

関連する問題