ASP.NET Web Form Render Engine выводит дерево управления? Ищите информацию о логике рендеринга - PullRequest
3 голосов
/ 12 февраля 2011

Я смотрел видео о том, как Скотт Хансельмнн учит MVC 2 трюкам / советам.Он упоминает, как MVC 2 по умолчанию использует механизм представления ASP.NET Web Forms для визуализации вывода представлений;он упоминает, что механизм просмотра веб-форм работает немного медленнее, чем мог бы быть для MVC 2, поскольку он генерирует дерево элементов управления и затем выводит HTML-код на страницу (надеюсь, я правильно сказал).интересно, что он имел в виду под веб-формами, генерирующими дерево кода перед выводом HTML на страницу.Кто-нибудь имеет представление о движке представления веб-форм, и шаги процесса рендеринга работают для ASP.NET и MVC2?

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

ASP.Net WebForms были все построены вокруг идеи "подделки" постоянной модели с сохранением состояния вокруг природы HTTP без сохранения состояния.Идея заключалась в том, чтобы дать разработчикам WinForms знакомую среду для работы, т.е. Controls, Events, Etc ...

. Для этого разметка анализируется в коллекции объектов в памяти, которые затемссылка, аналогичная элементу управления в WinForms:

TextBox.Text = "I hate viewstate!";

Каждый элемент управления добавляется в коллекцию элементов управления, представляющих страницу, которую необходимо отправить клиенту.Когда приходит время для создания ответа, механизм просматривает набор элементов управления в дереве и просит каждый элемент управления Отрисовать себя в выходной поток.В результате вы получите HTTP-ответ.

В MVC это ненужный шаг, поскольку на эти элементы управления никогда не ссылаются.MVC охватывает веб-интерфейс без сохранения состояния и вместо этого отображает опубликованные переменные формы непосредственно в Модели для использования Действиями контроллера .

1 голос
/ 12 февраля 2011

В веб-формах HTML генерируется иерархией элементов управления, каждый из которых должен вызываться для визуализации своего HTML, и каждый из которых вносит свой вклад в ViewState страницы. Кроме того, многие события запускаются веб-формами (Init, PreRender и т. Д.) В течение их жизненного цикла, и каждый элемент управления в иерархии также запускает аналогичные события.

В MVC этот процесс теоретически может быть намного проще, поскольку у вас нет глубокой иерархии элементов управления, у вас нет ViewState и вам не нужно запускать события. Однако MVC «вклинивается» в среду ASP.NET, и поэтому за кулисами все еще есть много веб-форм, хотя это и не нужно.

...