Мои обычные программы в основном запускаются из main (), и первый оператор всегда:
Main()
{
AppSettings.Initialize();
//etc.
}
В программе asp.net я хочу использовать те же классы, но не имеюmain (), поэтому я использую Global.asax
Application_BeginRequest()
{
AppSettings.Initialize();
//etc.
}
Application_Start()
{
AppSettings.Initialize();
//etc.
}
Таким образом, я могу продолжать использовать глобальные статические переменные, такие как AppGlobal.ID и т. д. Я использую те же классы и вспомогательные классы в WP7, и это всеработает нормально, и мне все равно, что первоначальный запуск переменных приложения в AppGlobal, AppSettings занимает около 2 секунд для установки.
В asp.net это не работает таким образом, потому что инициализация / настройкаповторяется с каждым запросом страницы.Я хотел бы кэшировать класс AppGlobal и класс AppSettings, но как?
Дополнительное редактирование этой темы, чтобы лучше объяснить проблему :
Поскольку только с первой страницейЯ мог бы использовать переменную AppGlobal.Name в коде страницы, я также добавил ее в Application_BeginRequest.
public class AppSettings
{
//
public static void Initialize()
{
}
static AppSettings()
{
AppGlobal.DeveloperMode = Convert.ToBoolean(AppConfigValue("DeveloperMode,False"));
AppGlobal.DebugLevel = Convert.ToInt32(AppConfigValue("DebugLevel,1"));
AppGlobal.FilesFolder = AppConfigValue("FilesFolder,Files");
AppGlobal.LogFilesFolder = AppConfigValue("LogFilesFolder,LogFiles");
AppGlobal.CompanyName = AppConfigValue("CompanyName");
AppGlobal.OwnerName = AppConfigValue("OwnerName");
AppGlobal.ApplicationID = "";
AppGlobal.Initialize();
}
}
public class AppGlobal
{
public static bool DeveloperMode;
public static int DebugLevel = 0;
public static string ApplicationName = "";
private static bool _initialized;
public static void Initialize()
{
}
AppGlobal()
{
//Initialize application (check license, setup folder names, get settings)
//This takes a few seconds to create
}
}
public class Log
{
public static string FileName;
public static int DebugLevel = 0;
public static bool Initialized = false;
static Log()
{
FileName = AppGlobal.ApplicationName;
}
//etc...
}