Много это сводится к личным предпочтениям, но я возьму выстрел:
- Каковы преимущества использования различных сборок для различных частей приложения, в смене используя только одну DLL, содержащую ALL.
Если вам необходимо поддерживать библиотеки DLL отдельно, или если вам нужно распространять различные версии кода, то это имеет смысл, чтобы держать их в изоляции. Если у вас есть возможность динамически загружать сборки и вы хотите исключить некоторые DLL из разных дистрибутивов (например, для добавления или удаления функций в зависимости от лицензирования пользователя), это обеспечивает удобный способ сделать это, не полагаясь на флаговые компиляции или различные конфигурации сборки - просто удалите библиотеки DLL, которые вы не хотите, чтобы пользователь имел.
Сохранение размера кода для отдельных библиотек может влияет на JIT, но я не уверен в этом. Возможно, кто-то еще может звонить в.
- Является ли это хорошая идея, чтобы отделить DAL от логики, используя другой проект (сд сборки/DLL).
Layer видимость должна идти, как это: каждый слой может видеть все, что ниже него, но ничего выше:
UI
Controller layer (populates the UI, interacts with the logic/business objects)
Business objects
DAL
Database.
В общем, каждый слой не должен говорить только один непосредственно под ним, и следует вызывать только непосредственно над ним.
Теперь представьте, что у вас есть набор приложений, как это:
[asp.net web site] [Winforms client] [windows service] [web service]
| | | |
web business objects desktop logic service logic |
| |
\-------------------|--------------------/ |
| |
generic business objects (BL) /
| /
DAL ----------------------------------
|
SQL
Разделяя общие объекты и DAL в отдельные сборки, легко ссылаться на них из различных проектов или решений. В этом случае приложение веб-службы (возможно, предназначенное для вызова от не-NET-клиентов или сторонних веб-сайтов) может перейти непосредственно в DAL, если ему не нужен BL, в то время как другие приложения могут перейти в BL , затем через другие слои.
Возможность совместного использования кода между различными типами приложений, написанная на языке .NET, является очень и очень мощной функцией, уникальной для .NET. Веб-код может быть сохранен в собственной коллекции библиотек, так же как и код на рабочем столе и т. Д. Разделение каждого слоя на одну или несколько сборок позволяет исправлять новые проекты в любом месте в конвейере, что имеет смысл, и гарантирует, t должен включать, скажем, system.web
при распространении клиентского приложения, чтобы приложение было скомпилировано.
- Есть ли у вас, возможно, есть некоторые источники информации о проекте организации в VisualStudio или SDK дизайна.
Я попытаюсь найти некоторые ссылки после того, как мой босс перестает уставился на меня, набрав во время встречи.
Я не понимаю, как разрушение проекта в сборках делает его настолько, что команды или отделы могут работать на отдельных компонентах. Это возможно, если вы поместите его в одну сборку, если вы выполняете правильный контроль источника и сборки. –
@ 2. Я также отделил свои модульные тесты от решения, и я понимаю, почему вы хотите, чтобы он был отдельным, так как я не хочу разворачивать тесты с помощью моей dll. Однако до сих пор неясно, почему вы хотите использовать DAL в другой сборке. –
Это возможно только до определенной степени. Наличие 100 разработчиков в 20 командах в 5 разных странах, работающих над одним проектом, становится неуправляемым. Подумайте о размере проекта и DLL - у вас будет тысячи классов в одной DLL. –