Пулы приложений IIS, рабочие процессы, домены приложений

Может ли кто-нибудь объяснить различия в IIS между пулами приложений, рабочими процессами и доменами приложений? Также, как они работают вместе? Я прочитал несколько статей, но это все еще немного запутывает.

  • Создается ли каждый веб-сайт, созданный в IIS, приложением?
  • Каждое приложение связано с одним рабочим процессом?
  • Где домены приложений попадают в картину?

Ответ 1

Я пытаюсь сказать их другими словами.

На сервере у вас может быть множество сайтов asp.net, которые работают вместе. Каждый сайт - это домен приложения.

Вы должны назначить каждому из них один пул приложений. Многие домены приложений (сайты) могут иметь один и тот же пул приложений и потому, что у них одинаковый пул приложений, они выполняются под теми же процессами и под одной учетной записью - и у них одинаковые настройки пула. Если этот пул перезапустится, все сайты под этими пулами перезагрузятся.

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

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

домены приложений, с пулами и процессами

Каждый рабочий процесс может иметь много потоков.

Чем больше влияет на вас рабочий процесс:
Когда у вас один рабочий процесс все проще, среди вашего приложения все статические переменные одинаковы, и вы используете lock, чтобы синхронизировать их.
Когда вы назначаете более одного рабочего процесса, вы по-прежнему продолжаете использовать статические переменные lock, статические переменные не различаются между многими прогонами вашего сайта и если у вас есть общий ресурс ( например, создание миниатюры на диске), то вам нужно синхронизировать рабочий процесс с Mutex.

Еще одно примечание. Его звуки, что когда вы делаете более рабочий процесс, тогда у вас могут быть более плавные асинхронные загрузки страниц. Существует небольшая проблема с обработчиком сеанса asp.net, который блокирует весь процесс загрузки страницы - это хорошо и не очень хорошо зависит от того, знаете ли вы его и обрабатываете - или измените его.

Итак, позвольте говорить об одном сайте только со многими рабочими процессами. Здесь вы сталкиваетесь с проблемой, связанной с синхронизацией общего изменения ресурса с помощью Mutex. Но страницы/обработчики, которые используют сеанс, не асинхронны, потому что сеанс блокирует их. Это полезно для начала, потому что вы избегаете сделать эту синхронизацию многих точек самостоятельно.

Некоторые вопросы по этой теме:
Веб-приложение заблокировано при обработке другого веб-приложения при совместном использовании того же сеанса
jQuery Ajax вызовы для веб-службы кажутся синхронными
ASP.NET Server не обрабатывает страницы асинхронно
Замена сеанса ASP.Net целиком

Теперь эта блокировка сеанса не влияет на разные сайты.

Среди разных сайтов более обработанный процесс может помочь не одному блоку сайта, а другому при длительном запуске.
Кроме того, в разных сайтах большее количество пулов также может помочь, поскольку каждый пул имеет по крайней мере один обработанный процесс, но помните и видите сами, используя проводник процессов, каждый рабочий процесс занимает больше памяти вашего компьютера и один большой сервер с 16 Гб памяти и один SQL-сервер не может иметь слишком много разных обработанных процессов - например, на сервере с 100 общедоступными сайтами, у вас не может быть 100 различных пулов.

Ответ 2

  • Один сервер IIS может иметь несколько пулов приложений.
  • Одно веб-приложение привязывается к одному пулу приложений.
  • В одном пуле приложений может быть более одного рабочего процесса (когда включен Web Garden).
  • Один рабочий процесс может иметь несколько доменов приложений. Один домен приложения живет только в одном рабочем процессе.
  • В одном домене приложения может быть несколько потоков. Один поток может совместно использоваться различными доменами приложений в разное время.

Значение для разработчиков ASP.NET: чтобы сделать ваш веб-сайт масштабируемым, не используйте сеанс in-proc и не используйте блокировку переменных static class для синхронизации.

Ответ 3

  • Да, хотя не каждое приложение является веб-сайтом. У вас может быть приложение, вложенное под веб-сайт.

  • Да, каждое приложение должно иметь один рабочий процесс (пул приложений), хотя один пул приложений может обслуживать несколько приложений. Одно веб-приложение может быть распространено (веб-сад/ферма), что означает, что он будет работать в нескольких процессах.

  • Каждый процесс будет запускаться в собственном домене приложения (каждый пул приложений является отдельным доменом приложения).


Из MSDN.

Создать веб-приложение:

Приложение представляет собой группировку содержимого на корневом уровне веб-сайта или группировку содержимого в отдельной папке в корневом каталоге веб-сайта.

Пулы приложений:

Пул приложений определяет группу из одного или нескольких рабочих процессов, настроенных с общими настройками, которые обслуживают запросы к одному или нескольким приложениям, которые назначены этому пулу приложений. Поскольку пулы приложений позволяют набору веб-приложений совместно использовать один или несколько одинаково сконфигурированных рабочих процессов, они обеспечивают удобный способ изолировать набор веб-приложений от других веб-приложений на сервере. Границы процесса разделяют каждый рабочий процесс; поэтому проблемы приложений в одном пуле приложений не влияют на веб-сайты или приложения в других пулах приложений. Пулы приложений значительно повышают надежность и управляемость вашей веб-инфраструктуры.

Ответ 4

Из ссылки источника: -http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

Приложение - это термин IIS, но тот, который использует ASP.NET. По существу он создает песочницу или набор границ для разделения различные сайты или части сайтов, от других.

AppDomain - это .NET-термин. (В IIS7 AppDomains играют большую роль в IIS, но по большей части это член ASP.NET)

Рабочий процесс используется для обработки запроса веб-приложения.