包含數百個項目的解決方案是危險的還是笨拙的?
我們的主要客戶解決方案有 111 個項目。當我第一次加入這個團隊時,我對我們有這麼多項目感到驚訝(和震驚),並建議將這些層級合併到更少但更大的組件中。我們的結構具有帶有休眠映射文件的模型 (DTO)、帶有數據控制器呼叫的 WCF 服務層、一些框架類型的項目以及帶有多個模組的 winform CAB 應用程序。我們將使用點擊一次部署。
由於建構時間(最壞情況下最多 15 分鐘),其他一些團隊成員現在也很擔心。我沒有經驗證據表明減少項目是個好主意,我想知道堆棧溢出社區是否有任何回饋。是否有令人信服的理由來改變我們的解決方案結構以整合項目?使用點擊一次部署 100 多個程序集會遇到麻煩嗎?載入和呼叫方法呼叫時,更多的程序集會導致緩慢嗎?我們可能遇到的任何可能破壞事物的限制?
在一個解決方案中擁有多個項目(特別是當項目之間存在許多相互依賴關係時)的最大問題是編譯時間會很快變慢。我已經看到當項目數量增長到如此大時,編譯時間會達到幾分鐘到幾十分鐘。
如果需要載入和初始化 100 個程序集,應用程序啟動也可能會受到影響。這當然假設應用程序需要所有 100 個程序集。
如此大量的項目也暗示了程式碼組織問題。我會稱之為明確的程式碼氣味。這看起來像是一種超出合理範圍的解耦嘗試——猜測有點建築宇航員主義。
我不會擔心部署故事,因為將一個程序集部署到一個目錄與將 100 個程序集部署到一個目錄沒有太大區別……當然,通過 Web 部署 100 個程序集會更慢(100 個連接而不是 1 個,可能是有更大的尺寸……)。
有一些工具可以合併多個程序集,可以幫助解決這個問題——最著名的是來自 Microsoft—— ILMerge。
在進行部署時要擔心的更大問題是配置和正確配置,尤其是在大多數程序集需要自己的配置時。