Я намагаюся вимовити їх іншими словами.
На сервері ви можете мати багато сайтів asp.net, які працюють разом. Кожен сайт - це домен програми .
Ви повинні призначити кожному з них по одному пулу програм . Багато доменів додатків (сайтів) можуть мати один і той же пул додатків, і оскільки вони мають однаковий пул додатків, вони запускаються під однаковими процесами та під одним обліковим записом - і вони мають однакові налаштування пулу. Якщо цей пул перезапуститься, тоді всі сайти під цим пулом перезапуститься.
Тепер кожен пул може мати один або кілька робочих процесів . Кожен робочий процес - це інша програма, яка запускає ваш сайт, має окремі статичні змінні, вони різні запускають зупинку викликів тощо. Різні робочі процеси не спілкуються разом, і єдиний спосіб обміну даними - із загальних файлів або загальної бази даних. Якщо у вас є більше одного робочого процесу, і один з них робить тривалі розрахунки, то інший може подбати про обробку Інтернет-дзвінків та показ вмісту.
Коли ви призначаєте багато робочих процесів одному пулу, тоді ви створюєте веб-сад, що викликається, і ваш сайт схожий на те, щоб запускати його з кількох комп’ютерів, якщо комп’ютер є однією обробною машиною.
Кожен робочий процес може мати безліч потоків.
Як більший робочий процес впливає на вас:
коли у вас один робочий процес, все простіше, серед вашого додатка всі статичні змінні однакові, і ви використовуєте lock
для їх синхронізації.
Коли ви призначаєте більше одного робочого процесу, ви все ще продовжуєте використовувати lock
для статичних змінних, статичні змінні не відрізняються серед багатьох запусків вашого сайту, і якщо у вас є якийсь спільний ресурс (наприклад, створення ескізу на диску) тоді вам потрібно синхронізувати робочий процес з Mutex
.
Ще одна примітка. Звучить, що коли ви робите більше робочого процесу, у вас може бути більш плавне завантаження асинхронних сторінок. Існує невелика проблема з обробником сеансу asp.net, який блокує весь процес для завантаження сторінки - це добре і погано залежить, якщо ви це знаєте та обробляєте - або змініть.
Тож давайте поговоримо про один сайт лише з багатьма робочими процесами. Тут ви стикаєтесь із проблемою, з якою вам потрібно синхронізувати вашу загальну зміну ресурсу Mutex
. Але сторінки / обробники, які використовують сеанс, вони не є асинхронними, оскільки сеанс блокує їх. Це добре для початку, оскільки ви уникаєте зробити цю синхронізацію багатьох точок самою собою.
Деякі питання на цю тему:
Веб-програма заблокована під час обробки іншої веб-програми під час спільного використання тієї самої сесії
Виклики jQuery Ajax до веб-служби видаються синхронними
ASP.NET Server не обробляє сторінки асинхронно
Заміна сеансу ASP.Net повністю
Тепер це блокування сеансу не впливає на різні сайти.
Серед різних веб-сайтів більш відпрацьований процес може допомогти не блокувати один веб-сайт іншим при тривалому процесі.
Крім того, серед різних сайтів може допомогти більше пулів, оскільки кожен пул має принаймні один відпрацьований процес, але пам’ятайте і переконайтеся самостійно, використовуючи провідник процесів, кожен робочий процес займає більше пам’яті вашого комп’ютера та один великий сервер з пам’яттю 16G і один SQL-сервер не може мати занадто багато різних відпрацьованих процесів - наприклад, на сервері зі 100 спільними сайтами, ви не можете мати 100 різних пулів.