2010-09-18 4 views
3

Немного глупый вопрос, но если я хочу создать пользовательский класс, который не является контроллером или моделью, куда его следует поместить. В WebForms я сохранил все мои классы в папке App_Code, но, похоже, классы там не хранятся в MVC.Где хранить пользовательские классы в ASP.NET MVC?

Это даже имеет значение?

ответ

10

Есть много вариантов. Некоторые люди просто создают новые папки в проекте ASP.NET MVC. Другие (включая меня) создают совершенно новые проекты.

Один метод я довольно доволен, чтобы разрушить ваши проекты по назначению ...

  • MyApp.Core < - Все бизнес-логика, нет DB/Web материал
  • MyApp.Infrastructure < - DB/SMTP/журнала событий
  • MyApp.UI.Web < - проект ASP.NET MVC
  • MyApp.Tests

Я также видел эти ...

  • MyApp.ApplicationServices
  • MyApp.UI.Controllers

Я хотел бы предложить, принимая взглянуть на все различные проекты ASP.NET MVC там, в мире с открытым исходным кодом, чтобы посмотреть, как они организуют свои проекты (Code Camp Server, Store Front, Sharp Architecture, Nerd Dinner 2 и множество других). Я думаю, что это откроет вам мир новых возможностей (инверсия управления, шаблон хранилища и т. Д.). Тем не менее, это сложная задача, и я бы приравнял ее к сценарию синих пилюль/красных пилюль.

EDIT: Для того, чтобы ответить на ваш другой вопрос ...

Я бы сказал, это важно, но только в том смысле, что ломать все на слои поможет вам достичь слабосвязанности. Если вы сохраните все в одном проекте, у вас возникнет соблазн размыть линии между презентацией, бизнесом и базой данных. Но если вы разделите все, и вы осознаете свои проектные ссылки, отсутствие связи будет намного более очевидным, и вы будете гораздо более склонны к разделению проблем (SoC). SoC открывает дверь для модульного тестирования и упрощает техническое обслуживание.

+0

SoC! = Физическое местоположение файла – jfar

+3

Физическое местоположение файла облегчает SoC – Mayo