OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 08:47

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 31 Январь, 2013 22:32 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Все отлично знакомы с концепцией шины сообщений в ББ. Так же все отлично знают наиболее полную (по возможностям) реализацию шины из комплекта 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, не ощущая расстояний между компьютерами, с определёнными ограничениями, конечно, но лучшее - враг хорошего :). Отдельно хочется отметить тот факт, что для обмена использован язык сериализации JSON(и он может быть заменён на любой другой, компонентность аднака) что позволит, по моим планам, подключать к шине ББ не только ББ, но и вообще любой программный продукт, работающий с каналами связи.

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 31 Январь, 2013 22:35 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Документации там нет, увы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 02 Февраль, 2013 10:39 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Пётр, а как Вы боретесь с ненадёжностью доставки протокола UDP?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 14 Декабрь, 2013 12:22 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Реализовал новое расширение шины: ypkBusIPC для обмена сообщениями через область Shared Memory двух и более экземпляров ББ.
Для работы требует BSon, можно найти в репе bb.open https://bitbucket.org/akastargazer/bb.o ... at=default

Расширение основано на сериализации рекорда в BSON, затем байты размещаются в пул сообщений в общей памяти, которая доступна всем запущенным ББ, кто-то эти байты читает, а потом первый попавшийся ББ удаляет байты из пула сообщений по таймауту. Кто успел, тот прочитал. :)

WinApi Shared Memory оформил как реализацию Files - ypkDataSharedWin32, кому-то может быть интересно использовать эти возможности в своих проектах.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 14 Декабрь, 2013 14:11 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Илья Ермаков писал(а):
Пётр, а как Вы боретесь с ненадёжностью доставки протокола UDP?
для истории. Ответ здесь: viewtopic.php?f=90&t=4243


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 07 Январь, 2014 20:56 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Страница подпроекта в вики http://oberoncore.ru/bbcc/subs/ypk/bus


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 10 Февраль, 2014 12:32 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Небольшой рефакторинг: выделил шину в отдельную подсистему, в ypk оставил только слой совместимости.
Шина (набор шин и механизм управления) теперь здесь: https://bitbucket.org/petryxa/msg


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB