Если ваш проект достаточно мал, чтобы для каждого слоя хватало только одной библиотеки, то я бы использовал этот подход.Это помогает поддерживать четкое разделение проблем.
Отдельные библиотеки DLL не окажут неблагоприятного влияния на производительность в моем опыте.В некоторых ситуациях это может способствовать повышению производительности (например, задержка загрузки редко используемых компонентов).Все библиотеки DLL загружаются в одно и то же адресное пространство, поэтому для среды выполнения одна или несколько библиотек DLL практически не имеют значения.
Каждый слой должен создаваться так, как если бы было несколько внешних интерфейсов.используй это.Это также поможет сохранить разделение и будет способствовать созданию более правильного и удобного кода.