Когда я добавляю новые папки в соглашение вместо конфигурации?

У меня два вопроса, правда.

Я вижу, как люди добавляют папку Services в свои проекты. Какова цель этой папки?

Я вижу папки для Services и ViewModels. Теперь я наткнулся на статью о репозиториях. Так это правило, что каждый раз, когда у меня есть классы, которые можно использовать по-новому, я должен создавать для них папку? Например, если у меня есть класс Repository, то я должен создать папку Repository и поместить их туда вместо папки Models?


person dotnetN00b    schedule 16.04.2012    source источник


Ответы (2)


Папка модели предназначена только для просмотра моделей. Ничто другое не принадлежит ему.

Я предлагаю вам переместить всю логику, не связанную с пользовательским интерфейсом, в отдельную библиотеку классов, на которую вы ссылаетесь из проекта MVC. Гугл separation of concerns.

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

  • Инфраструктура
  • Модели (модели предметной области, а не модели представлений)
  • Репозитории
  • Услуги

в то время как другие создают корневые папки для каждого типа модели, в которые они помещают все связанные классы.

person jgauffin    schedule 16.04.2012
comment
Вы сказали: папка модели предназначена только для просмотра моделей. Ничто другое не принадлежит ему. В ASP.NET MVC? Все, что я читал и видел, показывает, что это могут быть либо модели предметной области (объекты или прямо из базы данных), либо модели представления. На самом деле, большое количество статей/руководств по MVC советуют вам создать отдельную папку ViewModels. - person dotnetN00b; 17.04.2012
comment
Это потому, что нет существующих руководящих принципов. Любой может придумать примеры, записи в блогах или базовый проект MVC, который отлично работает. Проблема возникает, когда приложение растет, и вам нужно начать поддерживать его. Проект MVC3 представляет собой слой пользовательского интерфейса и должен содержать только логику пользовательского интерфейса. По крайней мере, если вам нужно хорошо структурированное решение, в котором используется разделение задач. - person jgauffin; 17.04.2012

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

В вашем конкретном случае вам нужно делать то, что имеет наибольший смысл. Если вы используете пользовательские POCO для своих репозиториев, я бы согласился создать папку репозитория. Однако папка Models действительно является соглашением в MVC, где предполагается хранить модели, используемые пользовательским интерфейсом.

Просто убедитесь, что вы храните свои объекты в наиболее логичном месте, и все будет хорошо :)

person Justin Pihony    schedule 16.04.2012