在控制器调用之间存储服务器对象的最佳实践

Best practices for storing Server object between Controller calls

我正在使用第 3 方 SDK 连接到服务器 运行 相应的第 3 方数据库。

当用户访问我的 ASP.NET MVC 4.0 网站时,他将不必提供凭据;连接是匿名的,服务器对象在每次调用控制器时实例化。

这很慢,因为实例化此服务器对象本身需要几秒钟。我真正想要的是一次创建对象并重用它。我知道我可以使用会话变量来实现这一点,但这不是一个优雅的解决方案,并且会在会话变量过期时出现问题。

有没有更好的方法来做到这一点?

如果您将创建 class 带有静态变量和这样的连接

class DB
{
    public static <Type> DB {get;set;}
}

您会遇到问题,因为所有用户都将使用单一数据库连接。 因此,您需要使用包含数据库连接和用户 ID 的静态对象列表创建 class。您需要创建方法:

AddConnectionForUser(<Type> UserID)//on login
RemoveConnectionForUser(<Type> UserID)//on logoff
GetConnectionForUser(<Type> UserID)