Все отлично знакомы с концепцией шины сообщений в ББ. Так же все отлично знают наиболее полную (по возможностям) реализацию шины из комплектаAbf. Однако, в процессе её использования были выделены наиболее простые методы использования - широковещание. Вместе с тем, подсистема Abf более не развивается и не каждый захочет её использовать в своих проектах.

В результате обсуждений, Е. Темиргалеев выделил основные функции шины в специальный встраиваемый компонент omc.
Чем я и воспользовался, встроив и расширив модульomcBusв подсистему ypk имени меня, назвав модульypkBus.

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

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

Второе расширение -ypkAbfAgent. Как уже понятно из названия, это расширение служит мостом между двумя шинами, потому что ведь Abf мы уже успели использовать в наших проектах и компонентах. А это расширение позволяет бесшовно наладить общение между двумя шинами (вAbfBus, конечно, дойдут только соответствующие расширения типаAbfBus.Message).

В ходе работы с агентами было замечено, что многие из них используются мною как аггрегаты, в том смысле, в котором описывает их И. Ермаков в документации к Active BlackBox. Стало интересно, а возможна ли реализация агентов, которые не будут унаследованы от специального типаypkSysAgents.Agent.
Поэтому возникла соответствующая темаviewtopic.php?f=47&t=4175и в скором времени, реализация на стандартном ядре, механизма агрегации деталей.
А вместе с ним, практически одновременно возникло третье расширение шины сообщений:ypkBusService, то есть сервис, который обеспечивает хендлером шины абсолютно любой динамический объект. Конечно, неизбежны некоторые особенности, связанные с невозможностью настройки-изменения стандартного ядра, но они вполне уравновешиваются достоинствами подобного решения. Например, в одном проекте я смог наделить обычное отображение Views.View ещё одним каналом связи, он заменил мне доменную шину, о которой было столько разговоров на форуме, и по этому каналу я смог общаться с отображением даже во время его отсутствия на экране и в дереве фреймов, соответственно.

И наконец, самое свежее расширение, которое ещё находится в стадии разработки, но уже перешагнуло определённую черту, которая позволит заявить, что расширение живёт и будет жить
Это расширение было слегка описано вот здесьviewtopic.php?p=77568#p77568и уже, в каком-то смысле, один раз было реализовано, но на базе протокола Xmppviewtopic.php?p=53141#p53141и даже была использована в настоящем проекте для связи удалённых ББ.
Но Xmpp имеет много специальных условий и зависит от стороннего ПО.
Поэтому на подходе расширениеypkBusComm- компонент, соединивший в себе основные наработки недавнего времени, планируется к использованию в локальных сетях для обмена сообщениями между экземплярами ББ на разных компьютерах. Методы широковещания UDP позволят отказаться от настройки примитивных параметров, таких как IP и порт и работать непосредственно с модулемypkBus, не ощущая расстояний между компьютерами, с определёнными ограничениями, конечно, но лучшее - враг хорошего. Отдельно хочется отметить тот факт, что для обмена использован язык сериализацииJSON(и он может быть заменён на любой другой, компонентность аднака) что позволит, по моим планам, подключать к шине ББ не только ББ, но и вообще любой программный продукт, работающий с каналами связи.

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

Всё вышеописаное доступно в публичном доступе в репозитории Битбакет.https://bitbucket.org/petryxa/bbcb

(ред-р кол-ции) карточка:http://oberoncore.ru/bbcc/subs/ypk/