Я настоятельно рекомендую вам (пере) прочитать книгу Эрика Эванса по предметно-ориентированному дизайну. Также вы должны смотреть MR. Видео Эванса по книге. DDD НЕ ЯВЛЯЕТСЯ репозиториями, базами данных, сборками или логином пользователя.
Также существует вероятность, что DDD на самом деле не то, что вы ищете. Похоже, вы ищете многоуровневый подход с пользовательским интерфейсом поверх некоторых сущностей / приложений-сервисов поверх некоторых репозиториев поверх базы данных. В зависимости от того, что вы создаете, это может быть все, что вам нужно.
Если вы хотите использовать PetaPoco, и если ваш «orm» генерирует «модели» из базы данных, то не имеет большого смысла разделять их в разных проектах. Тот факт, что модели генерируются ормом (и тот факт, что в будущем может потребоваться повторная генерация), делает их весьма связанными с ормом, поэтому их перемещение в отдельную сборку вам ничего не стоит.
Чтобы ответить на ваш вопрос ValidateLogin, я бы предложил переместить весь код, связанный с аутентификацией, на уровень инфраструктуры, который ортогонален (вертикален) другим уровням. Пользователи приложения не обязательно должны быть «сущностями». Возможно, вам также удастся иметь приложение-сервис на уровне модели, который обрабатывает аутентификацию, но я обычно считал, что auth является проблемой инфраструктуры, а не бизнесом.
В конце я предлагаю вам ознакомиться с недостатками и сильными сторонами такой архитектуры, а затем решить, подходит ли она для того, что вы строите. С другой стороны, вы должны знать, что DDD не из дешевых в сборке и (как сказал г-н Эванд) вы, вероятно, не сделаете это правильно в первые несколько раз.
person
Iulian Margarintescu
schedule
09.09.2012