ASP.NET MVC - предложения по компоновке решения - PullRequest
5 голосов
/ 25 августа 2009

Я работаю с ASP.NET MVC уже несколько месяцев, и я все еще не доволен макетом решения моего проекта. Я пытаюсь создать CMS для веб-сайтов среднего размера, которая будет максимально переносимой и многократно используемой, и в ее разработке есть некоторые очевидные проблемы. Я ищу совет относительно того, как мне следует структурировать свое решение с учетом разделения интересов. Я нашел похожий вопрос здесь , но он не нацелен на некоторые из проблем, с которыми я сталкиваюсь.

Прямо сейчас так изложено мое решение:

+Project.Controllers - All Controller classes
P+roject.Controllers.Tests

+Project.Core - Utility classes including repetitive tasks and some configuration handlers (this project needs to be better fleshed out)
+Project.Core.Tests

+Project.Models - Model classes, Entity Framework context, and Repository classes
+Project.Models.Tests

+Project.Web - All Views and Content

Одна важная вещь, которую я сейчас упускаю, - это место, где можно придерживаться моей бизнес-логики, и я чувствую, что неправильно размещаю бизнес-логику в своих классах репозитория, а также смешиваю ее с действиями контроллера. Очевидно, я хорошо осведомлен об этой проблеме, но я просто не уверен, где мне следует разместить свою бизнес-логику в этом макете решения. Нужно ли изменить структуру моего решения или я могу безопасно сохранить эту бизнес-логику в своем проекте Models? Кроме того, мне действительно не нравится, что мой EF Context находится в классе Models, но я не знаю способа изолировать код уровня данных от классов сущностей, необходимых в моей модели.

Как все остальные выкладывают свои производственные решения ASP.NET MVC?

Ответы [ 3 ]

4 голосов
/ 25 августа 2009

Возможно, вы захотите проверить макет, который используется в проекте S # arp или в луковой архитектуре , как в Code Camp Server MVC. , Оба проекта приложили немало усилий для того, чтобы получить хорошее разделение проблем в контексте asp.net MVC и доменного дизайна.

1 голос
/ 25 августа 2009

Лично я только учу MVC. Мой опыт основан на ASP.NET WebForms, но я хотел бы использовать макет, предложенный в приведенной вами ссылке. Второй ответ, то есть:

  • Модели
  • Просмотров
  • Контроллер
  • Услуга
  • Тесты - по одному на каждый проект.
0 голосов
/ 25 августа 2009

Я бы взял контекст EF и репозитории из моделей на уровне доступа к данным Project.Data и поместил бы ваши бизнес-объекты в Project.BusinessLogic (?).

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

Надеюсь, это поможет,

Dan

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