для структурной карты, чтобы связать зависимости по всей цепочке, потребуется доступ ко всем сборкам, которые вы фактически собираетесь использовать.
Это не означает, что пользовательский интерфейс должен ссылаться на них (хотя это, вероятно, самое простое решение)
Вы могли бы создать эталонные сборки пользовательского интерфейса, которые содержат только необходимые интерфейсы, ничего не зная о реализации этих взаимодействий (или о том, какие у них зависимости)
Это будет означать, что ваш пользовательский интерфейс должен знать только об интерфейсах вашего уровня обслуживания.
Но чтобы ваше приложение могло использовать все различные части вместе, оно должно знать, какую реализацию сервиса использовать, и должно знать, какую реализацию любых зависимостей эта реализация должна использовать и т. Д. весь путь вниз по линии. Все это должно быть сделано в одном месте (я думаю, что global.ashx в приложении ASP MVC), и это единственное место, где должны существовать любые ссылки на контейнер или другие классы реализации.
Вы приложение - это комбинация всех ваших уровней вместе. Это не только ваш пользовательский интерфейс.
Если вы вообще не хотите ссылаться на эти сборки, то, возможно, вы можете сконфигурировать структурную карту через xml, который, вероятно, будет затем динамически загружать сборки. Я не уверен в этом, но это должно работать, я думаю. Конфигурация Xml более громоздка.
Пока ваш интерфейс службы внедрен в ваши контроллеры пользовательского интерфейса, вы должны быть в безопасности. Для того, чтобы кто-то использовал новую зависимость от одного из упомянутых dll, таких как слой db, ему пришлось бы ввести этот интерфейс в контроллер и связать его с картой структуры, которую должно быть легко обнаружить.