在Controller调用之间存储Server对象的最佳实践

时间:2015-02-19 17:06:58

标签: c# asp.net .net asp.net-mvc-4

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

当用户访问我的ASP.NET MVC 4.0网站时,他不必提供凭据;连接是匿名的,每次调用Controller时都会实例化Server对象。

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

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

1 个答案:

答案 0 :(得分:1)

如果您将使用具有此类连接的静态变量创建类

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

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

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