2008-09-17 81 views
1

使用配置文件我想讓自己打開和關閉諸如(第三方)日誌記錄和在C#網站中使用緩存等內容。該解決方案不應特別限於日誌記錄和緩存,而應該更加通用,所以我可以將其用於其他事情。如何在C#ASP.NET網站中有條件地啓用動作

我有一個配置XML文件,我可以斷言應該打開或關閉日誌記錄和緩存(它也可以在Web.Config,這不是現在的重點),這將導致例如一個bool loggingbool cachingtruefalse

的問題是關於這一部分: 我能做什麼前插的相關聲明與if (logging)if (caching)每個日誌/緩存。 什麼是更好的編程方式?這種問題還有一個編程術語嗎?也許屬性也是一種方式?

回答

2

我很好奇你有什麼樣的logging/caching語句?如果您有一些正在執行WriteLog或StoreCahce的類或者其他類......爲什麼不把這些if(日誌記錄)放在WriteLog方法中。看起來如果你把所有的日誌記錄緩存相關的方法放到一個類中,並且該類知道日誌記錄/緩存是否打開,那麼你可以在每個實例中保存你自己的一堆If語句。

6

爲什麼不直接使用web.config和已存在的System.Configuration功能?

無論如何,您的網絡應用程序將在每個頁面加載時解析web.config,因此當您可以在現有配置中定義您自己的部分時,涉及到另一個XML配置文件的開銷看起來過大。

+0

是的,這是可能的,但我更好奇如何處理代碼中的這些條件。 – 2008-09-17 18:44:36

+0

因此改變了這個問題,謝謝。 – 2008-09-17 18:51:19

+1

作爲僅供參考 - Web.Config僅在AppStart上解析一次並再次解析OnFileChange – stephbu 2008-09-17 18:55:41

0

我同意foxxtrot,你想使用web.config並添加一個appsetting或兩個來保存值。

然後對於檢查的實現,是的,只需使用if來查看是否需要執行該操作。我強烈建議集中您的日誌記錄類以防止重複代碼。

0

您可以使用依賴注入容器,並根據配置加載不同的日誌記錄和緩存對象。如果你想啓用日誌記錄,你可以在config中指定一個活動的Logging對象/提供者;如果您想禁用它,您可以讓DI注入一個「虛擬」日誌記錄提供程序,它不會記錄任何內容,但會立即返回。

我會傾向於更簡單的設計,例如@foxxtrot提出的設計,但運行時間換出實用程序組件是DI爲您可以爲您做的一件好事。

1

您可以查看Microsoft企業庫。它具有日誌記錄和緩存等功能。由於您始終包含日誌記錄代碼,因此日誌記錄變得非常簡單,但實際的日誌記錄由設置控制。

http://msdn.microsoft.com/en-us/library/cc467894.aspx

你可以找到的模式和做法組中的其他很酷的東西。

相關問題