在控制器调用之间存储服务器对象的最佳实践
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)
我正在使用第 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)