Внедрение зависимости и расположение сервиса
Насколько я знаю, внедрение зависимостей не совпадает с расположением службы. но блок приложения Unity содержит библиотеку Common Locator Locator (которую я считаю сервисным локатором). как эта библиотека должна использоваться и когда она должна использоваться, и используется ли сама единица для внедрения зависимости?
ПРИМЕЧАНИЕ. Пожалуйста, не указывайте на домашней странице CommonServiceLocator CodePlex о его использовании.
2 ответа
Интерфейс Common Service Locator предназначен для авторов библиотеки, которые хотят использовать DI-контейнер, не заставляя библиотеку выбирать контейнер в приложениях, использующих эту библиотеку. Предполагается, что внутри библиотеки, где вам нужно разрешать объекты, вместо этого вы будете кодировать интерфейс CSL; тогда вы можете использовать тот контейнер, в котором используется вызывающее приложение.
Если вы не пишете повторно используемый библиотечный компонент, не используйте CSL. Это дополнительный слой, который ничего не купит.
Нет, внедрение зависимостей - это не то же самое, что расположение службы, однако они имеют много общего функционального сходства. То, что они не разделяют, является более философским подходом.
Оба предоставляют доступ к объектам, настроенным в вашем приложении. Тем не менее, Dependency Injection говорит, что вы никогда не должны явно запрашивать объект (или интерфейс). Вместо этого вы должны УКАЗАТЬ объект или интерфейс, и фреймворк будет иметь дело с подключением всего за вас.
Расположение службы - это место, где вы запрашиваете объект непосредственно из системы Service Locator.
Иными словами, расположение службы требует, чтобы вы нашли нужный объект. Внедрение зависимостей предполагает, что вы созданы с уже необходимыми объектами.