Web服务实例化对象 C#.NET

4

我对Web服务、C#和.NET都比较新手。我想在我的Web方法中使用连接对象来写入数据库,但我不知道在哪里实例化这个对象,实例化它然后在Web方法中销毁它相当荒谬。

我希望我的连接实例能够随时访问,所以是否有一种构造函数或其他方法可以正确地实现这个功能。


创建一个对象,立即使用它,然后销毁它并不荒谬。你为什么这么认为? - svick
2个回答

3
我知道您的意思:您不想在每个方法中重复连接管理代码。这确实很荒谬。
我的做法是这样的:我使用这种技术创建每个请求的连接。当WCF调用结束时,我销毁连接。
因此,在调用过程中,我可以依赖于该连接的存在。它会被正确清理。
不幸的是,WCF没有内置的HttpContext.Items等效项,因此我们必须使用扩展进行修改。

3
你需要在你的 Web 方法中实例化数据库连接类。我认为在 Web 方法中实例化这样的对象并不荒谬:
  • C# 是一种面向对象的语言。如果不创建对象,你将无法实现太多;而
  • 大多数 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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接