Который имеет лучшую производительность - настройка в AppSettings или базе данных? - PullRequest
1 голос
/ 21 января 2011

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

Ответы [ 4 ]

3 голосов
/ 21 января 2011

Как упоминалось ранее, это действительно не должно иметь значения - настройки, будь то в файле web.config или в базе данных, должны быть «однократными» и затем кэшироваться, так что это действительно не должно иметь значения.

Я почти гарантирую, что другие части вашего кода будут намного медленнее, чем эта.


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

0 голосов
/ 21 января 2011

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

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

Сказав, что вы можете просто читать все конфигурации при запуске приложения и держать его в памяти.Таким образом, любая разница в производительности сводится только к времени запуска приложения.Вы также получаете дополнительное преимущество, связанное с возможностью проверки файлов конфигурации при запуске.

Не уверен в своих значениях по умолчанию, а просто спросите себя, относятся ли они к среде и действительно ли это то, что вы хотите изменить без перекомпиляции,Будучи конфигурационными файлами, каков вариант использования?Какой-нибудь рабочий или разработчик собирается установить эти значения по умолчанию?Вы планируете их документировать?Собираетесь ли вы сделать свое приложение устойчивым к тому, что настроено?Будут ли эти значения по умолчанию использоваться в нескольких средах / установках (например, для локализации)?Тогда, возможно, лучше использовать другой отдельный файл, который можно при необходимости перераспределять отдельно.

0 голосов
/ 21 января 2011

Как часто настройки будут меняться?

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

Но, честно говоря, возможно, есть десятки других мест, которые нужно улучшить, прежде чем вы начнете беспокоиться об этом - помните: " Преждевременная оптимизация - корень всего зла ":)

0 голосов
/ 21 января 2011

Если это отдельный сервер (в отличие от веб-фермы), сохраните его в файле Web.Config. Существует новая версия инфраструктуры веб-фермы, и вы можете проверить подробности для этого типа сценария здесь:

http://weblogs.asp.net/scottgu/archive/2010/09/08/introducing-the-microsoft-web-farm-framework.aspx

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