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

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Pub/sub)
Перейти до: навігація, пошук

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

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

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

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

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

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

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

Див. також[ред.ред. код]

Зноски[ред.ред. код]

Посилання[ред.ред. код]