Nice Wiki.
Я начинаю новый проект, и это структура, с которой я начал.
Это соответствует рекомендациям Microsoft (бизнес, данные, услуги, презентация).
В моем решении:
- Бизнес: логика, относящаяся к области / проекту, и прежде всего POCO.
- Данные: репозитории.не требует пояснений.
- Услуги: логика поверх хранилищ.я могу добавить сюда кэширование, фильтрацию и т. д. Мой пользовательский интерфейс связывается с хранилищем через службы, а не напрямую с хранилищем.(взаимно-однозначная зависимость для пользовательского интерфейса).
- Презентация: приложение MVC (TBD).
Вы заметите, что у меня также есть привычка ставить префикс к фактическому имени сборки проектас FQN.
Мне просто нравится его внешний вид, плюс в Object Explorer все это выглядит красиво и "древовидно".
Также у меня есть привычка вводить число вперед папкой, поэтому она сортируется в соответствии с «что нужно, что».Другими словами, все зависит от бизнес-уровня (поэтому он на самом верху), хранилище зависит только от бизнеса, службы зависят от хранилища и бизнеса, представление зависит от услуг и бизнеса и т. Д.
Конечно,выше это отправная точка.Все, что у меня сейчас есть, это репозиторий, который возвращает пользователей, и сервисы, которые применяют логику поверх него (фильтрация).
Со временем у меня будет больше бизнес-проектов, больше репозиториев (по одному для каждой логической области сети).приложения), больше сервисов (внешние API, интеграция) и, конечно, у меня ничего нет в Presentation (я делаю TDD).
Мне также нравится, когда все зависимости находятся в одном месте (папка проекта).
Для расширений у меня есть один класс (Extensions.cs) для каждого проекта.Другими словами, я "Расширяю" хранилище, или "Расширяю" пользовательскую службу, или "Расширяю" некоторые функциональные возможности пользовательского интерфейса.
Для тестовых проектов - у меня есть тестовый проект на проект решения.
Это мои два цента (для чего это стоит).