S MSMQ (Microsoft Message Queue) mohou vývojáři aplikací pohodlně a spolehlivě komunikovat s aplikacemi prostřednictvím odesílání a přijímání zpráv. Zpracování zpráv vám poskytuje spolehlivou a spolehlivou metodu pro zaručené sdělování a provádění mnoha obchodních procesů.
MSMQ, podobně jako XML webové služby a .Net Remoning, je distribuovaná vývojová technologie. Při použití XML webových služeb nebo .Net vzdálených komponent však klient musí v reálném čase vyměňovat informace se serverem a server musí zůstat online. MSMQ může fungovat, když je server offline, dočasně uloží zprávu do fronty zpráv na straně klienta a poté ji odešle serveru ke zpracování, když je online.
Je zřejmé, že MSMQ není vhodné pro situaci, kdy klient musí ze serveru reagovat včas, a MSMQ komunikuje se serverem asynchronně, takže není třeba se obávat dlouhého čekání na zpracování serveru.
Ačkoli jak XML webové služby, tak .Net Remoting poskytují vlastnost [OneWay] pro zpracování asynchronních hovorů, používá se k řešení problému dlouhých volání metod na straně serveru, které dlouho blokují klientskou stranu. Problém velkého zatížení klienta však nemůže vyřešit a server přijímá požadavky rychleji, než je schopen zpracovat.
Obecně se atribut [OneWay] nepoužívá ve specializovaných komunikačních službách.
1. Základní pojmy a pojmy
"Zpráva" je jednotka dat, která je přenášena mezi dvěma počítači. Zprávy mohou být velmi jednoduché, například obsahují pouze textové řetězce; Může být také složitější a může obsahovat vložené objekty.
Zprávy jsou posílány do fronty. "Fronta zpráv" je kontejner, který uchovává zprávy během jejich přenosu. Správce fronty zpráv funguje jako prostředník při přeposílání zpráv ze zdroje do cíle. Hlavním účelem fronty je zajistit směrování a zaručit doručení zpráv; Pokud je příjemce nedostupný při odeslání zprávy, fronta zpráv ji uchovává, dokud nebude úspěšně doručena.
"Message Queuing" je technologie zpracování zpráv společnosti Microsoft, která poskytuje možnosti zpracování zpráv a frontování zpráv pro jakoukoli aplikaci v libovolné kombinaci počítačů s nainstalovaným systémem Microsoft Windows, bez ohledu na to, zda jsou ve stejné síti nebo online ve stejný čas.
"Síť fronty zpráv" je jakákoli skupina počítačů, která si může vysílat zprávy mezi sebou. Různé počítače v síti hrají různé role při zajištění hladkého zpracování zpráv. Některé z nich poskytují směrovací informace k určení, jak odesílat zprávy, jiné obsahují důležité informace o celé síti a některé pouze odesílají a přijímají zprávy.
Během instalace fronty zpráv administrátoři určují, které servery mohou mezi sebou komunikovat, a nastavují speciální role pro konkrétní servery. Počítače, které tvoří tuto síť "front zpráv", se nazývají "site" a jsou propojeny "site linky". Každý sitelink má přiřazenou "režijní režii", kterou určuje administrátor a udává, jak často jsou zprávy doručovány přes tento sitelink.
Správce fronty zpráv také nastavuje jeden nebo více počítačů v síti, které fungují jako směrovací servery. Směrovací server analyzuje režijní zátěž každého sitelinku, aby určil nejrychlejší a nejefektivnější způsob doručení zprávy přes více webů a jak ji doručit.
2. Typ fronty
Existují dva hlavní typy front: fronty vytvořené vámi nebo jinými uživateli ve vaší síti a systémové fronty.
Uživatelem vytvořená fronta může být kteroukoliv z následujících:
Veřejné fronty jsou replikovány v celé síti fronty zpráv a mají potenciál být přístupné všemi místy připojenými k síti.
Soukromé fronty nejsou publikovány v celé síti. Místo toho jsou dostupné pouze na lokálním počítači, kde se nacházejí. Soukromé fronty mohou přístupovat pouze aplikace, které znají celý název cesty nebo štítek fronty.
Správa fronty obsahuje zprávy, které potvrzují přijetí zpráv odeslaných v dané síti fronty zpráv. Určete správcovskou frontu, kterou chcete, aby komponenta MessageQueue používala, pokud nějaká je.
Fronta odpovědí obsahuje odpovědi, které jsou vráceny odesílající aplikaci, když cílová aplikace zprávu obdrží. Určete frontu odpovědí, kterou chcete, aby komponenta MessageQueue používala, pokud nějaká je.
Fronty generované systémem jsou obecně rozděleny do následujících kategorií:
Journal Queue volitelně ukládá kopie odeslaných zpráv a kopie zpráv odstraněných z fronty. Jedna deníková fronta na každém klientovi fronty zpráv ukládá kopii zpráv odeslaných z tohoto počítače. Pro každou frontu na serveru je vytvořena samostatná deníková fronta. Tento deník sleduje zprávy, které jsou z této fronty odstraněny.
Fronta mrtvých dopisů uchovává kopie zpráv, které nelze doručit nebo mají expiraci. Pokud zpráva, která vyprší nebo nemůže být doručena, je transakční, je uložena ve speciální frontě mrtvých písmen nazývané "transakční fronta mrtvých písmen". Mrtvé písmena jsou uložena v počítači, kde se nachází expirovaná zpráva. Pro více informací o časovém limitu a vypršení platnosti viz Výchozí vlastnosti zprávy.
Fronta hlášení obsahuje zprávy, které indikují trasu, kterou zpráva dorazí do cíle, a může také obsahovat testovací zprávy. Na každém počítači může být pouze jedna fronta pro hlášení.
Dedikovaná systémová fronta je série vyhrazených front, které uchovávají zprávy o správě a oznámení, jež systém potřebuje k provádění operací zpracování zpráv.
Většina práce v aplikaci zahrnuje přístup k veřejným frontám a jejich zprávám. Nicméně v závislosti na journalingu, potvrzování a dalších speciálních potřebách zpracování aplikace je pravděpodobné, že v každodenním provozu bude používáno několik různých systémových front.
3. Synchronní VS. asynchronní komunikace
Komunikace fronty je ze své podstaty asynchronní, protože odesílání zpráv do fronty a přijímání zpráv z ní probíhá v různých procesech. Operace přijímání může být také provedena asynchronně, protože osoba, která chce zprávu přijmout, může zavolat metodu BeginReceive do libovolné fronty a ihned pokračovat v dalších úkolech bez čekání na odpověď. To je velmi odlišné od toho, co lidé znají jako "synchronní komunikaci".
Při synchronní komunikaci musí odesílatel požadavku počkat na odpověď od zamýšleného příjemce, než začne vykonávat další úkoly. Doba, po kterou odesílatel čeká, závisí zcela na čase, který příjemce potřebuje k zpracování žádosti a odeslání odpovědi.
4. Interakce s frontami zpráv
Zpracování zpráv a zasílání zpráv poskytují výkonný a flexibilní mechanismus pro komunikaci mezi serverovými aplikačními komponentami. Nabízejí několik výhod oproti přímému vyvolání mezi komponentami, včetně:
Stabilita – Selhání komponent ovlivňuje zprávy mnohem méně než přímé volání mezi komponentami, protože zprávy jsou uloženy ve frontě a zůstávají tam, dokud nejsou správně zpracovány. Zpracování zpráv je podobné zpracování transakcí v tom, že zpracování zpráv je zaručené. Prioritizace zpráv – Naléhavější nebo důležitější zprávy lze přijmout dříve než relativně nepodstatné, takže můžete zajistit dostatečnou dobu odezvy pro kritické aplikace. Offline schopnost – Když jsou zprávy odeslány, mohou být odeslány do dočasné fronty a zůstanou tam, dokud nejsou úspěšně doručeny. Pokud není z jakéhokoliv důvodu přístup k požadované frontě dostupný, uživatel může pokračovat v akci. Současně mohou ostatní operace pokračovat, jako by byla zpráva zpracována, protože doručení zprávy je zaručeno při obnovení síťového připojení. Transakční zpracování zpráv – Spojte více souvisejících zpráv do jedné transakce, aby bylo zajištěno, že zprávy budou doručeny postupně, pouze jednou, a budou úspěšně získány z cílové fronty. Pokud dojde k chybám, celá transakce je zrušena. Bezpečnost – Technologie frontování zpráv, na které je komponenta MessageQueue založena, využívá Windows Security k zabezpečení kontroly přístupu, auditu a šifrování a ověřování zpráv odeslaných a přijatých komponentou.
5. Napsat jednoduchý program pro frontu zpráv v prostředí .Net
(1) Nejprve nainstalovat služby frontování zpráv
Nainstalujte MSMQ přes ovládací panel, krok "Přidat/Odebrat programy" – "Přidat/Odebrat komponenty Windows".
MSMQ lze nainstalovat buď v režimu pracovní skupiny, nebo v režimu domény. Pokud instalátor nenajde server provozující frontu zpráv poskytující adresářové služby, lze ji nainstalovat pouze v režimu pracovní skupiny a fronta zpráv na tomto počítači podporuje pouze vytváření soukromých front a přímé spojení s dalšími počítači provozujícími fronty zpráv.
(2) Konfigurovat MSMQ
Otevřená správa počítače – fronta zpráv a vytvoření MSMQDemo fronty pod soukromými frontami
(3) Napsat kód – jednoduše demonstrovat objekt MSMQ
Třída MessageQueue je obal kolem "message queue". Třída MessageQueue poskytuje odkaz na frontu Message Queue. Můžete zadat cestu k existujícímu zdroji ve konstruktoru MessageQueue, nebo vytvořit novou frontu na serveru. Než můžete volat Odeslat, Nahlédnout nebo Přijmout, musíte přiřadit novou instanci třídy MessageQueue k existující frontě.
MessageQueue podporuje dva typy vyhledávání zpráv: synchronní a asynchronní. Synchronizované metody Peek a Receive způsobují, že vlákno procesu čeká na novou zprávu, která dorazí do fronty v určeném intervalu. Asynchronní metody BeginPeek a BeginReceive umožňují hlavní aplikační úlohe pokračovat v samostatném vlákně dříve, než zpráva dorazí do fronty. Tyto metody fungují na základě použití callback objektů a stavových objektů k usnadnění komunikace informací mezi vlákny.
Stažení zdrojového kódu:
Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosím Odpověď
|