1 / 8

Технологии разработки Internet -приложений

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

yetta-chan
Download Presentation

Технологии разработки Internet -приложений

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Модель компиляции ASP.NET Напомним, что, ASP.NET в отличие от ASP производит компиляцию (а не интерпретацию) .aspxстраниц. При запросе файла .aspxIISсначала проверяет наличие готового ответа в кэше. Если такового нет, то IIS загружает рабочий процесс(w3wp.exe) в соответствующем пуле приложений, запускает необходимые модули ( IIS 7 – авторизация…) для предварительной обработки запроса. Далее запрос передаётся обработчику, т.е. запрошенной странице .aspx. Среда ASP.NET определяет, требуется ли компиляция страницы (нет сохраненной сборки или страница была изменена). При необходимости начинается компиляция страницы или всего веб-приложения с языка С# на язык IL (Intermediate Language). Осуществляется разбор (parsing) страницы с генерацией исходного кода (создание серверных элементов управления, построение дерева элементов, отметка контроля модификации файла) и непосредственно компиляция и сохранение каждой страницы или группы страниц в виде сборки (assembly) – динамической библиотеки .dll. Мы получаем конкретные экземпляры класса Page компилируемых страниц. Каждому серверному элементу управления из файла .aspx ставится в соответствие свой экземпляр .NET Framework. Например, элемент <asp:Label ID="Label1" runat="server"></asp:Label> преобразуется в экземпляр класса .NET Framework: @__ctrl = new global::System.Web.UI.WebControls.Label(); Все файлы сборок можно найти в директории «C:\WINDOWS\Microsoft.NET\Framework\весрия\ Temporary ASP.NET Files\имя_приложения\...» соответствующей версии .NET. Заметим, что при желании полученные библиотеки можно декомпилировать утилитойildasm.exe.

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

  4. Пакетная компиляция ASP.NET осуществляет пакетную компиляцию (если не включён режим отладки), т .е. создаёт набор (пакет) сборок приложения. В простейшем случае – это один пакет из одной сборки. Компилятор пытается минимизировать количество сборок, не превышая при этом, максимальный размер каждой сборки. Обычно, каждая папка с файлами .aspx, .ascx, и всегда папка App_Code, компилируются в одну отдельную сборку. Пакетной компиляцией можно управлять из web.config при <compilation debug=”false” />, например: <compilation batch=”true”– по умолчаниюmaxBatchFileSize=”макс. кол-во страниц в одном пакете” maxBatchGeneratedSize=”макс. размер файла сборки в КБ”> При запросе любой страницы из каталога с batch=”true”, ASP.NET компилирует все страницы каталога и создаёт одну сборку. Т.е. вместо множества небольших dll ( – одна dll для одной страницы) получится одна большая dll для всех страниц в этом каталоге. • Замечания. • Большое количество .dll-файлов может снижать производительность Windows. • Классы, включенные в .dll-сборки, не удаляются сборщиком мусора из памяти работающего приложения (удаляются при освобождении всего AppDomain – домена приложения). • Страницы, не используемые всем приложением, лучше не компилировать в сборки, что можно сделать при помощи директивы @Page CompilationMode = ”Never”. Такие страницы (.aspx, .ascx) не должны содержать отдельного кода или включать серверный тег <script>. Они предназначены для масштабируемости больших приложений без их перезапуска и перекомпиляции.

  5. Предкомпиляцияпроекта • Заранее компилируемые .dll-сборки предоставляют следующие преимущества: • Сайт быстрее работает при первом запуске, • Исходные коды классов (файлы .cs ) можно скрыть от «посторонних» глаз. • Предкомпиляцию на рабочем сервере можно сделать утилитой aspnet_compiler(из соответствующей версии Framework) с колючем –vи двумя параметрами: виртуальный каталог исходного приложения; физический каталог нового места расположения. Например, для приложения «Калькулятор» (файл /ASPNET/Work/Calculate/Default.aspx на Web-сервере) предкомпиляция может иметь вид: • C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe –v/ASPNET/Work/CalculateC:\Inetpub\wwwroot\newCalculate • Файлы изображений, web.config, html не компилируются – они просто копируются по целевому пути. Если полученный предкомпилированные ресурс будет самостоятельным приложением, то новую папку newCalculateнеобходимо преобразовать в виртуальный каталог IIS. Теперь сайт «Калькулятор» будет сразу (быстро) выполняться при запросе браузера по адресу: • http://сервер/newCalculate • Здесь подразумевается, что файл Default.aspx в каталогах сервера загружаются по умолчанию.

  6. Предкомпиляциясборок в Visual Studio Файлы классов .cs в папке App_Code веб-проекта целесообразно заранее компилировать в пакеты .dllсборок. Добавляем проект Library (в том же Solution), перемещаем в него необходимые файлы классов .cs, добавляем необходимые ссылки (System.Web…), компилируем библиотеку (Build Library)

  7. Добавление предкомпилированых сборок в проект Visual Studio Если исходный проект (в примере – people), не содержал папку Bin предкомпилированных сборок, то создаём в нём Bin и копируем в неё полученный файл сборки Library.dll. Не забудьте удалить из проекта исходные файлы классов .cs сборки Library.

  8. Предкомпиляция страниц и пользовательских элементов управления в Visual Studio Пользовательские элементы управления и отдельные страницы так же можно заранее компилировать в самостоятельные сборки, если они не существенно зависят от настроек web.confg. Создайте проект ASP.NET Web-Application без Global.asax, компилируйте и опубликуйте его в новом сайте. Там вы найдёте необходимые сборки. После публикации приложения вы получите сайт с файлами только визуальной разметки – .aspx без исходных кодов .sс классов этих страниц и компонент. Сопутствующие классы будут представлены .dll-сборками в папке bin. Файл сборок страниц проекта будет иметь имя проекта в котором вы компилировали исходные страницы, например, WebApplication.dll, а файл сборок пользовательских элементов управления – UserControls.dll. Отладочную информацию в виде .pdb-файлов (program database) в новом сайтеможно «выбросить».

More Related