代码之家  ›  专栏  ›  技术社区  ›  John 'Mark' Smith

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

  •  0
  • John 'Mark' Smith  · 技术社区  · 11 年前

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

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

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

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

    1 回复  |  直到 11 年前
        1
  •  1
  •   Mikolaytis    11 年前

    如果您将创建带有静态变量的类

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

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

    AddConnectionForUser(<Type> UserID)//on login
    RemoveConnectionForUser(<Type> UserID)//on logoff
    GetConnectionForUser(<Type> UserID)
    
    推荐文章