Является ли использование const в классе в App_Code быстрее / быстрее, чем использование appSettings в config.web в приложении webforms asp.net? - PullRequest
2 голосов
/ 22 апреля 2009

Я хочу узнать, как быстро получить доступ к моим глобальным файлам ... они изменятся только на этапе бета-тестирования. прежде чем мы пойдем жить. с тех пор они никогда не изменятся.

Я думаю, что получение материала из web.config сопряжено с дополнительными затратами, а также с его аккуратным кодом для написания App.HostUrl вместо ConfigurationManager.AppSettings ["HostUrl"]. ToString ()

app.cs

public class App {
    public const string HostUrl = "http://www.{domain}.co.uk";
    public const string iHostUrl = "http://img.{domain}.co.uk";
}

или

web.config

<appSettings>
<add key="HostUrl" value="http://www.{domain}.co.uk" />
<add key="iHostUrl" value="http://img.{domain}.co.uk" />
<appSettings>

Ответы [ 3 ]

5 голосов
/ 22 апреля 2009

Const будет быстрее, но это ограничивает наши возможности развертывания. В качестве альтернативы, почему бы вам не создать статические переменные и поместить туда набор приложений в вашем Application_Start (в global.asax).

public class App {
    public static string HostUrl;
    public static string iHostUrl;
}

В Global.asax.cs:

void Application_Start(object sender, EventArgs e)
{
    App.HostUrl = ConfigurationManager.AppSettings["HostUrl"].ToString();
    App.iHostUrl = ConfigurationManager.AppSettings["iHostUrl"].ToString();
}
5 голосов
/ 22 апреля 2009

Я использую классы с константами для вещей, которые действительно будут постоянными (то есть первичные ключи значений в таблицах поиска, которые никогда не меняются). То, что у вас есть в вашем примере, выглядит так, как будто оно может фактически измениться между тестовой средой и производственной средой, и это именно тот тип вещей, который, я думаю, имеет смысл поместить в какой-то файл .config. Затем эти файлы можно сохранить в вашей системе контроля версий / управления конфигурацией для каждой среды, в которой вы развертываете.

Что касается уродства необходимости 'ConfigurationManager.AppSettings ["HostUri"]', вы всегда можете обернуть их в статические свойства с помощью методов получения в классе вашего app_code или внешней библиотеки, чтобы вы могли просто сказать «App. HostUrl.

Что касается производительности, я вполне уверен, что значения в конфигурации кэшируются в памяти при инициализации приложения и / или при первом вызове значений из системы конфигурации, поэтому разница в производительности, вероятно, довольно незначителен.

5 голосов
/ 22 апреля 2009

Web.config в любом случае анализируется вашим приложением, поэтому на практике с ним не связано никаких дополнительных затрат. Независимо от того, имеет он appsettings или нет, файл все еще открыт, прочитан и проанализирован.

Вам следует беспокоиться о реальных узких местах производительности вашего приложения, а не о том, что оно делает один раз при запуске. Вы не достигнете заметного повышения производительности, не сохраняя свои настройки в web.config.

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