Ответ 1
Около 3 месяцев назад мне сказали, что мне нужно разработать корпоративное веб-приложение (ну, на самом деле, это серия небольших веб-приложений), но я мог выбрать любую технологию, которую я хотел.
Поскольку мне больше всего нравится VS/С#/. Net, дилемма заключалась в том, следует ли выбирать ASP.NET WebForms или ASP.NET MVC2. В отличие от вас, мой единственный фон был с Windows Forms (WinForms) и немного WPF. Поэтому мне пришлось исследовать (и попробовать) как WebForms, так и MVC.
Как и вы, я понял, что мое приложение не будет ни Google, ни Apple, но ваше стандартное сетевое приложение для болота с тысячами кнопок и ящиков и т.д. WebForms показалось, что он будет самым быстрым в развертывании, но трудно тестировать и трудно поддерживать на долгосрочной основе. MVC, похоже, имеет гораздо более крутую кривую обучения, но после того, как она была установлена, тестирование и техническое обслуживание были бы легкими.
Я пробовал только WebForms в течение недели, поэтому я не могу прокомментировать это. Но MVC определенно все, что я ожидал.
Да, это крутая кривая обучения. Понятия, которые были для меня новичком:
- Model-View-Controller (MVC)
- Разделение проблем (SoC)
- привязка к модели
- Тестирование устройств и тестирование (TDD)
- Издевательствование и обрезание
- Инъекция зависимостей (DI)
Книги, которые помогли мне больше всего:
- Pro ASP.NET MVC2 от Sanderson (MVC, привязка к модели, DI, TDD)
- Искусство модульного тестирования Osherove (TDD, Mocking, Stubbing, DI)
Мне также пришлось освежить мои HTML, CSS и Javascript.
В целом, похоже, в начале наблюдается значительное увеличение производительности, но сохранение и расширение существующего приложения было довольно безболезненным. Всякий раз, когда меня просили внести изменения, это было довольно легко, и я, как правило, мог своевременно доставлять или даже иногда досрочно.
В идеальном мире запись MVC-приложения произойдет с двумя людьми. Один человек пишет основной код и второй человек, который пишет пользовательский интерфейс и представления (HTML, CSS, Javascript.) Хотя это вполне возможно сделать самостоятельно. (вот что я делаю прямо сейчас...)
Однако я столкнулся с некоторыми зациклями, развертывающимися в Enterprise. Внутренне моя компания работает под управлением Windows Server 2003 и IIS6. К сожалению, мы не смогли заставить приложение правильно размещаться на IIS6 при использовании Virtual Pathing. (Все ссылки на файлы CSS и в них повреждены.) Если вы планируете развертывание MVC, я бы рекомендовал использовать IIS7 или выше. MVC предположительно работает на IIS6, но требует, чтобы ваш ИТ-отдел был готов выяснить, как заставить его работать.
Изменить: Я просто понял, что никогда не ответил на ваши вопросы напрямую. Здесь:
-
Мой личный опыт сказал, что да, кривая обучения крута для построения хороших моделей и пользовательских интерфейсов, но я не являюсь веб-разработчиком, поэтому я работал с этим препятствием. Хорошей новостью является то, что технология MVC довольно зрелая.
-
Да, сообщество довольно хорошо развито и растет. Вы получите много хороших ответов от StackOverflow, а также под-форума MS ASP.NET MVC.
-
У меня нет личного опыта программирования WebForms, но я кодировал множество приложений WinForms, и я чувствую, что это заняло у меня ок. 3 раза дольше, чтобы создать это приложение MVC. Первоначальные инвестиции - это медведь, но регулярное обслуживание и улучшения, похоже, ускоряются, особенно когда приложение растет... Поскольку у вас, похоже, есть команда программистов, это может стать быстрее для вас, ребята, поскольку вы, вероятно, можете разделиться обучение/рабочая нагрузка.
-
Опять же, никакого предварительного опыта работы с WebForms, но то, что я могу вам сказать, заключается в том, что когда я изучал ASP.NET MVC, были моменты, когда я изо всех сил пытался понять, что происходит, потому что у меня не было прежнего ASP Фон .NET. (Пример: членство и ролевые провайдеры - мне приходилось записывать свои собственные данные недавно. Мальчик был тем, что было весело...) С другой стороны, у меня не было никаких "старых способов делать вещи" (ака. WebForms), чтобы отучиться или. Если у вас есть команда людей, влюбленных в PostBack/CodeBehind, вы можете поспорить, что сначала MVC будет казаться ужасно странным. Но, надеюсь, ваша команда увидит преимущества, которые MVC приносит и охватывает ее полностью.
О, и следует отметить, что вы можете смешивать MVC и WebForms. Это не предложение "все или ничего". Хотя, если бы я был в ваших силах, я бы постарался максимально использовать MVC и использовать WebForms, где это явно имеет смысл.
Хорошо, надеюсь, это поможет...: -)