Pipe and filter

Pipe and filter (труби та фільтри) (іноді також називають одностороння мережа потоків даних, англ. one-way data flow network) — це архітектурний стиль, в якому кожен компонент (фільтр) читає потоки даних на вході і створює потоки на виході. Обробка відбувається інкрементно, так що вивід даних може початись ще до того як ввід буде здійснено повністю.

Цей архітектурний стиль має важливе обмеження — кожен фільтер цілком незалежний від інших фільтрів, тобто архітектурі притаманна нульова зв'язність. Фільтри не мають спільного стану.

Переваги

  • Простота. В системі з такою архітектурою кожен фільтр можна зрозуміти окремо від всієї іншої системи.
  • Повторна використовність. Фільтри можна приєднувати до фільтрів за умови що вони мають сумісні інтерфейси.
  • Розширюваність. Нові фільтри можна додавати в систему без ризику змінити поведінку інших частин.
  • Підтримуваність. Старі фільтри можна просто замінити новими.
  • Верифіковність. Систему з такою архітектурою просто аналізувати на вузькі місця в мережі та наявність взаємних блокувань.
  • Простота розпаралелювання. Відсутність спільного стану дозволяє без додаткових модифікацій запускати фільтри паралельно.

Недоліки

  • Довгі ланцюжки фільтрів можуть створювати затримки в обробці даних
  • Якщо фільтр працює в пакетному а не потоковому режимі, тобто йому потрібно отримати всі дані перед тим як почати вивід (наприклад для сортування), це створюватиме затримки для всіх інших фільтрів.
  • Потрібна додаткова архітектура, для фази початкової конфігурації системи. Всі фільтри потрібно запустити і правильно з'єднати трубами.

Uniform pipe and filter

Uniform pipe and filter — архітектурний стиль pipe and filter доповнений обмеженням яке вимагає щоб всі фільтри мали спільний інтерфейс. Найвідоміший приклад реалізації цього стилю Unix, де кожен процес що може бути фільтром має інтерфейс що складається з стандартних потоків: одного вхідного потоку символів (stdin), та двох вихідних потоків символів (stdout та stderr).

Спільність інтерфейсу дозволяє з'єднувати фільтри незалежно написані різними розробниками, але з іншого боку, якщо дані надходять в іншому форматі, вимагає додавання адаптерів, що може зменшити продуктивність.

Див. також

Джерела

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