Half-Sync/Half-Async

Návrhový vzor Half-Sync/Half-Async (polosynchronní/poloasynchronní) slouží pro řešení situací, kdy jedna část aplikace běží synchronně, zatímco jiná asynchronně, přičemž tyto dva moduly mezi sebou potřebují komunikovat.

Příkladem může být architektura webového serveru, kde samotný server běží synchronně, zatímco požadavky na něj jsou zpracovávány asynchronně na základě hardwarových přerušení, jak přicházejí skrze síťovou kartu.

Řešením, které nabízí tento návrhový vzor, je rozdělit aplikaci na tři vrstvy: synchronní, asynchronní a mezi nimi řadící vrstvu či frontu.

Asynchronní vrstva zpracovává požadavky asynchronně využívajíc například přerušení, po zpracování uloží výsledek do fronty, odkud si je může synchronní vrstva vyzvednout a dále zpracovat. Analogicky může synchronní vrstva uložit do fronty informace pro asynchronní vrstvu. Ve výše uvedeném příkladu webového serveru tak může být synchronní vrstva zablokována např. při čekání získávání odpovědi od databázového serveru, aniž by to ovlivnilo příjem dalších požadavků na webový server.

Literatura editovat

  • Douglas C. Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann "Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects", Wiley, 2000