我正在嘗試創建一個單身人士服務,用於處理傳入的請求到HttpHandler。目前該服務正在根據每個請求進行實例化。我做對包含服務的實例的靜態類的調用,如一個單如下實施:在HttpHandler的使用調用如下跨請求到HttpHandler實現單身人士
public static class ServerApplication {
static Service instance = null;
static readonly object padlock = new object();
/// <summary>
/// Service singleton.
/// </summary>
public static Service Service {
get {
lock (padlock) {
if (instance == null) {
instance = new Service();
}
return instance;
}
}
}
和訪問:
ServerApplication.Service.Process(request);
我已經在instance = new Service();
行上設置了一個斷點,並且在多個請求中,每個請求觸發 斷點。
我的目標是跨請求存在的服務,因爲它會加載和緩存大量來自文件和數據庫的數據,這些數據可以在大多數請求中重用。
任何人都可以看到出了什麼問題?
這是什麼代碼的目的是什麼?當我一起聽到Singleton和HttpHandler時,我的大腦會拋出一個異常。 – 2009-09-25 01:36:21
基於加載並緩存在服務中的預先設置的文件和數據源呈現圖像的映像服務器。所以該服務處理請求並生成正確的圖像。爲什麼?你是說在應用程序運行時僅僅實例化一次的單個對象是代碼異味? Http只是它被訪問的方法。我可以輕鬆構建桌面應用程序來與服務進行交互。糾正我,如果我錯了。我認爲這很正常。 – theringostarrs 2009-09-25 01:41:49
HttpHandler執行它所說的'處理'Http請求,然後像處理任何其他應用程序一樣處理請求。它可以很容易地在桌面應用程序上點擊按鈕。 – theringostarrs 2009-09-25 01:52:36