OberonCore https://forum.oberoncore.ru/ |
|
ypkBus, форк omcBus и расширения межмодульной шины. https://forum.oberoncore.ru/viewtopic.php?f=90&t=4237 |
Страница 1 из 1 |
Автор: | Пётр Кушнир [ Четверг, 31 Январь, 2013 22:32 ] |
Заголовок сообщения: | ypkBus, форк omcBus и расширения межмодульной шины. |
Все отлично знакомы с концепцией шины сообщений в ББ. Так же все отлично знают наиболее полную (по возможностям) реализацию шины из комплекта 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 и уже, в каком-то смысле, один раз было реализовано, но на базе протокола Xmpp viewtopic.php?p=53141#p53141 и даже была использована в настоящем проекте для связи удалённых ББ. Но Xmpp имеет много специальных условий и зависит от стороннего ПО. Поэтому на подходе расширение ypkBusComm - компонент, соединивший в себе основные наработки недавнего времени, планируется к использованию в локальных сетях для обмена сообщениями между экземплярами ББ на разных компьютерах. Методы широковещания UDP позволят отказаться от настройки примитивных параметров, таких как IP и порт и работать непосредственно с модулем ypkBus, не ощущая расстояний между компьютерами, с определёнными ограничениями, конечно, но лучшее - враг хорошего ![]() В заключение хотелось бы отметить, что минусы подобного общения по сокетам в рамках одного компьютера учтены в абстракциях, которые были сформированы в процессе разработки, поэтому, в дальнейших планах развития коммуникационных возможностей значится как компоненты для построения шины и вне локальной сети с помощью повторителей и мостов, так и реализация быстрой локальной шины на одном компьютере через механизмы общей памяти ОС, про которые не раз рассказывал И. Ермаков, и надеюсь, он в скором времени предоставит, хоть в каком-то виде такие полезные наработки. Всё вышеописаное доступно в публичном доступе в репозитории Битбакет. https://bitbucket.org/petryxa/bbcb (ред-р кол-ции) карточка: http://oberoncore.ru/bbcc/subs/ypk/ |
Автор: | Пётр Кушнир [ Четверг, 31 Январь, 2013 22:35 ] |
Заголовок сообщения: | Re: ypkBus, форк omcBus и расширения межмодульной шины. |
Документации там нет, увы. |
Автор: | Илья Ермаков [ Суббота, 02 Февраль, 2013 10:39 ] |
Заголовок сообщения: | Re: ypkBus, форк omcBus и расширения межмодульной шины. |
Пётр, а как Вы боретесь с ненадёжностью доставки протокола UDP? |
Автор: | Пётр Кушнир [ Суббота, 14 Декабрь, 2013 12:22 ] |
Заголовок сообщения: | Re: ypkBus, форк omcBus и расширения межмодульной шины. |
Реализовал новое расширение шины: ypkBusIPC для обмена сообщениями через область Shared Memory двух и более экземпляров ББ. Для работы требует BSon, можно найти в репе bb.open https://bitbucket.org/akastargazer/bb.o ... at=default Расширение основано на сериализации рекорда в BSON, затем байты размещаются в пул сообщений в общей памяти, которая доступна всем запущенным ББ, кто-то эти байты читает, а потом первый попавшийся ББ удаляет байты из пула сообщений по таймауту. Кто успел, тот прочитал. ![]() WinApi Shared Memory оформил как реализацию Files - ypkDataSharedWin32, кому-то может быть интересно использовать эти возможности в своих проектах. |
Автор: | Пётр Кушнир [ Суббота, 14 Декабрь, 2013 14:11 ] |
Заголовок сообщения: | Re: ypkBus, форк omcBus и расширения межмодульной шины. |
Илья Ермаков писал(а): Пётр, а как Вы боретесь с ненадёжностью доставки протокола UDP? для истории. Ответ здесь: viewtopic.php?f=90&t=4243
|
Автор: | Пётр Кушнир [ Вторник, 07 Январь, 2014 20:56 ] |
Заголовок сообщения: | Re: ypkBus, форк omcBus и расширения межмодульной шины. |
Страница подпроекта в вики http://oberoncore.ru/bbcc/subs/ypk/bus |
Автор: | Пётр Кушнир [ Понедельник, 10 Февраль, 2014 12:32 ] |
Заголовок сообщения: | Re: ypkBus, форк omcBus и расширения межмодульной шины. |
Небольшой рефакторинг: выделил шину в отдельную подсистему, в ypk оставил только слой совместимости. Шина (набор шин и механизм управления) теперь здесь: https://bitbucket.org/petryxa/msg |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |