Ответ 1
Я пытаюсь сказать их другими словами.
На сервере у вас может быть множество сайтов asp.net, которые работают вместе. Каждый сайт - это домен приложения.
Вы должны назначить каждому из них один пул приложений. Многие домены приложений (сайты) могут иметь один и тот же пул приложений и потому, что у них одинаковый пул приложений, они выполняются под теми же процессами и под одной учетной записью - и у них одинаковые настройки пула. Если этот пул перезапустится, все сайты под этими пулами перезагрузятся.
Теперь каждый пул может иметь один или несколько рабочих процессов . Каждый рабочий процесс - это другая программа, которая запускает ваш сайт, имеет свои собственные статические переменные, они разные начинают останавливать вызовы и т.д. Различные рабочие процессы не обмениваются данными, и единственный способ обмениваться данными - из общих файлов или общей базы данных. Если у вас более одного рабочего процесса, и один из них делает вычисления в течение длительного времени, другой может позаботиться о том, чтобы обрабатывать интернет-вызовы и показывать контент.
Когда вы назначаете много рабочих процессов для одного пула, вы делаете вызываемый веб-сад, и ваш сайт должен быть запущен с нескольких компьютеров, если компьютер является одной машиной обработки.
Каждый рабочий процесс может иметь много потоков.
Чем больше влияет на вас рабочий процесс:
Когда у вас один рабочий процесс все проще, среди вашего приложения все статические переменные одинаковы, и вы используете lock
, чтобы синхронизировать их.
Когда вы назначаете более одного рабочего процесса, вы по-прежнему продолжаете использовать статические переменные lock
, статические переменные не различаются между многими прогонами вашего сайта и если у вас есть общий ресурс ( например, создание миниатюры на диске), то вам нужно синхронизировать рабочий процесс с Mutex
.
Еще одно примечание. Его звуки, что когда вы делаете более рабочий процесс, тогда у вас могут быть более плавные асинхронные загрузки страниц. Существует небольшая проблема с обработчиком сеанса asp.net, который блокирует весь процесс загрузки страницы - это хорошо и не очень хорошо зависит от того, знаете ли вы его и обрабатываете - или измените его.
Итак, позвольте говорить об одном сайте только со многими рабочими процессами. Здесь вы сталкиваетесь с проблемой, связанной с синхронизацией общего изменения ресурса с помощью Mutex
. Но страницы/обработчики, которые используют сеанс, не асинхронны, потому что сеанс блокирует их. Это полезно для начала, потому что вы избегаете сделать эту синхронизацию многих точек самостоятельно.
Некоторые вопросы по этой теме:
Веб-приложение заблокировано при обработке другого веб-приложения при совместном использовании того же сеанса
jQuery Ajax вызовы для веб-службы кажутся синхронными
ASP.NET Server не обрабатывает страницы асинхронно
Замена сеанса ASP.Net целиком
Теперь эта блокировка сеанса не влияет на разные сайты.
Среди разных сайтов более обработанный процесс может помочь не одному блоку сайта, а другому при длительном запуске.
Кроме того, в разных сайтах большее количество пулов также может помочь, поскольку каждый пул имеет по крайней мере один обработанный процесс, но помните и видите сами, используя проводник процессов, каждый рабочий процесс занимает больше памяти вашего компьютера и один большой сервер с 16 Гб памяти и один SQL-сервер не может иметь слишком много разных обработанных процессов - например, на сервере с 100 общедоступными сайтами, у вас не может быть 100 различных пулов.