2014-09-17 2 views
0

Я конвертирую приложение из C# WebForms в MVC.Значения запуска кэширования ASP.NET

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

В настоящее время, когда вы запрашиваете настройку приложения, он проверяет HttpContext.Cache, чтобы узнать, были ли вы уже получены настройки. Если вы этого не сделали, он вызывает вызов веб-службы и сохраняет настройки (более 100 объектов, которые по существу являются ключевыми/значениями) в HttpContext.Cache. Таким образом, вызов для получения настроек приложения происходит один раз.

Должен ли я смотреть на другой способ сделать это? Я думал, что настройки должны быть только вызовом службы REST, где вы передаете ключ и получаете значение (текущая служба - это * .ashx, которая действительно не идеальна для обработки исключений, кроме других причин). Но, очевидно, это приведет к появлению большего количества веб-запросов. Что считается лучшей практикой здесь? Является ли текущий метод точным, и я должен просто оставить код, работающий одинаково в приложении MVC?

+0

StackOverflow на самом деле не лучшее место, чтобы задать этот вопрос. http://stackoverflow.com/help/on-topic и http://stackoverflow.com/help/dont-ask – DavidG

+0

Где вы предлагаете? Благодарю. –

+0

Не может быть никаких проблем с вопросом об этом? Кажется справедливым вопросом при переходе от webforms к MVC – SkyBlues87

ответ

0

Лучше загружать все ресурсы в одном вызове:

  • меньше HTTP запросов лучше для производительности. Запросы Http могут иметь задержку около 50 мс, поэтому для получения всех значений один за другим потребуется 50 x 100 = 5000 мс => 5 сек.
  • Если внешняя веб-служба опускается, ваше приложение все еще работает, потому что вы уже загружено и кэшировано все значения

Я сохраню текущее решение, если оно будет работать, и сосредоточиться на новых вещах вместо того, чтобы переписывать рабочий код.

+0

Спасибо, это полезно. Часть, которая все еще беспокоит меня, использует * .ashx, который, кажется, очень ограничен в своих ответах, а не кодах HttpResponse, доступным при использовании службы REST, такой как Web API. –

+0

Обработчики http @ RyanLangton могут возвращать любые типы данных (xml, json) и принимать любые запросы (также PUT, DELETE). Я рекомендую переключиться на веб-интерфейс API, если вам нужно поддерживать несколько типов запросов, например. создавать/обновлять значения конфигурации, фильтровать, удалять значения. –