2010-12-12 23 views
0

我有簡單的asp.net web服務,用於監視和管理大約10臺計算機,使用4個webMethods,所有這些方法都非常簡單。通常他們看起來像:(1)使WMI連接到某個機器,(2)做一些簡單的任務,(3)返回結果。Asp.net Web服務以及如何重用WMI或DB連接?

問題是WMI與遠程計算機的連接大約需要15s,而我需要連續調用2或3個方法來使用同一臺計算機。

據我所知,每次調用webMethod時都會創建一個服務類(公共類MonSvr:System.Web.Services.WebService)的新實例。

  • 所以,我怎麼能分享WMI或數據庫連接愨,我可以重用此方面,我國 服務的所有實例?

  • 當所有的多次調用我的服務 webMethods的,不那麼 web服務的每個實例 單獨的線程中運行?

回答

0

您可以創建包含遠程計算機的名稱和WMI連接的靜態Dictionary。這可以在不同的調用之間共享。您可能一次使用WMI類的多個線程有問題,因此請務必檢查所有調用是否都是線程安全的。

+0

如何在任何webMethods被調用之前在服務啓動時創建連接? – Primoz 2010-12-12 16:28:37

+0

您可能最好在每次通話請求時第一次創建它。然後第一個很慢,但更快。 – cjk 2010-12-13 18:42:21

0

是不是想節省創建對象的成本?如果是這樣,那麼爲什麼不使用Singleton模式?並且對於多線程Singleton,您可以檢查http://msdn.microsoft.com/en-us/library/ff650316.aspx

+0

在我的情況下,singelton可以訪問數據庫,因爲只有一個數據庫。但我不知道有關WMI連接到多臺計算機。 – Primoz 2010-12-12 19:37:03

相關問題