代码之家  ›  专栏  ›  技术社区  ›  bohdan_trotsenko

SOAP web服务(.net)中数据库连接的正确位置

  •  1
  • bohdan_trotsenko  · 技术社区  · 16 年前

    我有一个asp.net网站和一个数据库。

    该网站有一个web服务,用于存储来自我的软件的反馈。

    据我所知,IIS将重用创建的对象进行顺序请求。 这就给出了在web服务的构造函数中连接到DB的理由,并正确实现 Dispose() 方法,并使用连接为每个 [WebMethod] Request() . 当前版本遵循这种模式。

    另一种方法是连接并关闭每个 [WebMethod] Foo() . 但我担心这会影响演出。

    总之,, 处置 或者为每个请求连接并关闭数据库?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Guffa    16 年前

    您应该为每个请求连接。

    页面实例仅用于单个请求,因此不能在其中存储连接以重用它。您必须将它存储在其他地方,这非常复杂(具有线程安全性等),绝对不值得。

    关闭连接时,实际的数据库连接将返回到连接池。连接池负责在为您创建的下一个连接对象重新使用连接时正确地重置连接,以便您获得一个活动的、未被先前使用污染的连接。

    连接池工作正常,您应该使用它,而不是尝试自己创建一个连接池。

        2
  •  1
  •   Akash Kava    16 年前

    从ADO.NET 2.0开始,DB连接是池连接,因此连接的实际打开和关闭是由DB连接池管理的,您可以在自己的方法中自由打开和关闭它们,因为池将保持它们打开直到超时。您还可以配置池设置。

        3
  •  0
  •   djna    16 年前

    我的做法是:

    2). 否则,请保持简单,在每次请求时打开和关闭。编写线程安全的连接池不是一件小事。

    3). 如果性能证明存在问题,则调查每次连接开销是否是原因。如果是这样,请找到一个池实现或(最后的)代码池。

    推荐文章