Около 3 месяцев назад мне сказали, что мне нужно разработать корпоративное веб-приложение (ну, на самом деле, серию небольших веб-приложений), но я могу выбрать любую технологию, какую захочу.
Поскольку я больше всего чувствую себя комфортно с VS / C # /. Net, дилемма заключалась в том, выбрать ли ASP.NET WebForms или ASP.NET MVC2 - в отличие от вас, мой единственный фон был с Windows Forms (WinForms) и немного WPF. Поэтому мне пришлось исследовать (и попробовать) как WebForms, так и MVC.
Так же, как и вы, я понял, что мое приложение не будет ни похожим ни на Google, ни на Apple, но ваше стандартное корпоративное приложение с тысячами кнопок и блоков и т. Д. Веб-формы показались бы самыми быстрыми, но сложными для тестирования и трудно поддерживать на долгосрочной основе. У MVC, казалось, была намного более крутая кривая обучения, но после ее создания тестирование и техническое обслуживание были бы быстрыми.
Я возился с веб-формами только неделю, поэтому не могу это прокомментировать. Но MVC - определенно все, чего я ожидал.
Да, это крутая кривая обучения. Понятия, которые были новыми для меня:
- Модель-Вид-Контроллер (MVC)
- Разделение концернов (SoC)
- Связывание моделей
- Модульное тестирование и тестирование управляемой конструкции (TDD)
- Насмешка и глушение
- Внедрение зависимостей (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 как можно больше и использовать веб-формы только там, где это явно имеет смысл.
Хорошо, надеюсь, это поможет ...: -)