На каком шаблоне основаны веб-формы ASP.NET и MVC? PageController, FrontController? - PullRequest
3 голосов
/ 07 октября 2010

Я пытаюсь понять ASP.NET WebForms и MVC с точки зрения понимания используемых шаблонов проектирования. Хотя MVC явно выглядит как реализация FrontController, я не очень уверен насчет страниц WebForms. Поэтому я был бы признателен, если бы кто-нибудь мог помочь со следующими вопросами по этому поводу.

  1. Основаны ли WebForms на шаблоне PageController?

  2. Являются ли Front Controller и Page Controller модифицированными версиями MVC?

  3. Можно ли также назвать WebForms частным случаем MVC, когда различие между контроллером и представлением размыто?

Наконец, есть ли в Интернете хорошие ресурсы, которые могут предоставить подробную справку по этой теме?

Ответы [ 3 ]

4 голосов
/ 07 октября 2010

ASP.NET MVC основан на шаблоне проектирования Front Controller. Классические ASP.NET WebForms основаны на усилиях Microsoft по внедрению модели событий Windows Forms в сеть путем скрытия и абстрагирования многих частей, и вы можете применить шаблон page controller , но он готов из коробки нет.

2 голосов
/ 07 октября 2010

По порядку ваших вопросов:

1 // Нет. Веб-формы основаны на шаблоне «Smart UI», т.е. вы управляете приложением, создавая обработчики событий. У Smart UI есть свои проблемы, но когда он полностью основан на десктопе, он работает нормально, в том смысле, что для его работы в инфраструктуру не вводится никакой «фантастики». Однако в Интернете, который работает через HTTP без сохранения состояния, вводится основная вымысел, в основном в виде ViewState, который хранит состояние всех элементов управления, когда страница была отправлена ​​в браузер клиента. В результате веб-формы привносят в ваши приложения уровень сложности, который предназначен только для поддержки этой меры. MVC устраняет эту фикцию.

Фантастика, по сути, гласит: мы будем делать вид, что между нами и клиентом нет HTTP.

2 // MVC удаляет беллетристику и дает вам голый HTTP. Однако он больше основан на Front Controller, чем на шаблоне Page Controller, поскольку шаблон Page Controller делает тестирование контроллера независимо от запросов Http сложным, тогда как MVC специально разработан для того, чтобы сделать контроллер тестируемым независимо от HTTP-запросов. Другими словами, MVC предназначен для обеспечения модульного тестирования на контроллерах, а не интеграционного тестирования.

MVC фокусируется на отделении Модели от Представления, тогда как Webforms / Smart UI не делает этого различия.

Полагаю, что для исключения Page Controller из ASP.NET MVC вы могли бы сказать, что ASP.NET рефакторирует влияние HTTP на контроллеры на «ортогональные атрибуты», что не заставляет меня думать, что Шаблон Контроллера страниц работает. Однако, не цитируйте меня по этому поводу, я изучаю эти вещи, а не эксперт.

3 // Нет, определенно НЕТ! Как обсуждалось выше, веб-формы являются вымышленным интеллектуальным интерфейсом, а не MVC в любой форме или форме. Вы можете пройти через несколько обручей, чтобы сделать их чем-то вроде MVC (а-ля Dino Esposito), но это опять-таки фикция. Зачем заниматься фантастикой, если у вас есть ASP.NET MVC?

Финальная сторона. Причиной, по которой я переключился с веб-форм на mvc, был Wizard Server Control. Его «Модель событий» - это жестокая вещь, которая бросает вызов всему, что мне нужно для достижения (не говоря уже о удушающем распространении других свойств, методов ... Тьфу!).

За 10 дней я написал базовый WizardController, и теперь мои волшебники - это вещи красоты, элегантности и простоты. Я радостно отбросил 3 месяца работы над мастерами в веб-формах, чтобы преобразовать их в мою новую мини-мастерскую среду. Это очень плохо.

0 голосов
/ 07 октября 2010

Что касается ссылок на эту тему, я бы порекомендовал и книгу " Microsoft .NET: Разработка приложений для предприятия " Дино Эспозито и Андреа Сальтарелло, а также презентацию ASP.NET Дино * .Узоры статья.

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