我的團隊正試圖找出在我們的自定義程序集中管理集中式常量(可能爲只讀靜態變量)的最佳方法。我們已經構建了一個處理體系結構,其中程序集動態加載到運行時。隨着數據通過我們的系統,一些程序集將信息寫入字典,然後傳遞給另一個程序集,該程序集將讀取數據並處理它。隨着我們的產品成熟並且我們的客戶需要不同的處理能力,我們將需要添加將被寫入/讀取的新數據字段。截至目前,我們在我們的核心dll中定義了常量,但這不會長期運行,因爲當我們獲得一個新的數據時,我們將不得不重新編譯核心dll,這樣我們的測試團隊將不得不完全退化測試整個應用程序,而不僅僅是測試新程序集提供的新功能。試圖找出一種方法來添加新常量,並知道正在編寫什麼數據,而無需重新編譯/部署任何我們不一定非要做的事情。程序集中的持續管理
我們考慮兩種選擇:
創建一個常數的DLL,它僅持有的常量。當我們 需要新的字段時,我們添加(從不刪除)到dll。這方面的下降 方面是,對dll的更改仍會影響整個系統,因此可能需要完整的迴歸測試。
讓每個程序集都公開所有讀取/寫入的字段, ,然後在開發人員集成期間查找名稱不匹配。對於 例如Assembly1由於對字典鍵 大小寫寫操作(字段1,字段2)和Assembly2讀取 (FIELD1,Filed2),引起的不匹配(字段1與FIELD1)。這將讓我們不必 一個常數組件,但它需要 不匹配驗證一些額外的代碼,並且似乎會導致耦合的一些位。
注:當我說的常量,我的意思並不是恆定的。根據我們最終的解決方案,我們可能會使用只讀靜態。
如果有人做了這樣的事,或有辦法的任何想法來做到這一點,我會欣賞你的輸入。我們的基本目標是通過僅部署新程序集來提供新功能。
這些常量有哪些數據?爲什麼他們需要從其他程序集訪問? – Bobson
Dictionary被設置爲。他們需要被不同的程序集訪問,因爲每個程序集都有特定的功能。例如,一個程序集將從xml文檔獲取傳入數據,並將其填充到字典中。然後另一個程序集將數據從字典中提取出來,放入一個自定義的csv文件中。這兩個程序集都需要知道他們正在訪問「PrimaryAddress」字段。如果那有意義的話。 –
Means
是否有一些令人信服的理由需要將這些值編譯爲常量?如何創建一個將常量保存爲鍵/值對的配置文件,然後使用「常量」DLL將這些數據讀入全局可用的字典中。然後,當添加新的常量時,不必重新編譯,迴歸測試可以限制爲驗證新常量的值不會干擾現有常量的值。 –