Время жизни статических переменных в .NET.
У меня есть метод расширения, который использует некоторые настройки конфигурации. Я объявила их как static
.
public static class Extensions
{
static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
// ... etc
public static void SendEmailConfirmation(this IOrder order) { }
}
Я просто хотел проверить, что это делает то, что я намереваюсь, поскольку я не уверен на 100%. Идея заключается в том, что я не хочу продолжать читать эти значения, я бы хотел, чтобы они читались один раз и кэшировались в течение всего срока действия веб-приложения. Это то, что произойдет? Благодаря
Ответы
Ответ 1
(обновлено с разъяснением KeithS, что они не прочитаны до первого использования)
Они будут прочитаны при первом использовании, а затем сохраняются до тех пор, пока AppDomain не будет остановлен или не переработан, что, вероятно, вам нужно.
То есть приложения ASP.NET запускаются внутри AppDomain. Таким образом, они являются резидентными и доступны для нескольких запросов без необходимости запуска для каждого отдельного запроса. Вы можете настроить, как долго они будут жить и когда они будут перерабатываться, и т.д. Статические переменные живут и умирают вместе с приложением и, таким образом, выживут до тех пор, пока приложение будет находиться в домене приложения.
Ответ 2
_mailServer
будет инициализирован при первом использовании класса Extensions (каким-либо образом). Он не будет установлен повторно, пока домен приложения не будет перезагружен.
Ответ 3
Они будут загружены в первый раз, когда они понадобятся, и будут оставаться в памяти до тех пор, пока IIS не переработает приложение.