2011-10-07 70 views
0

我正在處理問題應用程序,其中網站用戶輸入通過WCF服務發送到管理控制檯的問題,其中支持代理開始處理問題。默認值:hard-code或.config文件?

由於問題過來的線,它們是由專案編號和的categoryID

從一個特定的網站來所有問題分組,應該具有相同的默認項目和類別ID的。

問題:

正是在這一點上,這些默認值應該是多少,因爲項目和類別由支持代理經理人在未來某個時候在管理控制檯內輸入未知。 (這一切都不是沒有部署,而我和支持團隊之間的會議,以敲定這些細節是不大可能的)

問:

什麼是處理這些默認值的最佳方法?我到目前爲止考慮的是:

1)對它們進行硬編碼。硬編碼的問題在於,部署後更改值將很困難。

2)將em'粘貼在.config文件中。這是靈活的,可以讓部署後的事情變得很容易,但我覺得它很不高雅(至少它對我來說是這樣)

如果你有過類似的經歷,見解和建議,我很樂意聽到它!謝謝,

+0

「projectID'和'categoryID'的默認值是?您是否打算推出此應用程序的多個實例,或者是否所有用戶都使用同一個實例? –

+0

這是一個web應用程序 - 你部署新的編譯版本有多困難? – MusiGenesis

回答

2

您甚至可以考慮更進一步並將您的默認值存儲在數據庫中。這將提供靈活的配置和集中管理這些默認設置。

就我個人而言,我可能經常採用的方法是在代碼中配置我的配置,但有能力通過在配置文件或Db中提供新值來覆蓋默認值。爲什麼我走這麼遠?這樣,我可以用最少的配置進行部署,然後在需要時提供覆蓋。

+0

我喜歡你的徹底性 – Didaxis

2

由於您無法知道這些值在部署時應該是什麼,您應該在配置時使用它們。您可能會發現它不夠雅緻,但是如果值可能需要更改而無需更改代碼,則這是唯一的選擇。

除非您知道知道部署快速簡單,並且任何代碼更改都可以快速部署且沒有錯誤。

1

您也可以將它們存儲在存儲問題跟蹤數據的數據庫中。

+0

在這種情況下,數據庫==配置。而且你不知道使用數據庫甚至是可能的。 – Oded

+0

不是一個壞的建議,但是必須記錄新的存儲過程,DTO,業務邏輯等的附加信息,然後執行這些事情將會影響我嚴格的截止日期。否則,我會強烈考慮這一點。 – Didaxis

1

首先,硬編碼合理的默認值來保持彈性。沒有人喜歡一個由於沒有非常嚴格必要的文本文件而變得毫無用處的程序。

其次,一個配置文件根本不是處理自定義配置的一種不起眼的方式。根據您部署的環境,提供gui配置工具是另一種選擇。即最終用戶是否會隨時改變配置?或者系統管理員是否正在進行計劃更改?

+0

+1提到「違約」。在我的DTO中,我有硬編碼的默認值。通過WCF服務公開的數據契約比DTO更加簡化,這些配置細節甚至不會在WCF服務的另一端公開。這是我的責任,而不是網站組織,來詳細介紹這些問題在管理控制檯中的位置。 – Didaxis

1

把它們放在配置中可能是最好的選擇。如果你正在尋找一種訪問它們的好方法,你可以創建一個充當訪問者的靜態類,或者使用類似於依賴注入的東西。

實例訪問器類:

public static class DefaultSupportValues 
{ 
    public static string ProjectID 
    { 
     get 
     { 
      return ConfigurationManager.AppSettings["DefaultProjectId"]; 
     } 
    } 
} 
1

我想你還沒有上市第三個選擇是讓他們在數據庫中。您可以使用各種緩存策略來解決性能問題。這種方法的好處是您可以將您的應用程序託管在一臺或多臺服務器上,而不必爲其更新配置更改而感到痛苦。

以我的經驗,這是這些案件的最佳方法。

+0

我可以很容易地看到這裏緩存的好處。非常好的一點,雖然我處於嚴格的時間限制之下,並且可能沒有時間來實施這樣的事情。 – Didaxis