Аннотация: Должен ли я выбирать ASP.Net MVC поверх веб-форм или
Я работаю с веб-сайтом более 7 лет, и я обновил его с html- > ASP- > ASP.Net и теперь стал новым ароматом самого ASP.Net. Я должен был начать с MVC в прошлом году, но из-за крайнего срока и сложности, связанной с MVC, я не мог. Теперь, опять же, новое обновление - я начал с шаблонов ASP.Net DD (Dynamic Data) (последний, который подделывает таблицы БД и дает список, детализирует, редактирует и удаляет мастер).
Как я копаюсь, я узнаю, что он основан на MVC, и поэтому я буду использовать MVC (через DD) для создания своих веб-приложений. Я просмотрел много статей и сравнительных видеороликов между MVC и Web-Forms. Есть много тем даже на SO, мои абстрактные ссылки находятся в нижнем справочном разделе. Действительно, MVC оказывается более "контролируемым" и "расширяемым" шаблоном веб-разработки, поскольку некоторые говорят, что веб-формы все еще находятся рядом с ним (например, для создания тяжелых приложений, управляемых данными и т.д., То есть Sharepoint)
Мои веб-решения для цепочек поставок (пользователь должен войти в процедуру), и поэтому я не нужны функции SEO или другие вещи, полезные для типичной сети. Чтобы упростить, я делаю некоторые инвентаризации обслуживание (просмотр, добавление/изменение, удаление и amp; link) и несколько сложных экраны, такие как родительско-дочерние решетки и некоторые табличные макеты. Цель остается держать вещи простыми, но привлекательными и @ ядро, которое мы имеем производительность и удобство использования (большинство работает с наименьшими щелчками)
Итак, вот несколько моих сомнений как новичок MVCian:
- Веб-формы управляются событиями, когда MVC будет выполнять это посредством действий, определенных в контроллерах
- Неважно, пользуюсь ли я L2S или EF, моя бизнес-логика идет в модели (также расширена частичными классами)
- URL-Routing расширит мою силу за рамки традиционного метода Querystring
- Я смогу сделать мои каскадные сложные табличные макеты и сетки с помощью нескольких видов (т.е. частичных представлений и пользовательских элементов управления).
- Такие вещи, как общие, грандиозные и т.д., могут быть видны в представлениях (представления надежды могут совместно использовать/передавать данные)
- Некоторые фанковые функции графического интерфейса, такие как Frozen Grid-header/footer, прокрутка строк, табуляция и т.д., не приведут меня к беспорядочному представлению (или, по крайней мере, это возможно в чистом/организованном режиме)
- У меня не будет "Viewstate" - в этом случае, где хранить временные данные? как текущий pageindex, порядок сортировки и т.д.
- Я боюсь, что MVC может привести к сложной системе lenghty, где поток длинный. Я заблужусь? Является ли он масштабируемым, если я хорошо организовываю?
Собственно, theres больше, но я надеюсь, основываясь на вышеуказанных Qs, вы, эксперты, можете выяснить, какие веб-приложения я работаю, и поэтому я просто хочу начать инвестировать в нечто лучшее. Невозможно изменить архитектуру/подход каждые 6 месяцев!
Помогает ли DD сделать MVC неявным? Тогда как он может использовать элементы управления веб-формой? Извините, если я запутался, в этом случае, пожалуйста, поправьте меня! (Большинство работает с наименьшими щелчками)
Наконец, Может ли это быть решением: http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx
Также см. раздел EDIT.
Ссылки: (надеюсь, что это помогает другим, таким как я)
S ome good refs о MVC через web-froms и сравнение -
http://forums.asp.net/t/1459417.aspx (преимущества MVC над хорошо разработанным веб-формами)
http://www.matthidinger.com/archive/2010/02/17/why-i-love-asp.net-mvc.aspx
Пожар в дыре:-)
http://codebetter.com/blogs/karlseguin/archive/2010/03/11/webforms-vs-mvc-again.aspx
http://www.codethinked.com/post/2010/0
http://www.codethinked.com/post/2010/01/22/Controls-Do-Not-Make-You-More-Productive.aspx
Еще несколько мнений по этому поводу:
v.good article: http://msdn.microsoft.com/en-us/magazine/dd942833.aspx
Резюме выше: http://mvark.blogspot.com/2009/08/aspnet-mvc-vs-web-forms.html
http://www.asp.net/mvc/tutorials/asp-net-mvc-overview--cs
http://weblogs.asp.net/shijuvarghese/archive/2008/07/09/asp-net-mvc-vs-asp-net-web-form.aspx
http://codebetter.com/blogs/karlseguin/archive/2010/03/11/webforms-vs-mvc-again.aspx
От SO:
http://stackoverflow.com/info/30067/
http://stackoverflow.com/info/361620/asp-net-mvc-vs-webforms-for-first-page-load-speed-for-big-projects/
http://stackoverflow.com/info/712220/whats-your-choice-for-your-next-asp-net-project-webforms-or-mvc/
http://stackoverflow.com/info/661181/asp-net-mvc-vs-webforms/
http://stackoverflow.com/info/1035642/asp-net-mvc-vs-webforms-speed-and-architecture-comparison/
http://stackoverflow.com/info/837831/mvc-versus-webforms/
EDIT # 1:
Спасибо за комментарии и отзывы экспертов. Я хотел бы поделиться некоторыми из моих экранов - если кто-то заинтересован, чтобы вы знали, какие функции графического интерфейса и Grid-каскадирование я использовал -
![alt text]()
![alt text]()
![alt text]()
Plz не путайте меня с новичком web-dvpr. Я опытный, мне просто нужно знать (например, когда я говорю "Я буду потерян" ), достижится ли богатый графический интерфейс, и как ваш опыт в таких вещах... надеюсь, что помогает: -)
Ответы
Ответ 1
Я боюсь, что MVC может привести к сложная\длинная система, в которой поток является длительным. Я заблужусь? Это масштабируемо, если я хорошо организовываю?
Ну, часть этого зависит от того, насколько быстро вы подберете технологию.
В целом ASP.NET MVC столь же масштабируема, как и любое решение WebForms, и, по моему ограниченному опыту, возможно, даже более того. Вы должны помнить, что MVC - это шаблон, который не является новым - он использовался разработчиками приложений в течение многих лет. Это даже не ВСЕ, что ново для веб-разработки, хотя ASP.NET MVC делает очень легким сделать, что является одним из его призывов.
Некоторые из традиционных преимуществ ASP.NET MVC, такие как, например, тестирование, имеют большое значение для упрощения и упрощения создания общего проекта. Я создал свой первый веб-сайт ASP.NET MVC в течение недели, подключившись к библиотекам, которые были разработаны несколько лет назад, но предоставил интерфейсный веб-интерфейс. Это действительно было так просто.
Вопрос, который вы задали: "Я заблужусь?" действительно зависит от вас и приложения, которое вы разрабатываете, но только вы можете ответить на него. Вы должны быть готовы уделить время изучению и пониманию MVC... потому что вы исходите из фона WebForms, будут изменения, которые вам не знакомы.
В любом случае, я лично рекомендую использовать MVC, но, как всегда, это зависит от потребностей вашего проекта.
Обновление. Мой собственный опыт работы с MVC был чрезвычайно положительным. Я знаю и понимаю WebForms только из-за использования его в течение последних нескольких лет, но недавно я начал проект в своей компании, и, поскольку мне дали свободу выбора технологий, которые я хотел использовать, я решил, что было бы интересно попробуйте модель MVC в веб-приложении (требуется веб-приложение). Моя команда и я имели опыт работы с MVC в настольных приложениях, но все мы были неопытны в отношении веб-разработки в целом (в целом).
Опыт ASP.NET MVC был чрезвычайно плавным, и это был легкий переход для моей команды. Я заказал несколько книг для команды, мы потратили немного времени на то, чтобы приблизиться к нашему пониманию, и тогда мы начали развиваться (требования уже были выполнены до этого шага - мы были на стадии реализации). Как я уже говорил, это заняло неделю, и мы уже совершили большие скачки вперед - производительность была и остается очень высокой. Я очень доволен моделью MVC.
Вы, похоже, обеспокоены тем, что модель MVC приведет к тому, что ваше приложение превратится в кучу каши или станет неудобным для обслуживания. В целом это далеко не так. Вся идея разделенных проблем делает MVC идеальным для масштабируемости приложения, а также для повышения его ремонтопригодности и тестируемости. С учетом сказанного, многое из того, насколько хорошо растет приложение, зависит от понимания вашей команды парадигмы MVC и их навыков в качестве разработчиков. MVC не для всех, и не для каждого проекта. Есть также много других факторов, которые следует учитывать в отношении масштабируемости, которая не имеет ничего общего с MVC (дизайн базы данных, например, имеет ОГРОМНОЕ воздействие - возможно, больше, чем любая парадигма развития, которую вы выбираете). Мне лично нравится ASP.NET MVC, и у меня был очень хороший опыт, но вы должны принять во внимание все аспекты вашего проекта (члены команды, выделенное время, бюджет и т.д.), Чтобы принять окончательное решение.
Ответ 2
Я использовал MVC с момента его первого выпуска. Моя основная причина желания использовать MVC была связана с тем, что время загрузки SEO/страницы является важным фактором в создаваемых веб-приложениях, и я устал от того, что другие разработчики злоупотребляют ViewState в наших приложениях, несмотря на мои частые объяснения относительно того, почему 80 тыс. ViewState на домашней странице неприемлема.
Я хотел использовать Маршрутизирующий движок для прекрасных URL-адресов RESTful, поскольку в тот момент, когда я использовал IIS7 для перезаписи url на производстве, но не имел его на моей машине dev. Использование маршрутизации означало, что мне не пришлось снова настраивать правила перезаписи при развертывании в IIS7, поскольку маршруты находятся в коде внутри приложения. Механизм маршрутизации теперь доступен в ASP.Net 4.0 Web Forms, поэтому вы можете легко переключаться с параметров QueryString.
Примечание. Вы спрашиваете, где можно хранить временные данные, такие как индекс страницы, порядок сортировки и т.д. Я обычно привязываю их к URL-адресу. Этот подход работает как с Web Forms, так и с MVC, например.
http://example.com/products/1/asc
http://example.com/products/2/desc
Когда я впервые использовал MVC, я сразу заметил, что управление и проверка состояния занимает больше времени, чтобы реализовать пользовательские формы со многими полями, флажками, выпадающими списками и т.д. Это увеличит ваше время разработки, поскольку вам нужно написать собственный код для сохранения состояния, и если вы хотите, чтобы проверка на стороне клиента JavaScript была необходима, вам нужно также перевернуть свой собственный, т.е. не требуется никаких необходимых валидаторов полей. ViewState не является злом, и легко свернуть ViewState в приложении Web Form. Разработчик, злоупотребляющий ViewState, является злым.
В целом многие функциональные требования, о которых вы говорите, например. фанковые функции графического интерфейса, переписывание URL-адресов, в отличие от параметров строки запроса, вычислений и т.д., могут быть достигнуты как с MVC, так и с Web-формами, и с точки зрения конечного пользователя веб-сайт будет выглядеть одинаково. Самое большое, что предлагает MVC, - это условное обозначение шаблона проектирования. Причина, по которой я заставил MVC в моей команде разработчиков, заключается в том, что я хотел, чтобы разработчики в команде придерживались одного и того же соглашения и, таким образом, позволяли нам легче находить код друг друга. То, что я также люблю в MVC, заключается в том, что сделать SoC (Разделение проблем) намного проще. Вы не упоминаете TDD (тестовое развитие) в своем сообщении, но сделать TDD проще для достижения - это то, что MVC также приносит в таблицу.
Ответ 3
В настоящее время я работаю над веб-приложением ASP.NET MVC и смотрю как на Java Spring, так и на Rails в свое время, и если вы готовы работать за пределами экосистемы Microsoft, я настоятельно рекомендую Rails как наиболее продуктивный из трех. Обман подскажет вам, что он на 10 раз быстрее, и из того, что я видел, похоже, это реальность, а не просто реклама.
Также из того, что я прочитал, ASP.NET MVC берет на себя большую часть дизайна от рельсов, но без повышения производительности и простоты использования.
И да, я понимаю, что у вас нет опыта вне экосистемы Microsoft, но рельсы очень просты в освоении по сравнению с ASP.NET MVC и Java Spring/JSF, и стоит того, что нужно изучить.
Дай мне голос, я тебя осмеливаюсь.