Asp.net Web服务以及如何重用WMI或DB连接?

时间:2010-12-12 16:06:07

标签: c# asp.net web-services wmi

我有简单的asp.net Web服务,用于监视和管理大约10台计算机,有4个webMethods,所有这些方法都非常简单。 一般来说,他们看起来像:(1)使WMI连接到某个机器,(2)做一些简单的任务,(3)返回结果。

问题是与远程计算机的WMI连接大约需要15秒,而且我不需要为同一台机器连续调用2或3个方法。

据我所知,每次调用webMethod时都会创建我的服务类(公共类MonSvr:System.Web.Services.WebService)的新实例。

  • 那么如何在我的所有实例之间共享WMI或数据库连接 我可以重复使用此连接的服务吗?

  • 当有多个来电时 webMethods我的服务,然后 每个Web服务实例都在运行 单独的线程?

2 个答案:

答案 0 :(得分:0)

您可以创建一个静态Dictionary,其中包含远程计算机的名称和WMI连接。然后可以在不同的呼叫之间共享。您可能一次使用WMI类遇到多个线程的问题,因此请务必检查所有调用是否是线程安全的。

答案 1 :(得分:0)

您不想节省对象创建的成本吗?如果是这样,为什么不使用Singleton模式?对于多线程Singleton,您可以查看http://msdn.microsoft.com/en-us/library/ff650316.aspx