ASP.Net允許您將新程序集複製到應用程序的bin
目錄中,而無需重新啓動任何服務或進程。我有一個應用程序,加載用戶定義的插件和擴展(其中一些是基於COM) - 我想提供類似的功能(即能夠更改/更新程序集,而不需要重新啓動過程)。目前程序集被鎖定,直到進程停止。提供在運行時「熱交換」/更改程序集而無需重新啓動進程的能力
ASP.Net如何管理?
ASP.Net允許您將新程序集複製到應用程序的bin
目錄中,而無需重新啓動任何服務或進程。我有一個應用程序,加載用戶定義的插件和擴展(其中一些是基於COM) - 我想提供類似的功能(即能夠更改/更新程序集,而不需要重新啓動過程)。目前程序集被鎖定,直到進程停止。提供在運行時「熱交換」/更改程序集而無需重新啓動進程的能力
ASP.Net如何管理?
ASP.Net通過使用「陰影複製」來實現此目的。看到這裏: MSDN Shadow Copying
基本上,程序集被複制到不同的文件夾通過ASP.Net從它們被加載到應用程序域。正是程序鎖定了該程序集的複製版本,使原始程序集文件(在Bin文件夾中)解鎖。然後將App Domain配置爲監視原始程序集的更改,並在檢測到更新時創建新的App Domain並將新程序集加載到該程序集中。
此時,任何未來對Web應用程序的請求都會被ASP.Net路由到新的App Domain,而舊的App Domain將保持活動狀態以繼續提供任何當前正在執行的請求。當ASP.Net確定舊App域不再處理任何請求時,它將被卸載並且「熱插拔」已完成。
從你的簡要描述,雖然我會建議調查Microsoft MEF。 MEF是一個致力於構建您所描述的插件架構的框架。
太棒了!我不知道.Net框架內置了這個功能! – Justin 2013-05-28 16:47:36