我有一個運行在Linux/mono上的長時間運行的C#服務器應用程序,並且我添加了動態加載DLL程序集以擴展應用程序的功能。我發現在運行時更新這些DLL程序集無需使用AppDomain即可完成,它看起來只會影響我已經完成的工作。當然會有解決辦法,但那不是我真正想要的。試圖避免AppDomains
單聲道是否提供了我可能錯過的任何替代解決方案? C#4.0在這方面有什麼新東西嗎?
我有一個運行在Linux/mono上的長時間運行的C#服務器應用程序,並且我添加了動態加載DLL程序集以擴展應用程序的功能。我發現在運行時更新這些DLL程序集無需使用AppDomain即可完成,它看起來只會影響我已經完成的工作。當然會有解決辦法,但那不是我真正想要的。試圖避免AppDomains
單聲道是否提供了我可能錯過的任何替代解決方案? C#4.0在這方面有什麼新東西嗎?
我使用了Mono.CSharp庫。您可以即時編譯c#代碼,並將鉤子放入主應用程序中以執行它。
您是否考慮將應用程序分解爲不同的組件,並通過webservice或TCP/IP在它們之間進行通信,而不是加載到新的程序集中以修改行爲?這樣,您可以通過更改組件調用的位置來更改應用程序的行爲(在運行時)。例如,您可以使用新行爲構建新組件,例如webservice,然後指示所有現有組件使用它。
它還可以解決長時間運行的單聲道運行時應用程序的一些內存問題。
所有的消息管道和帶來的開銷是我想要避免的。我的應用程序長時間運行單聲道時沒有遇到任何問題。 – FlappySocks 2009-12-29 05:05:02