С многоуровневой точки зрения ваше описание выглядит хорошо.Вы можете иметь одинаковые имена методов на уровнях DAL и Business.Проблема в жесткой связи.Когда вы описываете это, ваш веб-уровень создает бизнес-уровень, который создает уровень DAL.
Если это так, как вы собираетесь провести модульное тестирование бизнес-уровня изолированно?
Я бы предложил вам ввести уровень абстракции для DAL и бизнес-уровней (предоставив им реализацию интерфейсов).Тогда реализация бизнес-уровня может принять интерфейс DAL в качестве аргумента конструктора (внедрение конструктора) вместо того, чтобы создавать его экземпляр DAL.
Этот уровень абстракции позволит вам заменить реальный DAL в модульном тесте на фиктивный объект и протестировать бизнес-уровень изолированно.веб-уровень.