2010-08-20 5 views
10

Я довольно новичок в программировании вообще (действительно началось только 2 1/2 года назад), и я пытаюсь решить, какой лучший способ - приблизиться к веб-приложению, которое я делаю в Работа. Старший разработчик на работе поощряет меня попасть в MVC и после хорошего 24 часа заливки блогами, исходного кода и других материалов по этому вопросу Я начинаю понимать, почему я хочу его использовать.MVC философия применяется к webforms

В то же время существующие приложения нашей компании написаны как WebForms, поэтому я не хочу делать что-то столь же радикальное, как использование реальной структуры ASP.NET MVC для создания моего приложения (было бы действительно ТАК, ?).

Что я действительно хотел бы знать, так это то, было бы практичным или даже возможным делать WebForms, но все же следует философии MVC по разделению проблем. Я действительно просто добавлю ненужный слой к уже сложной странице .aspx + codebehind?

Все в блогосфере, похоже, считают, что они ДОЛЖНЫ использовать какую-то структуру, если они хотят делать MVC. Что в WebForms не позволяет им просто делать это самостоятельно?

ответ

9

Если старший из вашей команды поощряет вас заглянуть в MVC для своего приложения, и вы считаете, что это хороший ход, идите за ним (если это приложение особенно автономно).

Вы также можете изучить шаблон MVVM. Это то, что многие сделали с WebForms, и он очень похож на шаблон MVC. Применяя шаблон MVVM к WebForms, вы показываете, как все еще можно использовать WebForms, но получить большую часть добра, которая находится в шаблоне MVC с ASP.Net MVC. Было бы неплохо показать другим разработчикам в команде, что можно сделать, чтобы WebForms больше SOC и тестировался без отказа от WebForms.

Вот еще несколько ссылок на MVVM:

http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx

http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/

MVVM также очень популярен в Silverlight приложениях ....

Существует также MVP модель, а также , Here's an open source implementation for WebForms. Эта конкретная реализация используется DotNetNuke 5.3.

A bit more explanation from MS on MVP and .Net

Либо один из них является отличным выбором, если вы хотите, чтобы получить больше контроля над вашим кодом, но все же имеют черты WebForms вам нравится и/или хотите продолжать иметь какой-либо причине, например, как то, что он звучит как в вашем случае много устаревшего кода, использующего его.

3

Да, каждая версия MVC еще более радикально отличается от веб-форм, чем предыдущая.

Если вы действительно не хотите использовать фактический MVC, ознакомьтесь с рисунком MVP (модель - вид - презентатор).

+1

Мы использовали MVP в предыдущей работе шахты, и она работала на самом деле хорошо отделяя пользовательский интерфейс от бизнес-уровня. Хорошая альтернатива MVC, если вы застряли в Webforms. – Martin

3

ИМХО, я думаю, вам нужно просто перейти к MVC.

Вот несколько причин, по которым я делаю переход:

  • Я хотел бы быть в состоянии контролировать свой вывод HTML. [Есть определенные веб-элементы управления, которые отображают разные теги на основе браузера.Кроме того, хорошо иметь контроль над идентификатором клиента.]
  • Мне нравится иметь возможность управлять состоянием моих приложений. [В отличие от того, что WebForms пытаются управлять им для меня, передавая большие фрагменты данных, чем это строго необходимо.]
  • Я предпочитаю работать в тестовом режиме, и я обнаружил, что могу получить лучшее тестовое покрытие с помощью MVC.
  • Я обнаружил, что библиотеки, подобные JQuery, отлично работают с MVC; Я обнаружил, что создание элементов интерфейса, которые были болью в WebForms, стало тривиальным в MVC.

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

+0

Согласитесь со всем, кроме первой точки. Я слышал, что веб-формы 4 лучше. – Necros

+0

Извините, но я должен не соглашаться ... WebControls, такие как панель управления, делают определенные предположения о том, что они должны выводить в различных условиях. [Например, если я правильно помню, они выводят DIV в IE и таблицу в Firefox ... это может измениться, поскольку я помню, как это работает с ASP.Net 1.1]. Кроме того, структура настаивает на контроле идентификаторов клиентской стороны для любые элементы runat = server. В зависимости от приложения, это могут быть не проблемы, и я могу просто выбирать, чем большинство из моего вывода HTML. –

+0

Вы пропустили самый важный момент с моей точки зрения.С MVC ваше состояние передается как данные, а не как состояние страницы/управления. Когда вы хотите получить пользовательский ввод, вам не нужно явно указывать, что вы хотите текстовое поле, флажок или выпадающий список и т. Д. Вы можете использовать соглашения компоновщика входных данных, чтобы управлять тем, что визуализируется для пользователя на основе вашей модели. Это позволяет отделить бизнес-данные/процесс от пользовательского интерфейса. – Ryan

0

Да, вы все еще можете использовать WebForms и применять философию MVC. По большей части Web Forms не мешает вам применять принципы MVC; это просто может привести вас к неправильному пути. Если вы все еще являетесь магазином WebForms, попробуйте применить некоторые из следующих вещей, которые находятся в «духе» MVC. Это поможет сделать переход от WebForms к MVC менее резким.

  • Использование маршрутизации. В WebForms вы можете сопоставить маршрутов .aspx Pages, а не контроллеров, чтобы получить красивые без расширения. Если вы используете .Net 3.5, вам понадобится обработчик пользовательского маршрута. В 4.0 маршрутизация - .

  • Избегайте использования обработчиков событий в вашем коде. В большинстве случаев Page_Load будет .

  • Избегайте использования элементов управления ViewState и Web, чтобы ваша разметка была чистой и тощей. Если у вас есть кнопка отправки в вашей разметке, напишите ее так: < input type="button", а не вот так: <asp:Button... Вы можете выставлять свойства и использовать foreach loop используя <%= %> так же, как вы видите в MVC, а не с помощью элементов управления Label и Repeater.

  • Используйте JQuery для настройки обработчиков событий, AJAX и обработки DOM на стороне клиента.

  • Примите концепцию ViewModel, связав объект ViewModel с вашими страницами .aspx.

  • Если вам нужно WebControls, используйте ClientIDMode = «статический» для управления над вашими идентификаторами в разметке (.Net 4.0)

Смежные вопросы