Pull to refresh

ASP.NET MVC Framework – ставим точки

Reading time 4 min
Views 23K
Точка первая ставится в вопросе “Нужно ли переходить на MVC Framework и почему?”

Этой статьей я хотел бы открыть цикл статей про MVC Framework. Последнее время я очень плотно работаю с ним и с его внутренностями и у меня накопилось несколько мыслей, интересных наблюдений и знаний которыми хотелось бы поделиться. Если вы программист ASP.NET и не знакомы или знакомы не очень хорошо с MVC Framework, то, хотелось бы верить, мои статьи помогут вам понять этот инструмент лучше. В любом случае, даже если вы очень хорошо знаете предмет, я думаю, нам с вами будет что обсудить в комментариях на каждую поднятую тему.

Итак, первая вводная заметка посвящена вопросу необходимости использования или перехода на MVC Framework с классического ASP.NET. Вопрос этот непростой и ответ который я дам не будет повторять шаблонные рекомендации и сравнения, которые вы можете найти в интернет. Напротив, я хотел бы перевернуть точку зрения так, чтобы вы посмотрели на проблему с другой стороны.

Почему вам не нужен MVC Framework


Рассмотрим сначала почему вам не нужен MVC Framework:

* вам не нужен MVC Framework, если вы считаете, что он лучше классического ASP.NET. Если вы так думаете, значит вы плохо знаете ASP.NET, вам есть еще куда расти и что изучать. Если вы думаете, что MVC Framework лучше ASP.NET, значит вы не полюбили ASP.NET и не поняли всей прелести его идеологии. В таком случае вам рано переходить на MVC Framework. Переходить на новый фреймворк просто неоткуда, если у вас нет должного понимания и любви к базовому механизму. Изучить ASP.NET, поймите почему и как там все устроено. MVC Framework вам не нужен;

* вам не нужен MVC Framework для того, чтобы использовать паттерн MVC. В самом деле MVC не имеет никакого отношения к конкретной библиотеке. MVC Framework – это всего лишь реализация паттерна, которую никто не мешает вам создать и использовать самому в классическом ASP.NET. Попробуйте, это не трудно. MVC Framework вам не нужен, если причина только в том, что он MVC;

* вам не нужен MVC Framework, если вы хотите избавиться от viewstate. MVC Framework не предназначен для цели “избавления от viewstate”. Если вы хотите избавиться от viewstate, то изучите, как работает этот механизм. Почему он есть и для чего служит. Уверяю вас, viewstate в умелых руках очень полезен. А большие и тяжелые viewstate-страницы – это результат плохого дизайна или недостаточности знаний у разработчика;

* вам не нужен MVC Framework, если вы хотите избавиться от автоматической генерации идентификаторов. История повторяется. Все что касается viewstate применимо и к автогенерации id для элементов html-разметки. Если вы понимаете как и зачем генерируются идентификаторы у вас отпадет желание от них избавляться. Кроме того, в ASP.NET 4.0 у вас появляется возможность более гибко управлять генерацией и это еще одна причина того, почему MVC Framework вам не нужен;

* вам не нужен MVC Framework, если вы хотите “получить полный контроль над разметкой“. В классическом ASP.NET разработчик так же имеет полный контроль над разметкой и желание получить что-то еще явный признак того, что разработчик плохо понимает ASP.NET. Только поняв как работает ASP.NET с разметкой и как он обрабатывает запросы, можно сравнивать классическую модель с моделью MVC Framework. Если вы хорошо себе представляете как работают оба эти механизма, то требование этого абзаца отпадет само собой. MVC Framework для управления разметкой вам не понадобится;

* вам не нужен MVC Framework, если вы хотите получить удобочитаемые URL. Механизм маршрутизации, который позволяет представлять удобочитаемые URL является частью ASP.NET, но не внутренней частью MVC Framework, поэтому использовать маршрутизацию и создавать удобочитаемые URL-ы вы можете и в классическом ASP.NET, MVC Framework для этого вам не нужен.

Надеюсь, что вы не согласны с некоторыми из этих пунктов. Это хорошо, возможно мои тезисы заставят вам по-другому взглянуть на вопрос.

Почему вам нужен MVC Framework


Рассмотрим же причины, по которым вам нужен MVC Framework:

* MVC Framework вам нужен потому что вы хотите покрыть юнит-тестами значительную или всю часть кода. Это достойная причина перехода на MVC Framework, его модель предполагает, что тестированию может быть подвержена любая часть фреймворка на любом этапе. Тогда как в классическом ASP.NET механизм обратных вызовов “postback” часто затруднял написание тестов;

* вам нужен MVC Framework, если большая часть вашего кода не является частью ASP.NET. Таким кодом является клиентский javascript и частично AJAX. Когда закладывался фундамент ASP.NET клиентской оптимизации и коду на стороне клиента уделялось очень мало внимания, в то время не было понятия AJAX или Web 2.0. Времена поменялись, меняется и классический ASP.NET, в нем есть множество инструментов по поддержке AJAX-функционала, но все же создание мощного клиентского кода остается трудной задачей. Если у вас большое количество кода на стороне клиента, может быть даже столько же сколько на стороне сервера, то MVC Framework вам нужен, он облегчит вашу работу;

* и основная и главная причина, по которой вам нужен MVC Framework – это абсолютная расширяемость. В этом плане MVC Framework – это действительно каркас, который может быть заполнен так, как нужно вам. Можно провести следующее сравнение: классический ASP.NET – это картина, нарисованная мастером, тогда как MVC Framework – это набросок, эскиз, который зарисовать, доделать предоставляют вам самому. В MVC Framework вы способны переопределить действие механизма на любом этапе от обработки запроса, до отправки результата.

Переход на MVC Framework не должен стать для вас поиском избавления от “проблем”. Посмотрите на проблемы пристальнее и вы увидите, что все они решаются в рамках классической модели ASP.NET. Многие не понимают, что основная сила и мощь, то почему следует использовать MVC Framework – это не “недостатки” классической модели ASP.NET, которые в большинстве случаев проистекают из плохого понимания предмета. Сила MVC Framework в его возможностях и потенциале к расширяемости. MVC Framework – это тот конструктор, который вы должны пожелать после того, как полностью насытились проверенными инструментами. Если вы встали перед проблемой, когда механизмов ASP.NET вам недостаточно, когда вас стесняют рамки предложенной модели, которую нельзя расширить или видоизменить, вот только тогда вам по-настоящему нужен MVC Framework. Любые другие случаи, попытки избавиться от “недостатков” или “переход на паттерн MVC” – это недостаточные причины необходимости в переходе на MVC и большей частью являются ошибочной точкой зрения на вопрос.

Это все, что я хотел бы сказать по вопросу “Нужно ли переходить на MVC Framework и почему?”. Надеюсь, что точку, которую я поставил в этой заметке заинтересует вас и заставит задуматься или взглянуть на вопрос под другим углом. В следующей части я постараюсь поставить точку в вопросе “Как работает механизм MVC Framework?”.

Progg it
Tags:
Hubs:
+24
Comments 99
Comments Comments 99

Articles