2009-08-06 8 views
3

Я изучаю, играю и работаю с ASP.NET MVC с момента запуска 1 в 2007 году (декабрь). Я был поклонником этого с 2008 года, и я поддерживаю его полностью.КАК ОБЕСПЕЧИВАЕТ разделение проблем в ASP.NET MVC?

Однако я продолжаю слышать и читать «ASP.NET MVC обеспечивает строгое разделение проблем», в том числе чтение его в Professional ASP.NET MVC 1.0 Роба Коньери, Скотта Хансельмана, Фила Хаака и Скотта Гатри.

То, что я не понимаю, это принудительное исполнение. Что делать, если я определяю свой контроллер действиями только с

return View(); 

и на вид (механизм просмотра aspx) Я все делаю? (выборка данных, бизнес-логика, принятие решений, рендеринг и т. д.)

Как это сделать (ASP.NET MVC) ENFORCE мне, чтобы отделить проблемы?

Я думаю, что это вопиющее преувеличение, и оно должно читать «предлагает разделение проблем».

Можете ли вы убедить меня в том, что он действует?

+1

К тихим downvoter: как говорится на сайте ... «провайдер - ответ для downvoting» –

+2

Я тихий downvoter. Я чувствую, что этот вопрос добавляет мало значения для переполнения стека. Из вашего примера видно, что вся логика находится на странице ASPX, что «принудительное исполнение», вероятно, не подходит для использования документации. Итак, да, вы правы. Рамки не обеспечивают строгого разделения.Но я не уверен, почему это ценная информация или почему кто-нибудь когда-нибудь захочет посмотреть, поддерживает ли MVC или поощряет разделение проблем. Похоже на расщепление волос на что-то, что не так важно, поэтому мой нисходящий. – JamieGaines

+0

слово ... Конечно, это НЕ ПОЗВОЛЯЕТ, чтобы у вас было разделение проблем. Его руководство или «каркас», который вы можете выбрать или нет. если бы у меня были мои хромые 100 очков, я бы тоже проголосовал за это. – YetAnotherDeveloper

ответ

4

Я не думаю, что это навязывает это, поэтому они, вероятно, ошибочно. Как вы сказали, «предложение» или «продвижение» - лучшее слово.

+1

Или, возможно, «позволяет» –

+0

Спасибо. Хорошо в «Профессиональном ASP.NET MVC 1.0» 4 из основных парней Microsoft на стр. 86, строка 27 гласит: «Одна из определяющих характеристик шаблона MVC - это строгое разделение проблем, которые оно помогает обеспечить * между различными компонентами –

+2

Я думаю, что ключ есть * помогает * обеспечить соблюдение. –

7

Главное, чтобы он начинал на правой ноге - то есть отдельный контроллер и вид. Если вы решите сделать что-то сумасшедшее, никто вас не остановит. Кроме надежных отзывов. И здравый смысл.

Но контраст с WebForms, где вы должны попробовать очень трудно не смешивать проблемы.

+0

Хорошо, согласен. –

+0

Не говоря уже обо всех этих досадных средствах управления SqlDataSource, которые соблазняют вас делать плохие вещи. –

2

Конечно, вы можете делать все, что угодно. Вы просто будете страшным программистом и вообще не будете следовать шаблону MVC.

Я также уверен, что есть некоторые вещи, которые вы не можете делать на виду вообще, только в контроллере. Тем не менее, я могу смутить мою .Net и Rails.

+0

Какие вещи я не могу сделать ** в представлении? Это часть моего вопроса .. –

+0

Я не думаю, что ViewState вокруг. Это то, что вы не можете сделать. :) – rball

+0

Это неоспоримое улучшение, я согласен. –

2

Какой механизм вы бы предложили для «принудительного исполнения», какого вы хотите? Должна ли система предупреждать, когда циклическая сложность кода View превышает некоторый порог? Должна ли рамочка запускать что-то вроде lint на вашем источнике и ударить вас по запястью, когда вы делаете вещи без MVC (что бы это ни было)?

Подробнее о том, что будет выгоду от всего этого, что палец виляет? Разве мы не пытаемся писать приложения, которые нравятся нашим пользователям?

+0

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

+0

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

+0

Компилятор-tim предупреждение будет шагом вперед. –