Я сейчас нахожусь в процессе разработки большого приложения.
На данный момент у меня есть одно решение (оно может измениться во времени) со многими проектами.
Я установил структуру каталогов следующим образом:
\
lib \ (содержит общие сторонние компоненты)
строить \
build \ bin (выходной каталог)
build \ wwwroot (выходной каталог для веб-приложения)
конфиг \)
src \ (содержит папки для следующих проектов)
В каждом из проектов я установил расположение сборки (выходной каталог) на ".. \ build \ bin \". Это, как показано выше, переводит проекты в build \ bin над каталогом src.
Company.Entities
Референции Company.Common
Здесь есть все бизнес-объекты (клиент, заказ, продукт) и т. Д ....
Company.Common
Содержит классы, которые форматируют строки, даты, доступ к файлам и т. Д ....
Не содержит ссылок на другие компании. библиотеки.
Company.Data
Ссылки сторонней библиотеки (например, Castle Windsor)
Он содержит интерфейсы, такие как IRepository, ICustomerRepository, IOrderRepository и т. Д ....
Имеет класс RepositoryFactory - в нем есть метод «Get ()», который использует Ioc (Castle Windsor) для возврата IoC «также содержит» для разрешения текущих реализаций этих репозиториев.
Castle.config находится в каталоге \ config \ и включен в этот проект как ссылка. Я установил его всегда копировать в выходной каталог
Company.Data.LinqToSql
Справка Company.Data
Это текущая библиотека доступа к данным.
Он создан IoC
Company.Logic
Ссылки на Company.Data
Слой бизнес-логики - имеет такие методы, как GetProductById (идентификатор строки) - это, в свою очередь, вызывает Repository.Get (). GetById (id) - например,
Company.Tests
Самоочевидный ... будет больше использовать это в будущем.
Company.Web
Отзывы Company.Logic, Company.Entities, Company.Common
Слой веб-интерфейса - это основной сайт.
Хорошо, надеюсь, это даст вам небольшой обзор текущей архитектуры моих проектов и т.д ...
В настоящее время я встраиваю все в каталог build / bin, кроме Company.Web, который встраивается в build / wwwroot (там добавляется каталог bin)
Затем у меня есть событие после сборки, которое копирует aspx-страницы, таблицы стилей, изображения, файлы js и т. Д. Из папки src / Company.Web для сборки / wwwroot
Я настроил Visual Studio для использования IIS для отладки и настроил виртуальный каталог iis, чтобы он указывал на мою папку build / wwwroot.
Однако ...
Некоторые необходимые файлы не встроены в каталог wwwroot / bin
Например, - Company.Data.LinqToSql - поскольку на него не ссылаются проекты, а создается с использованием IoC
Как мне улучшить процесс сборки / структуру проекта, чтобы помочь мне в разработке?
Я подкину все разумные предложения.