Веб-сервисы Asp.net и как повторно использовать соединения WMI или DB? - PullRequest
0 голосов
/ 12 декабря 2010

У меня есть простой веб-сервис asp.net, для мониторинга и управления примерно 10 компьютерами, с 4 веб-методами, и все эти методы довольно просты.В целом они выглядят примерно так: (1) устанавливают WMI-соединения с определенной машиной, (2) выполняют простую задачу, (3) возвращают результат.

Проблема в том, что WMI-соединение с удаленными компьютерами занимает около 15 секунд, и я часто вынужден последовательно вызывать 2 или 3 метода для одной и той же машины.

Из того, что я знаю, есть новый экземпляр моего класса обслуживания (открытый класс MonSvr: System.Web.Services.WebService), создаваемый при каждом вызове webMethod.

  • Так как я могу совместно использовать соединение WMI или DB между всеми экземплярами моего сервиса, чтобы я мог повторно использовать это соединение?

  • Когда все несколькообращается к webMethods моего сервиса, тогда каждый экземпляр веб-сервиса работает в отдельном потоке?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2010

Разве вы не хотите сэкономить на создании объекта? Если это так, то почему бы не использовать шаблон Singleton? а для многопоточных Singleton вы можете проверить http://msdn.microsoft.com/en-us/library/ff650316.aspx

0 голосов
/ 12 декабря 2010

Вы можете создать статический Dictionary, содержащий имя удаленного компьютера и соединение WMI.Это может быть разделено между различными вызовами.У вас могут быть проблемы с несколькими потоками, использующими классы WMI одновременно, поэтому убедитесь, что все вызовы являются потокобезопасными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...