2012-04-15 107 views
4

我对Web服务,C#和.NET很新颖。 我想在我的web方法中使用连接对象,以便在数据库上写入数据,但是我没有在哪里实例化这个对象,实例化它然后在web方法中销毁它是相当荒谬的。 我希望我的连接实例每次都可访问,所以有没有一种构造函数或什么来正确地做到这一点。Web服务实例化对象C#.NET

+0

创建一个对象并使用它并立即销毁它并不是荒谬的。你为什么这么认为? – svick 2012-04-15 13:59:38

回答

3

我知道你的意思:你不想重复连接管理代码每一种方法。事实上,这将是荒谬的。

我这样做:我使用this technique来创建每个请求连接。当WCF调用结束时,我销毁连接。

所以在通话期间,我可以依靠这个连接。它会被正确清理。

不幸的是,WCF没有与HttpContext.Items内建的等价物,因此我们必须在使用扩展时对其进行破解。

3

您将需要在您的web方法中实例化数据库连接类。我认为在你的web方法中实例化这样一个对象没有什么可笑的:

  • C#是一个object-orientated语言。没有创建对象,你不会取得很多成就;和
  • 大多数ADO.NET连接对象(包括SQL Server & Oracle)实现连接池,因此每次创建新连接对象时都不会创建到服务器的物理连接。相反,数据库库将为您管理一个连接池。

我建议这样的事情,以确保您释放Web服务调用后的连接:

// This example uses SQL-Server connections, but most 
// ADO.NET database drivers are similar. 
using(SqlConnection conn = new SqlConnection(MyConnStr)) 
{ 
    UseConnection(conn); 
} 
// connection released to pool here automatically.