我们有包含数百个从 ASP.NET 应用程序启动的自定义客户端进程的 DLL。我们的客户在执行数据输入时运行这些进程,通常每个客户只有 1 个进程。在任何一天,我们都可能更新其中的 2 或 3 个流程。
目前,这些都包含在一系列 DLL 中,这意味着我们每天要发布几次我们的应用程序。结果,任何登录的客户端都会被引导出系统,因为发布会导致应用重新启动。
有没有一种方法可以更新这些 DLL 而无需每次都完全发布?
如果您的客户端进程具有通用 API,那么您可以在 WCF(或类似)服务中单独托管 DLL,并远程调用客户端进程。所以基本上,考虑转向面向服务的架构。
您可以切换到 SQL 服务器或状态服务器会话,以便在应用重新启动后保留会话和登录用户。或者将这些 dll 存储在 APP_DATA 中并动态加载。然后当然你必须考虑一些刷新系统并用新上传的刷新加载的dll。
查看 Microsoft 的托管可扩展性框架 (MEF)。它不仅提供依赖管理,还提供像库加载这样的插件。很可能这正是您正在寻找的。
没有明智的方法可以避免应用程序重新启动。请注意对“明智”一词的强调。