Zasílání zpráv

V počítačové vědě proces předávání zpráv odešle zprávu na proces (což může být objekt) a spoléhá na proces a podpůrné infrastruktury, aby vybraly a vyvolaly spuštění daného kódu. Předávání zpráv se od konvenčního programování liší tím, kde je proces, podprogram nebo funkce přímo vyvolána názvem. Předávání zpráv je klíčové pro některé modely souběžnosti a objektově orientované programování.

Předávání zpráv je používán v každém moderním počítačovém softwaru. Používá se jako způsob kooperace mezi objekty, které tvoří program a také jako prostředek k interakci mezi objekty a systémy, které běží na různých počítačích (např. na Internetu). Předávání zpráv může být realizováno různými mechanismy, včetně kanálů.

Přehled

Předávání zpráv je technika pro vyvolání chování (tj. spuštění programu) na počítači. Na rozdíl od tradiční techniky volání programu podle názvu se v předávání zpráv používá model objektu, který rozlišuje obecné funkce z konkrétní implementace. Vyvolaný program odešle zprávu a spoléhá na objekt, aby vybral a zrealizoval odpovídající kód. Důvody pro použití pokročilé vrstvy v podstatě spadají do dvou kategorií: zapouzdření a distribuce.

Zapouzdření je myšlenka, která praví, že software objektů by měl být schopen k vyvolání služby na jiné objekty, aniž by věděl, nebo se staral o to, jak jsou tyto služby jsou realizovány. Zapouzdření může snížit množství logického kódování a umožnit to, aby byly systémy více spravovatelné. Např.: Spíše než použitím IF-THEN podmínky, která určí, který podprogram nebo funkce se zavolá, může prostě vývojář poslat zprávu na objekt a objekt bude vybere příslušný kód náležící jeho typu.

Jedním z prvních příkladů, jak se tento způsob dá použít, je v oblasti počítačové grafiky. Zde jsou všechny typy složitostí, které se týkají manipulace grafických objektů. Například, jednoduché použití správného vzorce, který spočítá plochu uzavřeného tvaru, se bude lišit v závislosti na tom, jestli je to trojúhelník, obdélník, elipsa, nebo kruh. V tradičním počítačovém programování by to vzešlo v dlouhé IF-THEN podmínky, které by testovaly, jaký daný objekt nabývá tvar a poté dle toho by volal odpovídající kód. Objektově orientovaný způsob, jak tento problém zvládnout, je vyřešen definováním třídy s názvem Tvar s podtřídami, jako jsou Obdélník a Elipsa (které mají ještě podtřídy Čtverec a Kruh) a poté se jednoduše pošle zpráva na libovolný Tvar, která požádá o výpočet dané oblasti. Každý Tvar objekt poté vyvolá svůj kód vzorce, který vhodný pro daný druh objektu.

Distribuované posílání zpráv umožňuje vývojářům používat úroveň architektury, která poskytuje běžné služby, které budují systémy, skládajících se z "podsystémů", které běží na různorodých počítačích na různých místech a v různém čase. Když distribuovaný objekt posílá zprávu, tak odesílající vrstva se může postarat o problémy jako:

  • Nalezení vhodného objektu, včetně objektů, které běží na různých počítačích, používajících různé operační systémy nebo programovací jazyky a které běží na různých místech, odkud zpráva pochází.
  • Uložení zprávy do fronty, pokud není příslušný objekt pro zpracování zpráv v současné době spuštěný a pak se také postará o vyvolání zprávy, když je objekt je k dispozici. Také v případě potřeby řeší ukládání výsledku do doby, než je vysílající objekt připraven ji přijmout.
  • Ovládání různých transakčních požadavků pro distribuované transakce, např. zajištění ACID vlastnosti na data.

Reference

V tomto článku byl použit překlad textu z článku Message passing na anglické Wikipedii.

Související články