Публікація-підписка (шаблон проєктування)

Публікація-підписка (англ. Publish–subscribe, Pub/sub) шаблон проєктування в архітектурі ПЗ, шаблон поведінки, що реалізує механізм передачі повідомлень, в якому відправники повідомлень, які називаються видавцями (publishers), не здійснюють пряме відправлення повідомлень приймачам, які називаються підписниками (subscribers), замість цього опубліковані повідомлення розбиваються на категорії за класами, без знання про те, яким підписникам вони мають бути прийняті і чи взагалі будуть такі підписники. Аналогічно, підписники виявляють зацікавленість в певних класах повідомлень і приймають ті повідомлення, які їх цікавлять, без знання того, які видавці їх публікують. Шаблон сприяє отриманню ПЗ з більшою масштабованістю та динамічнішою топологію мережі.

Механізм, покладений в основу Pub/sub, близький механізму черг повідомлень, який зазвичай застосовується в message-oriented middleware системах. Більшість систем передачі повідомлень підтримують у своїх API як pub/sub, так і черги повідомлень, як наприклад Java Message Service (JMS).

Фільтрація повідомлень

В моделі pub/sub, підписники зазвичай приймають лише підмножину всіх опублікованих повідомлень. Процес вибору повідомлень для прийняття та обробки називається фільтрацією. Існують дві типові форми фільтрації: що базуються на темі і що базуються на контенті.

В системах, що базується на темах, повідомлення публікуються в «теми» (іменовані логічні канали). Підписники в таких системах отримують всі повідомлення, опубліковані в теми, на які вони підписані; повідомлення передаються всім підписникам, підписаним на повідомлення теми. Відповідальність за класи повідомлень, на які можна підписуватись, покладена на видавця.

В системах, що базуються на контенті, повідомлення надаються підписникам, якщо атрибути таких повідомлень відповідають атрибутам, описаним підписником. Відповідальність за класи повідомлень, на які можна підписуватись, покладена на підписника.

Деякі системи є гібридами обох видів: видавці публікують повідомлення в теми, а підписники підписуються на кілька тем, описуючи атрибути бажаних повідомлень.


Див. також

Зноски

    Посилання

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.