2010-08-11 5 views
17

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

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

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

ответ

21

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

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

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

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

Смежные вопросы