2009-08-10 20 views
7

我有一個產品有大約10多個裝配。我們過去一直沒有強制命名組件。但在閱讀了強大的命名之後,我想這對於強壯的名字集合來說是一個明智的想法。只是想知道是否強制命名程序使用的所有程序集的最佳做法?您是否強烈地指出您的產品使用的所有裝配?

有什麼想法?

+0

這是另一個密切相關的問題http://stackoverflow.com/questions/796945/should-interop-assemblies-be-signed – sharptooth 2009-08-11 06:02:26

回答

9

是的,這是一個最佳實踐,你真的應該這樣做,尤其是考慮到你將這些代碼發送給客戶(我認爲強命名在內部或基於Web的應用程序中不那麼重要)。

爲了這個理由的說明,請參閱Strong-Named Assemblies

強名稱由 集的標識,其簡單的文本 名稱,版本號和區域性 信息(如果有的話)的-plus一 公鑰和數字簽名。它 從彙編文件 (包含組裝 清單,這又包含了所有 組成組件的文件的名稱 和哈希文件)生成,使用 相應的私鑰。 Microsoft® VisualSoftware®.NET和 Windows軟件開發工具包(SDK) 中提供的開發工具可以將強名稱分配給 程序集。具有相同 強名稱的組件預計爲 相同。

您可以通過用 強名稱簽署程序集來確保名稱全局爲 。特別是,強 名滿足以下 要求:

  • 強名稱保證名字的唯一 依靠獨特的密鑰對。沒有人 可以生成相同的程序集名稱 ,因爲使用一個私鑰生成的程序集 的 名稱與使用另一個私鑰生成的程序集 的名稱不同。

  • 強名稱保護程序集的版本 血統。強大的名稱 可以確保沒有人能夠生成您的程序集的後續版本 。 用戶可以確定他們正在加載的程序集版本是 ,它們來自於創建應用程序的版本 與創建的 相同的發佈者 。

  • 強名稱提供強大的 完整性檢查。通過.NET 框架安全檢查保證 程序集的內容自 生成以來未被更改。 但是,請注意, 中的強名稱本身並不意味着所提供的信任級別爲 ,例如 示例,通過數字簽名和 支持證書。

當你引用一個強命名 組裝,你希望得到一定的 好處,比如版本控制和 命名保護。如果強命名 組裝,然後引用了一個裝配 有一個簡單的名字,這不 有這些好處,你失去了 好處,你會從使用 強命名程序集派生並恢復到 DLL衝突。因此,強名爲 程序集只能引用其他 強名稱程序集。

相關問題