У меня есть несколько веб-сервисов ASP.NET, которые имеют общий вспомогательный класс, который им нужен только для создания одного экземпляра на сервер . Он используется для простого перевода данных, но затрачивает некоторое время при загрузке, загружая файлы из файла web.config и т. Д. Вспомогательный класс на 100% поточно-ориентирован. Думайте об этом как о простой библиотеке служебных вызовов. Я бы сделал все методы общими для класса, но я хочу загрузить исходную конфигурацию из web.config. Мы развернули веб-службы в IIS 6.0 и используем пул приложений с веб-садом 15 рабочие.
Я объявил вспомогательный класс как переменную Private Shared в Global.asax и добавил свойство Shared ReadOnly для отложенной загрузки, например:
Private Shared _helper As MyHelperClass
Public Shared ReadOnly Property Helper() As MyHelperClass
Get
If _helper Is Nothing Then
_helper = New MyHelperClass()
End If
Return _helper
End Get
End Property
У меня есть код регистрации в конструкторе для MyHelperClass()
, и он показывает конструктор, работающий для каждого запроса, даже в одном потоке. Я уверен, что мне не хватает некоторых ключевых деталей ASP.NET, но MSDN не очень помог.
Я пытался делать похожие вещи, используя Application("Helper")
и Cache("Helper")
, и я все еще видел, как конструктор запускался с каждым запросом.