Использование кеша в процессе или вне процесса зависит исключительно от приложения.
Кэш Inproc хранит данные в памяти процесса текущего приложения, что делает доступ к кэшированным данным очень быстрым, однако кэшированные данные доступны только для локального приложения. Это отлично работает, если у вас есть только один сервер приложений или каждый сервер приложений использует свой набор данных. Даже в этом случае, если сервер приложений выйдет из строя, кэшированные данные будут потеряны.
Однако, если ваш сервер нескольких приложений использует один и тот же набор данных, Inproc cache - не лучшее решение. Поскольку в этом случае каждое приложение будет загружать один и тот же набор данных, что ограничивает полезность использования кеша. Более того, для кэширования состояния сеанса это оставит вам единственный вариант использования липких сеансов, что, в свою очередь, ограничит балансировку нагрузки.
С другой стороны, распределенное кэширование добавит дополнительных сетевых затрат на получение данных с другого сервера, но даст вам преимущество совместного использования одного и того же набора данных со всеми другими приложениями. Не только это, но и данные останутся в кэше, даже если сервер приложений выйдет из строя.
Вы также можете использовать гибридное решение для кэширования Inproc и OutProc, например, предоставленное NCache, где вы может иметь распределенный кластерный кеш (содержащий все кэшированные данные) и локальный кэш внутрипроцессов (содержащий подмножество данных, часто используемых этим сервером приложений). Это даст вам преимущества обоих методов кэширования.
Поскольку вы переписываете свое приложение, я рекомендую вам попробовать NCache. Он предоставляет как внутрипроцессные, так и сторонние решения. Вы можете написать свое приложение только один раз, протестировать его с обоими решениями и выбрать то, что вам больше всего подходит.
person
Sameer Shah
schedule
24.09.2014