Скачать презентацию Из цикла лекций Технологии разработки Internet-приложений для студентов Скачать презентацию Из цикла лекций Технологии разработки Internet-приложений для студентов

010de2238e6d29734edad9f21ba93597.ppt

  • Количество слайдов: 9

Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4 -го курса кафедры Компьютерных технологий Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4 -го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета Технологии разработки Internetприложений ASP. NET приложения – компиляция проф. В. К. Толстых, www. tolstykh. com

Модель компиляции ASP. NET Напомним, что, ASP. NET в отличие от ASP производит компиляцию, Модель компиляции ASP. NET Напомним, что, ASP. NET в отличие от ASP производит компиляцию, а не интерпретацию, . aspx страниц. q Сервер IIS: при запросе файла. aspx драйвер http. sys сначала проверяет наличие готового ответа в кэше. Если такового нет, то IIS загружает рабочий процесс (w 3 wp. exe) в соответствующем пуле приложений, запускает необходимые модули IIS (авторизация…) для предварительной обработки запроса. Далее запрос передаётся пользовательскому обработчику, т. е. запрошенной странице. aspx. q Среда ASP. NET: определяет, требуется ли компиляция страницы (нет сохраненной сборки. dll или страница была изменена). При необходимости начинается компиляция страницы или всего веб-приложения с языка С# на язык CIL (Common Intermediate Language – высокоуровневый ассемблер). Все компиляторы, поддерживающие платформу. NET, должны транслировать код с языков высокого уровня ( C#, Managed C++, Visual Basic . NET, Visual J#. NET) на язык CIL. При этом осуществляется разбор (parsing) aspx-страницы с генерацией исходного CIL-кода (создание серверных элементов управления, построение дерева элементов, отметка контроля модификации файла).

… парсинг В результате парсинга нашей страницы мы получаем конкретные экземпляры класса Page на … парсинг В результате парсинга нашей страницы мы получаем конкретные экземпляры класса Page на языке CIL. Каждому серверному элементу управления из файла. aspx ставится в соответствие свой CIL-экземпляр. NET Framework. Например, элемент преобразуется в экземпляр класса. NET Framework: @__ctrl = new global: : System. Web. UI. Web. Controls. Label(); После парсинга идёт непосредственно компиляция CIL-кода и сохранение каждой страницы или группы страниц в виде сборки (assembly) – динамической библиотеки. dll. Все файлы сборок можно найти в директории «C: WINDOWSMicrosoft. NETFrameworkвесрия Temporary ASP. NET Filesимя_приложения. . . » соответствующей версии. NET. Заметим, что при желании полученные библиотеки можно декомпилировать утилитой ildasm. exe.

… компиляция Далее загружается среда CLR (Common Language Runtime) платформы. NET Framework и активизируется … компиляция Далее загружается среда CLR (Common Language Runtime) платформы. NET Framework и активизируется конвейер HTTP, которому и передаются все созданные и возможно заранее предкомпилированные сборки, находящиеся в папке bin. Сборки, в свою очередь, перед фактическим исполнением компилируется в реальном времени – на лету (JIT-компиляция) в нативный код – машинный код в виде команд конкретной вычислительной машины, которая выполняется непосредственно процессором. Здесь осуществляется рендеринг кодов сборок, который в конечном итоге приводит к созданию HTML-ответа. После JIT-компиляции исполняемый машинный код может кэшироваться и последующие обращения к нему происходят напрямую, не затрагивая конвейер HTTP, – естественно, очень быстро. Если запуск приложения был с отладкой (в web. config есть строка ), то открывается браузер для просмотра результатов работы. Если исходный код страницы. aspx изменяется, то при её первом запросе она заново компилируется. Если страница уже была ранее скомпилирована, т. е. для неё есть соответствующая сборка. dll, то данная сборка используется в качестве обработчика запрошенной страницы или же, если страница ранее была кэширована, то клиенту отправляется копия кэш-страницы, не затрагивая весь механизм ASP. NET-среды. Таким образом имеются две области, в которых происходят задержки при обращении к. aspx странице: § § Динамическая компиляция в сборки. dll, JIT-компиляция сборок.

Пакетная компиляция ASP. NET осуществляет пакетную компиляцию (если не включён режим отладки), т. е. Пакетная компиляция ASP. NET осуществляет пакетную компиляцию (если не включён режим отладки), т. е. создаёт набор (пакет) сборок приложения. В простейшем случае – это один пакет из одной сборки. Компилятор пытается минимизировать количество сборок, не превышая при этом, максимальный размер каждой сборки. Обычно, каждая папка с файлами. aspx, . ascx, и всегда папка App_Code, компилируются в одну отдельную сборку. Пакетной компиляцией можно управлять из web. config при , например: При запросе любой страницы из каталога с batch=”true”, ASP. NET компилирует все страницы каталога и создаёт одну сборку. Т. е. вместо множества небольших dll ( – одна dll для одной страницы) получится одна большая dll для всех страниц в этом каталоге. Замечания. - Большое количество. dll-файлов может снижать производительность Windows. - Классы, включенные в. dll-сборки, не удаляются сборщиком мусора GC среды CLR из памяти работающего приложения (удаляются при освобождении всего App. Domain – домена приложения). - Страницы, не используемые всем приложением, лучше не компилировать в сборки, что можно сделать при помощи директивы @Page Compilation. Mode = ”Never”. Такие страницы (. aspx, . ascx) не должны содержать отдельного кода или включать серверный тег