Информация о IoC/DI VS CBSE
У меня есть несколько вопросов, касающихся различий между IoC и CBSE, которые я не могу найти для своей жизни.
Я уже давно использую IoC/DI, особенно с Laravel на PHP, поэтому мне нравится думать, что я достаточно хорошо понимаю, как он работает и как его использовать. Недавно я приобрел книгу Джорджа Т. Хейнемана "Компонентная разработка программного обеспечения". Я столкнулся с некоторой путаницей, когда речь шла о том, как компоненты взаимодействовали с другими компонентами, поэтому начал проводить онлайн-исследования. Я специально ищу примеры C# и из того, что я могу сказать, CBSE очень напоминает Ioc/DI, и в некоторых случаях я часто задаюсь вопросом, просто ли люди называют это неправильным.
Самое большое различие, которое я вижу при чтении книги, состоит в том, что вместо введения зависимости она становится более линейной, а в вашем интерфейсе вы говорите ей, какой класс вы хотите использовать. Я чувствую себя так, как будто я совершенно не в себе и упускаю из виду весь смысл CBSE, но не могу найти какую-либо информацию, которая дает мне момент ахах... Кто-нибудь может предоставить некоторую информацию, которая может прояснить это?
Небольшое обновление:
Идея, лежащая в основе CBSE, если я правильно понимаю, звучит очень хорошо. Но я зацикливаюсь на том, как компоненты взаимодействуют друг с другом. Если я правильно понимаю, компоненты не должны ничего знать о других компонентах. Таким образом, при генерировании событий для всего будет работать, что работает, только если компонент, нуждающийся в информации, знает и ожидает, что будет компонент x, генерирующий это событие.
Я пытаюсь понять это по нескольким причинам. Посмотрите, является ли это маршрутом, который я хочу изучить и начать использовать для своей работы в качестве программиста приложений, а также для моего хобби в программировании игр. Я пришел к CBSE, изучая программирование игр.
1 ответ
Компонентная разработка программного обеспечения - это парадигма разработки программного обеспечения, которая определяет, что следует создавать программное обеспечение на основе зависимостей интерфейса, чтобы максимизировать инкапсуляцию и возможность повторного использования компонентов. Эта парадигма во многих языках требует инверсии контроля, чтобы удовлетворить эту парадигму.
Однако разработка программного обеспечения на основе компонентов - это не инверсия управления, это всего лишь модель разработки программного обеспечения, которая наиболее легко и полностью выполняется с использованием контейнеров DI и IoC. Для C#, если вы хотите пойти по пути разработки программного обеспечения на основе компонентов, я хотел бы изучить, как работают DI, IoC и их соответствующие контейнеры.