2009-02-03 5 views
7

В структуре папок MVC, где должны находиться общие файлы классов? Например, у меня есть класс, который определяет правильный DataContext для использования, поэтому я не изобретаю колесо в каждом из моих контроллеров. Должна ли она находиться в папке Controllers, даже если она не является контроллером? Должно ли это быть с Модели, потому что это связано с базой данных, хотя это не модель? Возможно, папка Views \ Shared? Или Контент для всей папки для всего этого? Я уверен, что смогу поместить его куда угодно, но мне было интересно, где «правильное» место.Местоположение общего класса MVC

ответ

8

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

+0

Вы помещаете всю свою логику приложения в проект уровня презентации? Звучит ужасно .... –

+0

Для небольших проектов я положил его туда. Если услуги будут повторно использованы, они получат свой собственный проект. –

0

Если он может быть полезен сам по себе (подумайте о инструменте командной строки, построенном вокруг него), поместите его в папку «Модели». Если он используется только как помощник для контроллеров, поместите его в папку Controllers.

3

Если посмотреть на Роба MVC Storefront: Отдельная библиотека классов проект (как Commerce.MVC.Data)

+0

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

0

Это действительно зависит от того, что он делает, если он получает доступ к данным он должен быть в уровне доступа к данным в противном случае, вы можете поместить его в папку контроллера.

0

dmajkic,

Зачем отделять его в своей области? Если его BLL-код должен находиться в папке контроллера, если его связанный с DAL элемент должен находиться в модели. Я могу понять, если проект становится огромным, и вы хотите создать некоторые подпапки, это не должно быть проблемой. Но размещение кода в другом уровне действительно поражает цель MVC, как вы думаете?

+1

№ MVC - это шаблон для просмотра. Он относится к уровню представления. Контроллеры должны содержать только логику представления. В классах контроллеров не должно быть бизнес-логики. dmajkic сказал, чтобы поместить класс в отдельный проект, а не на отдельный уровень. – liammclennan

+0

@liammclennan - Точно, я не знаю, что Аль курит, но, может быть, он должен уйти. –

0

Имейте отдельную сборку DataAccess, сделайте этот класс внутренним и вызовите его DataContextFactory.

Смежные вопросы