Как решить, что правильно, WebForms или MVC при работе с ASP.NET - PullRequest
17 голосов
/ 30 ноября 2008

Итак, я собираюсь начать небольшой проект для моего спортивного клуба для регистрации членов и пытаюсь сделать выбор между WebForms или MVC.

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

Но на самом деле я не очень разбираюсь в MVC, я не знаю, будет ли это неправильно.

Так, что является хорошим способом решить, является ли WebForms или MVC правильным выбором?

Ответы [ 6 ]

12 голосов
/ 30 ноября 2008

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

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

5 голосов
/ 30 ноября 2008

Мне действительно очень нравится методология WebControls. Многие люди говорят, что «при выполнении MVC легче проводить модульное тестирование». Прежде всего, вы должны в любом случае, какой тип методологии вы используете, иметь четкое разделение Business Logic и вашего уровня пользовательского интерфейса. Если вы сделаете это, то сможете провести модульное тестирование своей бизнес-логики независимо от используемой методологии. Конечно, это может быть проще и "выйти из коробки" с MVC, но это не какая-то волшебная серебряная пуля, которая является единственной дорогой, которая ведет в Рим ...

Во-вторых, вы можете использовать WatiN , что делает ваше приложение тестируемым способами, которые намного превосходят обычное модульное тестирование. (обратите внимание, я не имею в виду, что он должен заменить юнит-тестирование, но в дополнение к юнит-тестированию он выводит вас на уровень безопасности, ранее недоступный)

В-третьих, сеть не имеет статуса. Это связано с тем, что HTTP является протоколом без сохранения состояния. Это именно то, что делает Интернет красивым, но в то же время очень трудно разрабатывать приложений * для 1008 *. Методология WebControls в основном исправляет это, имея такие понятия, как ViewState. Это отнимает много хлопот при разработке приложений. Взгляните на этот пример Ajax Calendar , который в большинстве случаев невозможно достичь с таким же ( small ) количеством кода в любой другой парадигме, чем WebControls (заявление об отказе от ответственности; я работаю с Ra-Ajax я)

Теперь взгляните на Stacked (Disclaimer; ... который я также работаю с BTW), затем поймите, что я потратил менее 3 дней на то, что вы там видите. Может быть, кто-то может достичь этого достижения с MVC, но я сомневаюсь в этом ...

Я думаю, что парадигма WebControl очень красивая. Конечно, у него есть недостатки по некоторым пунктам, но угадайте, что, как и все . Единственная «Серебряная пуля», которая существует в программировании как форма искусства, - это то, что не существует никакой Серебряной пули.

Когда это произойдет, я знаю, что Grurrah использует MVC-слой Castle Project в добавлении к библиотеке Ajax на основе WebControl. Поэтому смешивать WebControls и MVC может быть сложно, но, конечно, не невозможно ...

Я думаю, что MVC получил много "заслуженного" обмана, но, к сожалению, и в этом процессе много незаслуженно обмана тоже ...! (

Примите собственное решение, не слушайте евангелистов MVC, пытающихся убедить вас в том, что они нашли «Серебряную пулю» для программирования для Интернета. И вот еще, мне тоже не верят ! У меня тоже есть повестка дня (получить усыновление Ра-Аяксу)

Решите свой разум. Спрашивать кого-то, стоит ли вам делать MVC, это все равно, что спрашивать, есть ли я яблоки или апельсины ... Единственный хороший ответ, который вы когда-либо получите, это; "Это зависит" ...

1 голос
/ 01 декабря 2008

Webforms - это абстракция сети для людей, которые приходят из мира графического интерфейса. Я нахожу, что у этого есть много преимуществ, особенно в смысле RAD, но при написании больших накачанных приложений вы часто заканчиваете рисовать себя в углу, из которого очень трудно выбраться (то есть: все, что связано с viewstate.)

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

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

Недостатком является то, что вы можете попрощаться с RAD, и вам действительно нужно иметь приличное знание css / javascript, чтобы создавать хорошо выглядящие страницы.

Это действительно сводится к лучшему инструменту для работы и типу опыта / знаний, которыми вы / ваша команда обладаете.

1 голос
/ 30 ноября 2008

Нам была предоставлена ​​такая же возможность. Поработав с MVC в течение нескольких недель, мы обнаружили, что есть вещи, которые мы не полностью понимаем, а также вещи, которые могут повлечь за собой некоторые изменения:

  • Реализация дизайна репозитория рисунок
  • Html Helpers против стандартных элементов управления веб-форм, таких как Repeaters и GridView
  • Кэширование
  • Использовать ли используемую в настоящее время среду, Csla, или попытаться перейти на просто Linq-To-Sql с частичными классами для хранения бизнес-логики
  • Сложные классы и пользовательские интерфейсы, которые включали классы мастер-детализации

Мы решили продолжить играть с ним и подождать, пока он не будет официально выпущен, а затем написать внутреннее приложение и посмотреть, куда он нас приведет.

1 голос
/ 30 ноября 2008

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

Кривая обучения невелика, если у вас есть предыдущий опыт работы с WebForms (что, я полагаю, у вас есть).

Если вам нужно сделать сайт очень быстрым, не заботьтесь о том, что это такое, и сайт будет маленьким, тогда переходите к WebForms. Это быстрое и неприятное решение (только для моего мнения). WebForms работают на 100% отлично. Все мои сайты были веб-формами, и они в порядке.

Резюме:

  • Есть время и хотите узнать лучший способ сделать сайты: MVC
  • Нет времени или все равно: WebForms.

gl и hth.

0 голосов
/ 30 ноября 2008

Исходя из ваших комментариев к tvanfosson, кажется, что MVC будет хорошим выбором для вас, поскольку вы указали свое желание учиться в качестве причины для выбора этой технологии. Я сомневаюсь, что MVC изменит бета-версию радикально . Таким образом, это может быть хорошей возможностью изучить новый инструмент. Что касается того, что WebForms являются «быстрыми и неприятными» решениями, я беспокоюсь, что это пропаганда MVC.

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