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).
Спільність інтерфейсу дозволяє з'єднувати фільтри незалежно написані різними розробниками, але з іншого боку, якщо дані надходять в іншому форматі, вимагає додавання адаптерів, що може зменшити продуктивність.
Див. також
ред.Джерела
ред.- Fielding, Roy (2000). Architectural Styles and the Design of Network-based Software Architectures (Ph.D.) (англійською) . Каліфорнійський університет в Ірвайні. с. 41—43. Архів оригіналу за 15 травня 2012. Процитовано 20 лютого 2009.