Я не собираюсь охватывать территорию того, что такое веб-приложение, потому что это не ваш вопрос, поэтому в этом ответе я буду использовать термины веб-приложение или виртуальный каталог взаимозаменяемые. Если вы хотите узнать больше о том, что такое веб-приложение в IIS, то эта статья с официального сайта MS по IIS: Общие сведения о сайтах, приложениях и виртуальных каталогах в IIS 7 быть полезным. Хотя в названии написано IIS7, оно также углубляется в IIS6.
Какое веб-приложение мы запрашиваем
Проще говоря, в запрос, отправляемый на сервер, включен виртуальный каталог, или IIS уже будет настроен для сопоставления запроса с конкретным виртуальным каталогом. Если ваш запрошенный URL выглядит следующим образом:
http://someServer/myWebSite/default.aspx
тогда часть myWebSite этого URL является виртуальным каталогом, и IIS точно знает, как с этим справиться, потому что он сопоставлен непосредственно с папкой в файловой системе. Но, как я уже сказал, это всего лишь упрощенный подход, который вы, вероятно, используете для доступа к своим собственным веб-приложениям на своем компьютере разработчика или во внутренней сети вашей компании. Существует также другой способ найти виртуальный каталог по URL - с помощью host headers . Когда вы отправляете запрос на веб-сайт (на основе IIS) через Интернет, он, скорее всего, будет размещаться на одном веб-сервере с десятками или даже сотнями других веб-сайтов. В этом случае привязки заголовка хоста используются для сопоставления запроса с конкретным веб-сайтом / веб-приложением. Вы можете прочитать о работе заголовков узлов в этой статье: HOWTO: Основы обработки запросов IIS 6, часть 2. Веб-сайт, виртуальный каталог и веб-приложение .
Язык веб-приложений
Язык страницы указывается на самой странице (в файле aspx или ascx). Всякий раз, когда рабочие процессы пула приложений запускаются в первый раз или перерабатывают (перезапускают), веб-страницы перекомпилируются , язык, указанный на странице или элементе управления, используется в качестве руководства относительно того, какой компилятор использовать. Затем скомпилированный код хранится во временном хранилище до тех пор, пока не будут изменены файлы и не потребуется перекомпиляция или повторная переработка рабочих процессов.
Если он предварительно скомпилирован, то нет необходимости знать язык страницы, потому что он уже скомпилирован на промежуточный язык MSIL (Microsoft Intermediate Language или, точнее, CIL, Common Intermediate Language ), этот код затем JIT компилируется в собственный код перед выполнением. (JIT-компиляция: простое объяснение , вики-объяснение , чуть более хардкорное объяснение ).
Если веб-приложение было скомпилировано ngen, то оно уже на родном машинном языке и поэтому вообще не нуждается в компиляции.