2012-08-08 69 views
0

我開發調用具有多個版本的產品的客戶端應用程序,我的客戶可以一個接一個地加載不同版本的產品。.Net中的Dll管理

爲了支持以前的版本,我爲每次用戶挑選的版本創建了應用程序域。

這是正確的做法嗎?我有其他選擇嗎?

編輯: 多個版本 - 多個DLL

謝謝!

回答

2

如果不同版本的產品駐留在不同的DLL中,那麼是的,AppDomain是正確的方式。

雖然請確保您不會將DLL泄漏到您的主域。

此外,運行一些測試,以確保您不會泄漏內存。

UPDATE

替代是加載的DLL中的另一過程和使用RPC或服務調用。我想這對你的應用程序來說是一個矯枉過正的問題。

0

我不認爲這些產品必須駐留在不同的AppDomain中。這樣做的主要原因是什麼?你想讓你的應用程序能夠卸載特定的DLL,並在運行時加載相同的DLL的新版本?如果沒有...我不知道有什麼是有App Domain的原因。

當你想保證當程序集被卸載時,由程序集分配的內存可以被釋放時,通常會使用AppDomain。它使某些類型的應用程序變得敏銳。 IIS使用AppDomains來管理它正在運行的所有應用程序(以便將應用程序分開)。

爲什麼不在產品的所有版本中使用通用接口,並將產品本身的信息存儲在內部(屬性或任何你喜歡的方式)?

+0

用戶必須能夠在運行時通過更改爲新產品來更改整套dll。 – 2012-08-08 08:02:32

+0

但是爲什麼它必須更改一組dll?我不明白。我非常肯定,您可以一次加載所有對象的定義,並根據用戶的選擇 - 只使用所需的。 – MaciekTalaska 2012-08-08 08:22:40

+0

由於當前版本和以前的版本對客戶代表的價值也是如此,因爲新版本可能不是一種改進,而是針對特定問題的功能變化,用戶可以在不同版本之間播放以查看差異。 – 2012-08-08 08:41:48