Железобетонный MVC
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Хочу поделиться одним выводом, который я сделал, разбираясь с «новым» фреймворком ASP.NET MVC.
Декларируемые отличия от WebForms выглядят примерно так:
— Слабосвязанная архитектура;
— Отсутствие хранения состояний представления, т.е чистый REST(?);
— Полный контроль над разметкой;
— Покрытие тестами всех компонентов;
Всё это замечательно, но мало где упоминается о том, что все слои архитектуры качественного приложения должны быть нанизаны и приварены к стальной арматуре и залиты бетоном. И любое изменение в требованиях ведёт к изменению всех слабосвязанных слоёв начиная от таблицы в БД и заканчивая тестами.
Я не говорю что это плохо. Просто это надо учитывать при проектировании.
У полноценного MVC приложения обычно есть примерно следущий набор слоёв хранения и управления данными
— Таблицы в БД
— Сохранённые процедуры и представления в БД
— ORM
— DLL (Repository, Mock etc)
— BLL
— Controllers
— Views
плюс Тесты.
Разумеется, все эти слои достаточно независимы, но необходимо учитывать, что они независимы только в рамках строжайшего отображения предметной области. Любое изменение понимания предметной области приведёт к одновременному изменению всех этих слабосвязанных слоёв. Кажущаяся независимость на самом деле является максимальной строгостью и не допускает вольностей которые позволяет управление состоянием в WebForms.
Можно привести аналогию с тетрадью* со сменными блоками. Вы можете доставать или вставлять листы, можете рассыпать их по комнате и собрать обратно, но только те листы в которых перфорация точно соответствует расположению дуг кольцевого замка и их размерам. Иначе вам придётся дырявить новый лист.
Безусловно, вы можете делать что угодно в каком-угодно слое и это даже будет работать. Можно точно также как в в любой программе смешать UI и бизнес-логику в разных частях приложения, написать максимальное количество хелперов и частичных представлений, но зачем тогда использовать MVC?
*Тетра́дь (от греч. τετράδιον — четвертая часть листа, от греч. τέτρα — «четыре») — носитель информации, предмет для произведения записей, состоящий из скреплённых листов белой бумаги. ru.wikipedia.org/wiki/Тетрадь
22 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів