我正在設計一個解決方案,我相信它可以在插件式架構中很好地工作。c#在不重新啓動的情況下添加/刪除動態插件
「主程序」將提供服務,如數據庫訪問,消息到遠程客戶端,日誌記錄和其他功能。
每個「插件」將能夠使用這些功能,幷包含將執行「插件」特定邏輯的自定義功能。
我需要能夠在沒有重新啓動「主程序」的情況下在運行時安裝和卸載插件。當「插件」的新版本可用並需要添加到「主程序」時,卸載將主要發生。
如果我創建每個插件作爲DLL並將其放置在一個文件夾中我可以發信號通知「主程序」加載它們,一切都很好。我不確定的是如何在不再需要時正確卸載它們,而不會造成內存泄漏。
如果我在程序集上執行Application.Load,卸載它的唯一方法是卸載整個AppDomain。我對AppDomain的工作方式不太瞭解,但這似乎會導致問題。
有沒有人做過這種事情之前,可以提供一些建議最好的方式來做到這一點,而不會造成不穩定或內存泄漏?
這就是我的想法。希望有一個更好的方法來做到這一點,但有時候,漫長的道路我認爲最終會更好。 – Kelly
@Kelly你可以嘗試找到一個庫。但MEF是最受歡迎的插件庫,不適用於appdomains。我幾乎肯定Github上有一些例子。 –
謝謝我已經使用了MEF合理的數量,你的權利,這不正是我在這裏尋找。我有足夠的時間來窺探,看看我能找到什麼。 – Kelly