Pull to refresh

12 лучших практик ASP.NET MVC

Reading time 3 min
Views 12K
Original author: Simone Chiaretta
imageОт переводчика: здесь приведены 12 неплохих практик, которые автор рекомендует использовать при разработке приложений ASP.NET MVC. Я решил перевести этот короткий список для тех, кто только присматривается к ASP.NET MVC и делает в этом фреймворке первые шаги. Надеюсь, данные советы помогут получше понять архитектуру ASP.NET MVC и принять правильные решения при разработке проектов. Некоторые советы спорны, но не забывайте, что автор выражает свое мнение, которое может не совпадать с вашим.

Лучшие практики контроллеров


1. Удаляйте AccountController
Вы никогда не будете использовать его и это супер-плохая практика оставлять демо-код в своих приложениях.

2. Скрывайте контроллеры от внешнего Мира
Зависимости от HttpContext, классов доступа к данным, конфигурации, логгирования, часов и т.п создают трудности для вашего приложения в тестировании (или вовсе неподдающимся тестированию), в дальнейшем развитии и модификации.

3. Используйте контейнер IoC
Для того, чтобы придерживаться правила №2 используйте IoC-контейнер для управления всеми внешними зависимостями. Я использую Ninject v2, но контейнеров множество и, кроме того, можно легко построить собственный контейнер.

4. Скажите «НЕТ» магическим строкам
Никогда не используйте ViewData[“key”], но всегда создавайте ViewModel для каждого View и используйте строготипизированные представления ViewPage.

Магические строки — это зло, потому что они не подскажут вам о граматической ошибке, если вы допутите ее, из-за которой ваше представление не работает, вместо этого, используя строготипизированные модели, вы сможете еще на этапе компиляции определить источник проблемы. И, в качестве бонуса, вы получаете IntelliSense.

5. Постройте свои собственные соглашения
Используйте ASP.NET MVC как базу для вашей (или вашей компании) архитектуры. Создавайте свои собственные соглашения имеющие в себе базовые контроллеры или даже представления, от которых будут наследоваться ваши классы, вместо использования классов по умолчанию.

6. Уделите внимание типам запросов (Verbs)
Даже, если вы не используете модель REST (просто RESTfull) используйте определенный Http-тип запроса для каждого действия. Примите паттерн PRG (Post-Redirect-Get): показывайте данные с GET-запросом, модифицируйте данные с POST-запросами.

Лучшие практики моделей


7. Модель предметной области != ViewModel
Модель предметной области представляет предметную область, тогда как ViewModel — предполагает удовлетворение нужд вашего представления, и эти два мира бывают (а обычно так и есть) различными. К тому же, модель предметной области — это данные плюс поведение, это иерархия и построено на базе комплексных типов, тогда как ViewModel — это всего лишь DTO (Data Transfer Objects), плоская модель основанная на строках. Чтобы избежать нудного и приводящего к ошибкам кода маппинга объектов, вы можете использовать AutoMapper. Еще, я рекомендую к прочтению хороший обзор: ASP.NET MVC View Model Patterns.

8. Используйте ActionFilter'ы для общих данных
Это мое решение для лучшей компонентной модели ASP.NET MVC и в будущем я должно быть напишу еще несколько статей на эту тему. Вам не нужны контроллеры для получения данных, которые расшарены между различными представлениями. Мое решение — использовать Action Filter для получения нужных данных и расшаривания их между представлениями. И использовать частичные представления (partial views) для отображения.

Лучшие практики для представлений


9. НИКОГДА не используйте code-behind
НИКОГДА.

10. Пишите HTML каждый раз, когда есть такая возможность
Я полагаю, что web-разработчикам удобно писать HTML (и CSS и JavaScript). Поэтому, они не должны использовать HtmlHelpers только для того, чтобы просто скрыть HTML (например в виде Html.Submit или Html.Button). И опять эта тема для будущих статей.

11. Если есть if, напишите HtmlHelper
Представления должны быть тупыми (dumb) (а контроллеры — тощими и модели — толстыми). Если вы вдруг обнаружили, что пишите «if» в представлении, тогда подумайте над тем, чтобы создать HtmlHelper, чтобы скрыть условное выражение.

12. Уделите внимание выбору вашего view engine
По умолчанию, в ASP.NET MVC используется WebFormViewEngine, но по моему мнению, это не лучший выбор. Я предпочитаю использовать Spark View Engine, так как этот инструмент представляется мне более подходящим для MVC. Что мне в нем нравится, так это то, что поток построен на HTML и циклы «foreach» и выражения «if» тоде определены через «HTML атрибуты».

Загрузки


И слайды и код демонстрации доступны для загрузки. Или вы можете посмотреть слайды онлайн.

Progg it
Tags:
Hubs:
+10
Comments 11
Comments Comments 11

Articles