Как ASP.NET анализирует страницы? - PullRequest
2 голосов
/ 12 июня 2009

Я ищу статью, которая подробно расскажет о том, как работает ASP.NET и как он отображает элементы управления из разметки XML. Например, под капотом как ASP.NET берет следующую разметку и дает ли она результаты, которые мы видим?

<asp:Label ID="MyLabel"><%= myObject.Text%></asp:Label>

Кто-нибудь знает какую-либо статью, которая углубится во внутреннюю работу ASP.NET?

Ответы [ 4 ]

6 голосов
/ 12 июня 2009

Что происходит «под капотом», так это то, что каждая страница ASP.NET компилируется в класс .NET, как и любой другой. Элементы управления (ASCX) компилируются одинаково. Существует компилятор для разметки ASP.NET так же, как есть компилятор для c # и VB.NET - вы можете думать о разметке ASP.NET как о «еще одном» языке, который компилируется в нативный MSIL.

Собственная разметка ASP.NET обрабатывается PageParser . Вы можете заметить, что у этого класса есть один интересный и очень полезный метод - GetCompiledPageInstance . Как и подразумевается, он компилирует страницу в собственный класс .NET. Это может быть переопределено (например, вы можете создать собственную разметку и написать свой собственный анализатор / компилятор). Spark - популярная альтернатива разметке ASP.NET.

Каждый класс в конечном счете наследуется от Page или Control . Оба этих класса имеют методы Render (), которые в конце выполнения классом своих пользовательских функций записывают HTML в выходной поток.

Большая разница в том, что компиляция часто происходит в разное время, чем код на c # или VB.NET. Это не столько техническое требование, сколько функция, позволяющая отделить язык представления .NET от функционального языка .NET. Страницы ASPX и ASCX компилируются средой выполнения ASP.NET, когда они запрашиваются в контексте веб-сервера. Затем скомпилированные сборки сохраняются в памяти до тех пор, пока а) веб-приложение не закроется или б) не будет обнаружено изменение файловой системы в одном из файлов ASPX, что приведет к перекомпиляции.

Можно скомпилировать ваши страницы ASPX вместе с вашим c # / VB.NET / чем угодно, так что вы можете развернуть все приложение как одну сборку. Это имеет два преимущества - первое - очевидная простота развертывания одной DLL. Во-вторых, он устраняет время ожидания LOOOONG , которое так часто сопровождает «первое попадание» в веб-приложение ASP.NET. Поскольку все страницы предварительно скомпилированы, сборка просто должна быть загружена в память по первому запросу, а не компилировать каждый файл.

2 голосов
/ 12 июня 2009

Отражатель -> Развернуть System.Web.UI -> Класс PageParser -> Декомпилировать -> Наслаждаться

(Извините, я не пытался быть язвительным; это единственный способ, которым я смог понять это сам)

0 голосов
/ 12 июня 2009

Мне всегда нравится этот сайт ...

http://www.4guysfromrolla.com/articles/050504-1.aspx (обзор)

http://www.4guysfromrolla.com/articles/011404-1.aspx (более подробно)

0 голосов
/ 12 июня 2009

Мне нужно LMBTFY (Позвольте мне Bing, что для вас). ; P

Во всяком случае, вот несколько страниц:

Компиляция и развертывание в ASP.NET 2.0
Внутри модели компиляции кода ASP.NET 2.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...