Цикл компиляции многомодульных страниц
Цикл компиляции многомодульных страниц
Процесс компиляции страницы, построенной по модели с внешним кодом поддержки, подобен процессу компиляции одномодульной страницы. Однако получающийся при этом тип, производный от System.Web.UI.Page, компонуется из трех файлов (да, именно из трех, а не из ожидаемых двух).
Взглянув на предыдущий пример CodeBehindPageModel, вспомните о том, что файл Default.aspx связывается с парциальным классом _Default, размещенным в файле внешнего кода поддержки. Если вы имеете опыт работы с ASP.NET 1.x, то можете спросить, что же при этом происходит с описаниями членов-переменных для различных Web-элементов управления и с программным кодом в пределах InitializeComponent(), в частности с программной логикой обработки событий. В ASP.NET 2.0 все это собирается в третьем "файле", генерируемом в памяти. Фактически это не совсем файл, а представление парциального класса в памяти (рис. 23.17).
В рамках этой модели объявленные в файле *.aspx Web-элементы управления используются для построения дополнительного парциального класса, определяющего все члены-переменные интерфейса пользователя и программную логику конфигурации, которые в ASP.NET 1.x обычно находились в пределах метода InitializeComponent(), а в данном случае остаются для нас невидимыми. Этот парциальный класс в процессе компиляции объединяется с файлом внешнего кода поддержки, чтобы в результате получился базовый класс генерируемого типа класса _aspx (в модели компиляции одномодульной страницы генерируемый файл _aspx получается непосредственно из System.Web.UI.Page).
В любом случае после создания компоновочного блока в ответ на исходный HTTP-запрос этот компоновочный блок будет использоваться многократно для всех последующих запросов, не требуя перекомпиляции. Вот почему первый запрос страницы *.aspx может занимать много времени, а последующие обращения к той же страницы оказываются намного быстрее.

Рис. 23.17. Модель компиляции многомодульных страниц
Замечание. В ASP.NET 2.0 теперь можно выполнить предкомпиляцию всех (или некоторого подмножества) страниц Web-узла с помощью специального инструмента командной строки aspnet_compiler.exe. Более конкретная информация по этому вопросу имеется в документации .NET Framework 2.0 SDK.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Последовательности страниц и нумерация страниц
Последовательности страниц и нумерация страниц Пока я использовал один и тот же шаблон страницы для всех страниц в рассмотренных нами документах XSL-FO. Если содержимое документа занимает более одной страницы, процессор XSL-FO использует тот же шаблон страницы для всех
3.8.1. Подготовка к компиляции
3.8.1. Подготовка к компиляции Прежде чем выполнять какие-то действия по обновлению ядра, нужно подготовиться к самому худшему, а именно — к краху системы. Да, неправильные действия в самом деле могут нарушить работу или сделать невозможной загрузку системы. Ядро — это
Проблемы, возникающие при компиляции ядра
Проблемы, возникающие при компиляции ядра Если вы корректно установили опции, компиляция ядра, как правило, проходит без проблем, но в некоторых случаях возникают ошибки. Проблемы, встречающиеся при компиляции ядра, описаны ниже.• Ошибки в исходном коде или
17.4. О компиляции нового ядра
17.4. О компиляции нового ядра 17.4.1 Зачем вообще нужно компилировать ядро? Как было сказано в начале данного раздела, основная функция ядра состоит в том, чтобы обеспечить взаимодействие с аппаратурой компьютера. Обслуживание некоторых составляющих аппаратного
Ошибки depmod во время компиляции
Ошибки depmod во время компиляции Если во время компиляции возникают ошибки depmod, вероятнее всего, отсутствует символическая ссылка на исходные файлы ядра Linux. Если исходные файлы используемого ядра Linux не установлены, необходимо скачать их в Интернете c сайта http://kernel.org,
2.2.1. Цикл типа “пока” (цикл с предусловием)
2.2.1. Цикл типа “пока” (цикл с предусловием) Пример 1.4: Нахождение наибольшего общего делителя двух целых положительных чисел с помощью известного алгоритма Евклида.Пока X ? Y делать если X> Y то X:=X-Y иначе Y:=Y-X; Писать (‘НОД=’, X);WHILE X <> Y DO IF X> Y THEN X:=X-Y ELSE Y:=Y-X; WRITE
2.2.2. Цикл типа “до” (цикл с постусловием)
2.2.2. Цикл типа “до” (цикл с постусловием) Этот цикл выполняется не менее одного разаПример 1.5: Решение предыдущей задачи. Цикл с постусловиемПовторять если X> Y то X:=X-Y иначе Y:=Y-X до X=Y;Писать (‘НОД=’, X);REPEAT IF X> Y THEN X:=X-Y ELSE Y:=Y-X UNTIL X=Y;WRITE (‘НОД=’, X);REPEAT –
2.2.1. Цикл типа “пока” (цикл с предусловием)
2.2.1. Цикл типа “пока” (цикл с предусловием) Пример 2.4: Программа находит наибольший общий делитель двух целых чисел.#include <assert. h>#include <stdio. h>int main (){int x, y;printf (“Введите два целых числа через пробел ”);int r = scanf (”%d%d”, &x, &y);assert (r == 2);while (x!= y) if (x> y) x = x – y; else y =
Создание и использование многомодульных компоновочных блоков
Создание и использование многомодульных компоновочных блоков Теперь, когда вы научились строить и использовать одномодульные компоновочные блоки, рассмотрим процесс создания многомодульных компоновочных блоков, Напомним, что многомодульный компоновочный блок – это
Цикл компиляции страницы ASP.NET 2.0
Цикл компиляции страницы ASP.NET 2.0 Независимо от того, какую модель страницы вы использовали (одномодульную страницу или страницу с внешним кодом поддержки), ваши файлы *.aspx (как и любые связанные файлы с кодом поддержки) динамически компилируются в действительный
Цикл компиляции одномодульных страниц
Цикл компиляции одномодульных страниц При использовании модели одномодульной страницы, HTML-разметка, блоки ‹script› и определения Web-элементов управления динамически компилируются в тип класса, производный от System.Web.UI.Page.Имя этого класса получается из имени файла *.aspx с
10.5. Модели компиляции шаблонов А
10.5. Модели компиляции шаблонов А Шаблон функции задает алгоритм для построения определений множества экземпляров функций. Сам шаблон не определяет никакой функции. Например, когда компилятор видит шаблон:template typename TypeType min( Type t1, Type t2 ){return t1 t2 ? t1 : t2;}он сохраняет
10.5.1. Модель компиляции с включением
10.5.1. Модель компиляции с включением Согласно этой модели мы включаем определение шаблона в каждый файл, где этот шаблон конкретизируется. Обычно оно помещается в заголовочный файл, как и для встроенных функций. Именно такой моделью мы пользуемся в нашей книге.
10.5.2. Модель компиляции с разделением
10.5.2. Модель компиляции с разделением Согласно этой модели объявления шаблонов функций помещаются в заголовочный файл, а определения – в файл с исходным текстом программы, т.е. объявления и определения шаблонов организованы так же, как в случае с невстроенными (non-inline)
16.8.1. Модель компиляции с включением
16.8.1. Модель компиляции с включением В этой модели мы включаем определения функций-членов и статических членов шаблонов классов в каждый файл, где они конкретизируются. Для встроенных функций-членов, определенных в теле шаблона, это происходит автоматически. В противном
16.8.2. Модель компиляции с разделением
16.8.2. Модель компиляции с разделением В этой модели определение шаблона класса и определения встроенных функций-членов помещаются в заголовочный файл, а определения невстроенных функций-членов и статических данных-членов - в файл с исходным текстом программы. Иными