Если говорить прямо, технический руководитель ошибочен.
Существует распространенное заблуждение среди людей, которые никогда ранее не использовали настоящую инфраструктуру MVC, что «MVC» - это просто другой вид веб-форм, когда вНа самом деле, ничто не может быть дальше от истины.
Чтобы понять, почему это так, вам нужно понять разницу между MVC , архитектурным шаблоном и ASP.NET MVC , платформа, созданная Microsoft, которая реализует шаблон MVC.
Часто люди, такие как технические лидеры и архитекторы, которые не совсем понимают эту тему, используют термин «MVC» для описания как шаблона , так и структуры * 1016.* без понимания различий между ними, и это часто приводит к путанице.
Итак, чтобы быть ясным, шаблон MVC не является чем-то новым, и на самом деле он реализуется многими платформами, такими как:
Webforms - это , а не одна из платформ, которая реализует шаблон MVC из коробки.
Теперь верно, что вы можете реализовать шаблон MVC в WebForms, но Webforms больше подходят для реализации шаблона стиля MVP, и на самом деле существуют рамки (, такие как этот ), которые помогут вам в этом отношении.
Самый большой показательчто технический руководитель понятия не имеет, о чем он говоритэ-э, это:
Мой технический руководитель решил вмешаться и сказать мне, что вышеуказанный проект (многоуровневый, веб-формы) такой же, как MVC
Представление "Уровни »в ваше приложение не имеет ничего общего с MVC.Фактически, в рамках многоуровневой архитектуры приложение MVC будет полностью находиться на уровне презентации и не иметь никакого отношения к другим уровням приложения.
Использование ASP.NET MVC для внешнего интерфейса означает, что у вас есть презентацияуровень, который находится поверх ваших логических уровней, который реализован с использованием инфраструктуры ASP.NET MVC.Это не означает, что вы внезапно устранили необходимость в других уровнях просто потому, что используете MVC.
И наоборот, Webforms - это просто уровень представления в многоуровневой архитектуре.То, что вы используете многоуровневую архитектуру, ни в коем случае не означает, что вы используете шаблон MVC.
Для каждого из остальных пунктов:
Представления - это просто страницы ASPX Это не правда.Страницы ASPX - очень сложные звери и имеют одно существенное отличие между представлениями MVC:
Они предназначены для поддержания состояния
У них есть вся эта система жизненного цикла страницыа также viewstate и управляющие элементы, предназначенные для поддержания состояния между обратными передачами.
ASP.NET MVC разработан так, чтобы не сохранять состояния, и поэтому представления не содержат таких сложностей.
Контроллеры - это просто страничные элементы
Это утверждение полностью пропускает смысл контроллеров.
Codebehinds явно знают обо всем, что касаетсяпроцесс рендеринга страницы ASPX.Он знает об элементах управления на странице, состоянии страницы, жизненном цикле страницы и очень тесно связан с представлением.
Кодовый код всегда вернет только 1 вещь.Страница aspx.
Контроллеры гораздо более гибкие и могут возвращать не только представления, но и могут использоваться для управления логикой для рендеринга различных представлений вашегоданные.Например, вы можете захотеть, чтобы те же данные отображались как HTML для стандартного http-запроса, либо как JSON для AJAX-запроса.
Это возможно, поскольку логика контроллера и логика представления слабо связанные , что делает это возможным.
Модели - это просто объекты данных
Это неправильно. Это редкость в любом приложении MVC любой сложности, когда вы привязываете свои объекты данных непосредственно к представлению. Проще говоря, способ, которым ваши данные моделируются в базе данных, редко будет представлять данные, необходимые для отображения представления.
Например, скажем, у вас есть запись сотрудника, которая имеет "TitleId". Данные в записи будут просто int, но вам нужно будет отобразить фактическое текстовое значение для пользователя, чтобы оно имело какой-либо смысл.
Таким образом, в большинстве приложений MVC ваша «Модель» будет более точно описана как «ViewModel» и полностью отделена от ваших моделей данных или предметной области.
Подводя итог
Ваш технический лидер ошибочен, и не только неправильно на семантическом уровне, но и неправильно на уровне "ты не знаешь, о чем говоришь".
- Использование многоуровневой архитектуры с веб-формами не означает, что вы внедрили шаблон MVC.
- ASPX-страницы не похожи на представления
- Codebehinds - не что иное, как контроллеры
- Модели не имеют ничего общего с вашими объектами данных.
Надеюсь, это поможет.