我們有一個很大的winform應用程序,我們在用戶磁盤上安裝。 我們希望第三方能夠編寫使用我們某些應用程序功能的應用程序。所以我們編寫了API.dll,它通過解析註冊表中的安裝目錄來與其他一些程序集進行交互。我們將API.dll作爲SDK發送給第三方。有幾個選項,爲第三方應用程序的實際部署如何將看起來像:這是GAC的有效用途嗎?
他們「複製本地」 API.dll和船舶它。缺點:我們無法在API.dll中進行更改(當然不會中斷),因爲客戶應用程序已將其複製。如果我們改變它所交互的其他程序集(我們可能會),我們可能需要改變它。
第三方不附帶API.dll,而是我們把API.dll放在GAC中。缺點:GAC的麻煩,簽署。
與#1相同,但API.dll只有抽象+工廠從我們的/ bin加載它們。缺點:可能並不總是微不足道,有些工作。
我不喜歡GAC,並儘量避免它,但團隊中的一些人在這裏做點事。你怎麼看?
+1用於避免GAC但是......客戶無法在需要時進行升級。這是我們在機器上安裝的一個大系統,客戶使用它的API。我們可能需要定期安裝補丁程序等。因此,使用GAC可以幫助我們至少有一些機會來幫助那些RTFM並且不會複製本地文件的客戶。 –
如果它在GAC中,即使第三方在本地複製我認爲GAC仍然贏得 –
嗯,我不知道GAC優先考慮(我認爲這是相反的方式)。但是,客戶端仍然可以通過使用程序集綁定到特定的版本號來顛覆這一點。所以我想這完全取決於你。我只知道,作爲第三方供應商,如果我的API供應商在我未部署的升級中打破了我的產品,我會非常不高興。 – Reddog