我最近在另一个论坛上与另一个开发人员进行了讨论,主题是 ASP.NET 中的代码重用。所述场景是他需要在服务器正常运行期间频繁更新生产服务器上的代码,这会导致所有用户的 Session 被重置。他避免将共享代码或类放入 App_Code 文件夹或将预编译的 DLL 放入 Bin 文件夹,因为任何更新也会刷新会话。
他提出的解决方案是将他的共享代码放入 UserControls 并在需要的地方引用它们。这使他能够仅更新将在下一次请求时动态重新编译的 UserControl 文件,而无需强制重新启动会话。请注意,用户控件不打算有任何 UI,它们可能只包含一些业务逻辑。
我试图说服他不要这样做,因为这对我来说本质上是错误的——但我无法提供任何确凿的事实来支持我的说法,即这是一种非常糟糕的做事方式。我唯一能想到的是它违反了业务逻辑与UI分离的原则。我是大错特错还是有具体的理由不应该这样做?链接或示例会有所帮助。
注意:目前不能选择使用进程外会话状态,他们也无法决定计划的停机时间。此外,由于这是一个正在积极开发的站点,他们似乎还没有使用任何专业的部署模型。
提前致谢。
编辑:此外,如果有人能准确地阐明会话在上述情况下重新启动的原因,那将会很有帮助。