Я буду использовать приложения Winforms в качестве примера. Шаблон, в который я начал проникать, таков. Решение называется Пример.
Example.Entities - Этот проект будет содержать мои бизнес-объекты и связанную иерархию классов
Example.Dal - Я помещаю всю бизнес-логику и логику доступа к данным в этот проект (пространство имен). Этот код загружает ваши бизнес-объекты и затем передает их на другой уровень.
Example.Gui - Я разместил здесь все свои утилиты Winforms и GUI и мой основной метод начального ввода. Вы также можете просто назвать этот проект Примером. Мне все еще нравится использовать пространство имен Example.Gui для разделения кода.
Example.Test - Вы можете поместить весь свой тестовый код в этот проект.
Я пытаюсь ввести код в Entities , если он принадлежит одному из бизнес-объектов или коллекции бизнес-объектов.
Gui будет ссылаться на сущности и Dal (уровень доступа к данным).
В зависимости от того, как вы пишете свой Dal, он может ссылаться на ваши сущности.
Тест должен ссылаться на Entities, Dal и, возможно, Gui.
Entities - это собственный сборочный dll, чтобы вы могли использовать его в других проектах. Или верните их из службы .NET SOAP.
Слой GUI должен рассматривать внутренние компоненты DAL как черный ящик. Ваше главное приложение не должно заботиться о том, как бизнес-объекты загружаются или сохраняются. Но вы должны использовать свой тестовый проект для тщательного тестирования вашего DAL.