Подтвердить что ты не робот

Создайте приложение ASP.NET MVC Web Farm Ready

Каким будет наиболее эффективный способ создания веб-фермы приложений ASP.NET MVC.

Самое важное - обмен информацией с текущими пользовательскими данными (Контекст) и (не столь важными) кешированными объектами, такими как элементы поиска (состояния, типы улиц, округа и т.д.).

Я слышал/читал MemCache, но не видел простого применимого способа (документации) о том, как его реализовать и протестировать.

4b9b3361

Ответ 1

контекст запроса
Любой запрос, попадающий в веб-ферму, обслуживается доступным сервером IIS. Контекст создается там, и весь запрос обслуживается одним и тем же сервером. Поэтому контекст не должен быть проблемой. Запрос - это конвейер выполнения без состояния, поэтому ему не нужно обмениваться данными с другими серверами в какой-либо форме или форме. Он будет подан от начала до конца той же машиной.
Информация пользователя считывается из файла cookie и обрабатывается сервером, обслуживающим запрос. Это зависит от того, где-то кешировать полный пользовательский объект.

Session
Если вы используете словарь TempData, вы должны знать, что он хранится в словаре Session. В ферме серверов это означает, что вы должны использовать другие средства, кроме сеансов InProc, потому что они не распределяются между серверами IIS по всей ферме. Вы должны настроить другие диспетчеры сеансов, которые либо используют БД, либо другие (государственный сервер и т.д.).

Кэш
Когда дело доходит до кеша, это совсем другая история. Чтобы сделать его как можно более эффективным, кеш должен быть подан. По умолчанию это не так. Но, глядя на кеш, это едва означает, что, когда нет кеша, его следует читать и хранить в кеше. Поэтому, если на конкретном сервере фермы серверов нет какого-либо объекта кеша, он создаст его. Со временем все они будут кэшировать некоторые общедоступные общедоступные данные.
Или... Вы можете использовать библиотеки, такие как memcached (как вы упомянули), и использовать общий кеш. В сети есть несколько примеров использования.

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