Внедрение зависимости и расположение сервиса

Насколько я знаю, внедрение зависимостей не совпадает с расположением службы. но блок приложения Unity содержит библиотеку Common Locator Locator (которую я считаю сервисным локатором). как эта библиотека должна использоваться и когда она должна использоваться, и используется ли сама единица для внедрения зависимости?
ПРИМЕЧАНИЕ. Пожалуйста, не указывайте на домашней странице CommonServiceLocator CodePlex о его использовании.

2 ответа

Решение

Интерфейс Common Service Locator предназначен для авторов библиотеки, которые хотят использовать DI-контейнер, не заставляя библиотеку выбирать контейнер в приложениях, использующих эту библиотеку. Предполагается, что внутри библиотеки, где вам нужно разрешать объекты, вместо этого вы будете кодировать интерфейс CSL; тогда вы можете использовать тот контейнер, в котором используется вызывающее приложение.

Если вы не пишете повторно используемый библиотечный компонент, не используйте CSL. Это дополнительный слой, который ничего не купит.

Нет, внедрение зависимостей - это не то же самое, что расположение службы, однако они имеют много общего функционального сходства. То, что они не разделяют, является более философским подходом.

Оба предоставляют доступ к объектам, настроенным в вашем приложении. Тем не менее, Dependency Injection говорит, что вы никогда не должны явно запрашивать объект (или интерфейс). Вместо этого вы должны УКАЗАТЬ объект или интерфейс, и фреймворк будет иметь дело с подключением всего за вас.

Расположение службы - это место, где вы запрашиваете объект непосредственно из системы Service Locator.

Иными словами, расположение службы требует, чтобы вы нашли нужный объект. Внедрение зависимостей предполагает, что вы созданы с уже необходимыми объектами.

Другие вопросы по тегам