Hertzy - канал событийного автобуса

Node.js включает систему событий, которая является реализацией шаблона Observer, который является наиболее часто используемым шаблоном события в приложении Node.js, и на то есть веские причины: он невероятно просто и полезно.

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

Любой, кто использовал Node.js, должен быть знаком с событиями. Этот модуль отвечает за облегчение взаимодействия между объектами вашего приложения.

Многие из основных модулей API Node.js построены на идиоматической асинхронной управляемой событиями архитектуре, в которой определенные типы объектов (называемые эмиттером) периодически генерируют именованные события, которые вызывают функцию вызываемые объекты («слушатели»).

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

С точки зрения реализации, Hertzy использует шаблон посредника, который идеально подходит для уведомлений на уровне приложений, таких как обмен данными между различными подсистемами, которые сами по себе являются сложными.

Намерение шаблона посредника Определите объект, который инкапсулирует способ взаимодействия набора объектов. Посредник способствует слабой связи, не позволяя объектам явно ссылаться друг на друга, и позволяет вам изменять их взаимодействие независимо. (GoF)

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

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

В конкретном случае Герци он позволяет создать несколько шин событий, представленных объектом частота, и каждый модуль может прослушивать или излучать событие в выбранной шине событий.

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

Чтобы начать использовать H ertzy, вам необходимо импортировать его в свой проект. После этого нужно получить частоту или создать новую. Объект частота - это канал, по которому вы можете излучать или прослушивать событие, генерируемое другими модулями.

Используя Hertzy, вы избегаете создания сильной связи между двумя предыдущими модулями (пользователь и подписка), а в ближайшем будущем, если вы захотите разделить монолитный в наборе микросервисов, вы можете сделать это более простым способом, и вам нужно будет заменить Hertzy на что-то вроде ØMQ или RabbitMQ .

Все API, предоставляемые H ertzy, действительно просты, но очень мощны. Если вы заинтересованы в его использовании, вы можете найти все, что вам нужно, на npm

Если вы хотите внести свой вклад в H ertzy, не стесняйтесь создать PR в его репозиторий:



Наше обещание

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

Чтобы глубже изучить концепции паттернов посредника и наблюдателя, вы можете обратиться к следующим ресурсам:

Шаблон посредника

Образец наблюдателя

Благодарности

Спасибо всем, кто меня каждый день подбадривает.

Создатели и создатели backbone.radio модуля, который вдохновил меня на работу над Hertzy.

Большое спасибо Пьерлуиджи Ианнарелли, создавшему концепцию нового логотипа Hertzy.

Никола Дель Гоббо