vzor Pipes and filters

Napsal Mgr.Radovan Kaluža (») 20. 4. 2006 v kategorii IT, internet, přečteno: 1079×
Návrhový vzor roury a filtry poskytuje strukturu pro systémy, které zpracovávají tok dat (a stream of data). Každý krok zpracování je zapouzdřen v komponentě nazývané filtr. Data jsou posílána prostřednictvím rour (pipes) mezi sousedními filtry. Kombinace filtrů a rour dovoluje vytvořit řadu podobných systémů.

Nejznámějším případem tohoto vzoru jsou programy jádra Unixu. Procesy Unixu (filtry) jsou propojeny run-time mechanizmem. Jiným příkladem je většina překladačů, z nichž řada pracuje inkrementálně.

Kontext

Zpracování datových toků.

Problém

Představte si, že vytváříte systém, který musí zpracovat a transformovat tok vstupních dat. Implementace takového systému jako jednotné komponenty není možné z několika důvodů:
  • systém bude vytvořen několika vývojáři
  • úloha se přirozeně rozpadá do několika procesních stavů;
  • je pravděpodobné, že se požadavky budou měnit.

Požadavky

Budoucí rozšíření systému by mělo být možné změnou procesních kroků, nebo rekombinací kroků, které si je schopen provést i sám uživatel. Malé procesní kroky je snadné použít znova v odlišném kontextu, než velké komponenty. Procesní kroky, které bezprostředně na sebe nenavazují, spolu nesdílejí informace. Zda-li je separace procesních kroků řešitelná, silně závisí na aplikační doméně a problému, který má být řešen. Např. interaktivní, událostmi řízený systém je nemožné rozdělit do sekvenčních kroků.

Řešení

Architektonický vzor roury a filtry dělí řešenou úlohu do několika sekvenčních, procesních kroků. Tyto kroky jsou spojeny pomocí datových toků (rour) do systému, kde výstupní data daného procesního kroku jsou vstupem do následujícího procesního kroku. Každý procesní krok je implementován jako komponenta filtr. Filtr „konzumuje“ a dodává data inkrementálně – nejdříve spotřebuje celý vstup dat, než vytvoří jakýkoli výstup. Vstupem do takového systému je datový zdroj, jako např. textový soubor, výstupem data sink jako např. soubor, nebo terminál, či animační program. Datový zdroj, datový výstup a filtry jsou spojeny sekvenčně rourami. Každá roura implementuje datový tok mezi přilehlými procesními kroky.

Struktura

Komponenty filtr jsou procesní jednotky. Filtr obohacuje, zjemňuje nebo transformuje vstupní data. Obohacování může představovat nějaké výpočty a přidávání informací, zjemňování dat představuje koncentraci či extrakci informací a transformace představuje dodání dat v jiné reprezentaci. Daný filtr může být kombinací libovolných z těchto základních principů:
  • Následující prvek si tahá výstupní data z filtru pull varianta;
  • předchozí prvek tlačí vstupní data do filtru push varianta;
  • nejběžnější, filtr je aktivní ve smyčce tahá si vstupní data a tlačí výstupní data pro další zpracování pull-push varianta.

/obrazky/radovan.bloger.cz/pipe1.gif Sekvenční diagram pull varianty

/obrazky/radovan.bloger.cz/pipe2.gif
Sekvenční diagram push varianty

První dva případy označují tzv. pasivní filtry, poslední případ je příkladem aktivního filtru. Aktivní filtr je tvořen buď samostatným programem, nebo vláknem. Roury označují propojení mezi filtry a mezi datovým zdrojem a datovým výstupem.

Implementace

Implementace rour a filtrů je přímá. Můžete použít systémovou službu fronty zpráv, nebo UNIXovské roury pro propojení, nebo jinou variantu.
1. Rozdělit systémové úlohy do sekvencí procesních kroků. Každý takový procesní krok musí záviset pouze na výstupu z předchozího procesního kroku.
2. Definovat datový formát, který bude přenášen rourami.
3. Rozhodnout, jak implementovat každé spojení rour.
4. Navrhnout a implementovat filtry.
5. Navrhnout zpracování chyb.
Systém filtrů a rour má řadu dobrých vlastností. Díky propojení filtrů s dobře definovaným chováním jsou dobře srozumitelné. Umožňují využít znovupoužití, protože kterékoli dva filtry jsou navzájem propojitelné. Usnadňují také vývoj - filtr může být nahrazen zlepšenou verzí se stejným chováním. Nevýhodou je, že většinou míří k dávkovému stylu zpracování, a proto mohou být nepřijatelné pro interaktivní aplikace. Systém může přinášet potíže při zpracování vzájemných vazeb dvou oddělených, ale navzájem závislých proudů dat.

Výhody

  • Nejsou třeba žádné „mezi soubory“, ale jsou možné.
  • Flexibilita je umožněna výměnou filtrů.
  • Flexibilita rekombinaci. To umožňuje vytvořit novou zpracovávající sekvenci změnou filtrů, nebo přidáním dalších filtrů.
  • Opakované využití komponenty filtru.
  • Rychlé prototypování.

Slabá místa

  • Sdílení stavových (globálních) informací je nákladné a nepružné.
  • Poněkud složité zpracování chyb.


Facebook Twitter Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
www.iphonetapety.info iphone wallpapers www.iphone z IP 193.179.30.*** | 9.2.2009 16:50
www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info www.iphonetapety.info iphone wallpapers www.iphonetapety.info iphone tapety www.iphonetapety.info iphone pozadi
www.iphonetapety.info free iphone 3g wallpapers
www.iphonetapety.info


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
[*1*] [*2*] [*3*] [*4*] [*5*] [*6*] [*7*] [*8*] [*9*] [*10*] [*11*] [*12*] [*13*] [*14*] [*15*] [*16*] [*17*] [*18*] [*19*] [*20*] [*21*] [*22*] [*23*] [*24*] [*25*] [*26*] [*27*] [*28*] [*29*] [*30*] [*31*] [*32*] [*33*] [*34*] [*35*] [*36*] [*37*] [*38*] [*39*] [*40*] [*41*] [*42*] [*43*] [*44*] [*45*] [*46*] [*47*] [*48*] [*49*] [*50*]   [b] [obr]
Odpovězte prosím číslicemi: Součet čísel osm a deset