2011-01-07 130 views
1

如果我在asp.net中有一個單獨的包裝器,它是否必須被緩存,或者它的數據是否會在發佈後支持數據?ASP.NET中的單身人士

另外,如果另一個用戶登錄到應用程序中,應用程序是否會創建另一個實例(自身),因此又是單例的另一個實例,還是它會訪問在第一個實例中創建的同一個單例?

實際實現單例是下列之一: (設計1 :)

using System; 

public sealed class Singleton 
{ 
    private static volatile Singleton instance; 
    private static object syncRoot = new Object(); 

    private Singleton() {} 

    public static Singleton Instance 
    { 
     get 
     { 
     if (instance == null) 
     { 
      lock (syncRoot) 
      { 
       if (instance == null) 
        instance = new Singleton(); 
      } 
     } 

     return instance; 
     } 
    } 
} 

或設計2:

public sealed class Singleton 
{ 
    private static readonly Singleton instance = new Singleton(); 

    private Singleton(){} 

    public static Singleton Instance 
    { 
     get 
     { 
     return instance; 
     } 
    } 
} 
+0

單身人士如何實施? – Oded 2011-01-07 17:59:14

+0

尚未實施。可能基於代碼: 使用系統; 公共密封類Singleton { private static volatile Singleton instance; private static object syncRoot = new Object(); 私人辛格爾頓(){} 公共靜態Singleton實例 { 得到 { 如果(例如== NULL){ 鎖 (SyncRoot上) { 如果(例如== NULL) 實例=新辛格爾頓(); } } return instance; } } } – bleepzter 2011-01-07 17:59:49

回答

2

單例模式確保所有請求只有一個實例。既然你聲明瞭它是靜態的,它就存在於應用程序的生命週期中。並且相同的實例將返回給通過您的財產請求對象的任何用戶。

4

靜態變量將只要存在作爲應用程序正在運行,直到應用程序重新啓動。它將跨回發和用戶存在。

本文介紹瞭如何實現靜態單:http://msdn.microsoft.com/en-us/library/ff650316.aspx

有沒有對你正在嘗試這樣做,會影響單執行任何更多的要求?