Топ питань
Часова шкала
Чат
Перспективи

Pipe and filter

З Вікіпедії, вільної енциклопедії

Remove ads

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

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

Remove ads

Переваги

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

Недоліки

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

Uniform pipe and filter

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

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

Див. також

Джерела

  • Fielding, Roy (2000). Architectural Styles and the Design of Network-based Software Architectures (Ph.D.) (англійською) . Каліфорнійський університет в Ірвайні. с. 41—43. Архів оригіналу за 15 травня 2012. Процитовано 20 лютого 2009.
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads