2

У меня есть несколько вопросов, касающихся различий между IoC и CBSE, которые я не могу найти для жизни меня.Информация о IoC/DI VS CBSE

Я использую IoC/DI в течение некоторого времени прямо сейчас с Laravel в PHP, поэтому мне нравится думать, что я очень хорошо понимаю, как это работает и как его использовать. Недавно я приобрел книгу Джорджа Т. Хейнемана «Компонентная программная инженерия». Я столкнулся с некоторой путаницей, когда дело дошло до того, как компоненты, общающиеся с другими компонентами, начали делать некоторые онлайн-исследования. Я специально просматриваю примеры C# и из того, что могу сказать, что CBSE очень напоминает Ioc/DI, и в некоторых случаях я часто задаюсь вопросом, просто ли люди называют это неправильным.

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


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

Я пытаюсь понять это по нескольким причинам. Посмотрите, является ли это маршрут, который я хочу изучить, и начну использовать для своей работы в качестве прикладного программиста, а также мое увлечение программированием игр. Я пришел на CBSE, исследуя игровое программирование.

+1

Для тех, кто не знает, что означает CBSE: разработка программного обеспечения на основе компонентов – statue

ответ

1

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

Однако разработка программного обеспечения на основе компонентов не является инверсией управления, это всего лишь модель программного обеспечения, которая наиболее легко и полностью выполняется с использованием контейнеров DI и IoC. Для C#, если вы хотите пойти по пути разработки программного обеспечения на основе компонентов, я хотел бы ознакомиться с тем, как работают DI, IoC и их соответствующие контейнеры.

+0

Это только меня смутило! В книгах, и во всех примерах, которые я рассматривал, ни один из них не использовал IoC. Я знаком с IoC и DI (используйте его в большинстве моих проектов), и если я пойду по этому маршруту, не знаю, почему я бы использовал CBSE вообще. – Silent

+0

Когда книги? CBSE на самом деле не очень недавний термин, и происходит с 80-х годов, когда концепций IoC и отражения не было. Например, в C++ вы не можете использовать контейнер DI, потому что для его удовлетворения нет метаданных. CBSE просто означает: программа для интерфейсов, поэтому вы можете легко заменить части позже. Сегодня самый полный способ сделать это через DI/IoC, но пока вы программируете интерфейсы для повторного использования, вы уже делаете CBSE. – Nishmaster

+0

Это имеет смысл и в значительной степени отвечает именно тому, что у меня было в голове. Я думал, это звучит так, как я уже был в теории. Спасибо за ответы Ниш! – Silent

Смежные вопросы