Когда и почему я должен рассмотреть asp.net MVC? - PullRequest
7 голосов
/ 21 ноября 2008

В последнее время я заметил много разговоров о asp.net MVC, но я не нашел четкого или убедительного описания того, когда, где и почему я хотел бы использовать его в WebForms.

Допустим, я хотел создать небольшое веб-приложение, которое позволит человеку рекламировать некоторые элементы в Интернете. На сайте будет 4 варианта использования:

  • Поиск объявлений
  • Просмотр объявлений
  • Просмотр товара
  • Разместить объявление

Предположим:

  • Меня не особо интересует модульное тестирование моего контроллера. Страница будет либо правильно отображать список элементов, либо нет.
  • Меня интересует больший контроль над разметкой HTML.
  • Меня не интересует использование новейшей технологии Buzz только ради этого.
  • Я заинтересован в использовании инструмента, который лучше всего подходит для работы с точки зрения производительности, производительности, удобства обслуживания и простоты конечного решения.
  • Я не хочу обходить кучу нюансов, чтобы заставить что-то простое работать.

Итак, мои вопросы таковы:

  • В чем принципиальные различия между двумя моделями?
  • В каком сценарии один лучше другого?
  • Что такое ошибки с помощью asp.net MVC (мне известны ошибки с веб-формами)
  • Что бы получить в нашем примере приложения, используя asp.net MVC вместо WebForms?
  • Что бы я потерял для нашего примера приложения, используя asp.net MVC вместо WebForms?
  • Возможно ли смешивать и сочетать модели в одном небольшом приложении?

Спасибо всем, кто тратит время на ответ.

Ответы [ 3 ]

10 голосов
/ 26 ноября 2008
  • В чем принципиальные различия между двумя моделями?

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

MVC - это шаблон, разработанный для того, чтобы помочь вам разделить ваши данные (модель), бизнес-логику (контроллер) и представление (представление). Он больше соответствует истинной природе Интернета: RESTful URL, без сохранения состояния.

  • В каком сценарии один лучше другого?

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

Для любого другого проекта, особенно публичного, даже небольшого, я думаю, MVC - это путь.

  • Что такое ошибки с asp.net MVC (я знаю о проблемах с WebForms)

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

Поскольку JavaScript не скрыт от вас в MVC, потребуется также некоторое время для изучения, если вы не знакомы с ним. JQuery значительно упрощает это.

  • Для нашего примера приложения, что я получу, используя asp.net MVC вместо WebForms?

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

  • Для нашего примера приложения, что бы я потерял, используя asp.net MVC вместо WebForms?

Вы бы потеряли быстрый способ создания ваших страниц и управления состоянием приложений.

  • Возможно ли смешивать и сочетать модели в одном и том же маленьком приложение?

В некотором смысле, да, кажется.

Я бы рекомендовал посмотреть этот доклад Фила Хаака, который дает хороший обзор фреймворка и предлагает Джеффу Этвуду рассказать о том, как он создал StackOverflow с ним.

Он объясняет, как SO использует некоторые элементы управления WebForms для CAPTCHA, которые отображаются в виде.

3 голосов
/ 22 ноября 2008

Основное отличие состоит в том, что MVC больше похожа на «обычную» веб-разработку, которую использует остальная часть мира программирования, тогда как стандартный ASP.NET был разработан, чтобы упростить для разработчиков Windows возможность стать веб-разработчиками. Я изучил веб-программирование, изучая Ruby on Rails, и MVC, похоже, становится .NET-версией Rails.

MVC гораздо больше ориентирован на соответствие стандартам, ненавязчивый javascript и разделение проблем, чем обычный ASP.NET. Вам нужно понять, как HTML и CSS работают вместе. Вы узнаете намного больше JavaScript, как вы освоите MVC. Одним из самых больших преимуществ MVC для меня является то, что вы можете использовать jQuery, чтобы делать некоторые удивительные вещи AJAX проще и ЛУЧШЕ, чем в обычном ASP.NET.

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

Если вы ищете способ научиться быстро получать работу по веб-разработке, мне придется настоятельно рекомендовать ASP.NET.

Как только MVC станет RTM, я думаю, что мы увидим медленную и устойчивую кривую принятия, и по мере ее развития MVC может стать основной структурой для создания веб-сайтов с ASP.NET. Я надеюсь, что по крайней мере!

2 голосов
/ 22 ноября 2008
  1. Самым большим отличием ASPNET MVC от WebForms является жизненный цикл страницы, отсутствие трудных (ненужных) обратных передач, чистое кодирование, enz.
  2. Для этого нет правил
  3. ???
  4. REST-полный сайт, Разделение логики
  5. Поддержка времени разработки, нельзя использовать сторонние веб-элементы управления
  6. Пожалуйста, не смешивайте это вместе. Если вы действительно хотите использовать модель WebForms, вы можете использовать шаблон MVP, Билли МакКафферти написал отличные статьи по этому шаблону проектирования

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

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