Naudodami MSMQ ("Microsoft Message Queue"), programų kūrėjai gali patogiai greitai ir patikimai bendrauti su programomis siųsdami ir gaudami pranešimus. Pranešimų apdorojimas suteikia jums patikimą saugų būdą garantuoti pranešimus ir atlikti daugelį verslo procesų.
MSMQ, kaip ir XML Web Services ir .Net Remoting, yra paskirstyta kūrimo technologija. Tačiau naudojant XML Web Services arba .Net Remoting komponentus, klientas turi keistis informacija su serveriu realiuoju laiku, o serveris turi likti prisijungęs. MSMQ gali veikti, kai serveris neprisijungęs, laikinai įrašydamas pranešimą pranešimų eilėje kliento pusėje ir siunčiant jį į serverį apdoroti, kai jis yra prisijungęs.
Akivaizdu, kad MSMQ netinka situacijai, kai klientui reikia laiku atsakyti iš serverio, o MSMQ sąveikauja su serveriu asinchroniniu būdu, todėl nereikia jaudintis dėl to, kad serveris ilgai apdoros.
Nors XML žiniatinklio tarnybos ir .Net Remoting suteikia savybę [OneWay] asinchroniniams skambučiams apdoroti, ji naudojama sprendžiant ilgų metodo iškvietimų serverio pusėje problemą, ilgą laiką blokuojančią kliento pusę. Tačiau tai negali išspręsti didelės kliento apkrovos problemos, o serveris priima užklausas greičiau, nei gali apdoroti.
Apskritai atributas [OneWay] nenaudojamas specializuotose pranešimų siuntimo paslaugose.
1. Pagrindinės sąvokos ir sąvokos
"Pranešimas" yra duomenų vienetas, perduodamas tarp dviejų kompiuterių. Pranešimai gali būti labai paprasti, pavyzdžiui, juose gali būti tik teksto eilutės; Jis taip pat gali būti sudėtingesnis ir jame gali būti įterptų objektų.
Pranešimai siunčiami į eilę. "Pranešimų eilė" yra konteineris, kuriame laikomi pranešimai jų perdavimo metu. Pranešimų eilės tvarkyklė veikia kaip tarpininkas perduodant pranešimus iš šaltinio į paskirties vietą. Pagrindinis eilės tikslas yra užtikrinti maršrutizavimą ir garantuoti pranešimų pristatymą; Jei gavėjas nepasiekiamas, kai siunčiamas pranešimas, pranešimų eilėje laikomas pranešimas, kol jis bus sėkmingai pristatytas.
"Pranešimų eilė" yra "Microsoft" pranešimų apdorojimo technologija, suteikianti pranešimų apdorojimo ir pranešimų eilės galimybes bet kuriai programai bet kuriame kompiuterių derinyje, kuriame įdiegta "Microsoft Windows", nepriklausomai nuo to, ar jie tuo pačiu metu yra tame pačiame tinkle, ar prisijungę.
"Pranešimų eilės tinklas" yra bet kokia kompiuterių grupė, galinti siųsti pranešimus vienas kitam pirmyn ir atgal. Skirtingi tinklo kompiuteriai atlieka skirtingus vaidmenis užtikrinant, kad pranešimai būtų apdorojami sklandžiai. Kai kurie iš jų pateikia maršruto parinkimo informaciją, kad nustatytų, kaip siųsti pranešimus, kai kurie turi svarbią informaciją apie visą tinklą, o kai kurie tiesiog siunčia ir gauna pranešimus.
Diegdami pranešimų eilę, administratoriai nustato, kurie serveriai gali bendrauti tarpusavyje, ir nustato specialius vaidmenis konkretiems serveriams. Kompiuteriai, sudarantys šį "pranešimų eilių" tinklą, vadinami "svetainėmis" ir yra sujungti vienas su kitu "svetainių nuorodomis". Kiekviena svetainės nuoroda turi susietą pridėtinę kainą, kurią nustato administratorius ir nurodo, kaip dažnai pranešimai pristatomi naudojant šią svetainės nuorodą.
Pranešimų eilės administratorius taip pat nustato vieną ar kelis tinklo kompiuterius, kurie veikia kaip maršruto parinkimo serveriai. Maršruto parinkimo serveris peržiūri kiekvienos svetainės nuorodos pridėtines išlaidas, kad nustatytų greičiausią ir efektyviausią būdą pristatyti pranešimą per kelias svetaines, kad nustatytų, kaip pristatyti pranešimą.
2. Eilės tipas
Yra du pagrindiniai eilių tipai: jūsų arba kitų tinklo vartotojų sukurtos eilės ir sistemos eilės.
Vartotojo sukurta eilė gali būti bet kuri iš šių rūšių:
Viešosios eilės replikuojamos visame pranešimų eilės tinkle ir jas gali pasiekti visos prie tinklo prijungtos svetainės.
Privačios eilės tinkle nepublikuojamos. Vietoj to, jie pasiekiami tik vietiniame kompiuteryje, kuriame jie gyvena. Privačias eiles gali pasiekti tik tos programos, kurios žino visą eilės kelio pavadinimą arba žymą.
Valdymo eilėje yra pranešimų, patvirtinančių pranešimų kvitus, išsiųstus tam tikrame pranešimų eilės tinkle. Nurodykite valdymo eilę, kurią norite naudoti MessageQueue komponentui, jei toks yra.
Atsakymų eilėje yra atsakymų pranešimai, kurie grąžinami siunčiančiajai programai, kai paskirties programa gauna pranešimą. Nurodykite atsakymų eilę, kurią norite naudoti MessageQueue komponentui, jei toks yra.
Sistemos generuojamos eilės paprastai skirstomos į šias kategorijas:
Žurnalo eilė pasirinktinai saugo išsiųstų pranešimų kopijas ir iš eilės pašalintų pranešimų kopijas. Vieno žurnalo eilėje kiekviename pranešimų eilės kliente saugoma iš to kompiuterio išsiųstų pranešimų kopija. Kiekvienai serverio eilei sukuriama atskira dienoraščio eilė. Šis žurnalas seka pranešimus, kurie pašalinami iš tos eilės.
Negyvų laiškų eilėje saugomos pranešimų, kurių negalima pristatyti arba kurių galiojimo laikas pasibaigęs, kopijos. Jei pranešimas, kurio galiojimo laikas baigiasi arba kurio negalima pristatyti, yra transakcinis, jis saugomas specialioje negyvų laiškų eilėje, vadinamoje "operacijų negyvų laiškų eile". Negyvos raidės saugomos kompiuteryje, kuriame yra pasibaigęs pranešimas. Daugiau informacijos apie skirtojo laiko ir galiojimo pabaigos pranešimus rasite Numatytosios pranešimo ypatybės.
Ataskaitų eilėje yra pranešimų, nurodančių maršrutą, kuriuo pranešimas pasiekia paskirties vietą, taip pat gali būti bandomųjų pranešimų. Kiekviename kompiuteryje gali būti tik viena ataskaitų eilė.
Dedikuota sistemos eilė yra tam skirtų eilių serija, kurioje saugomi valdymo ir pranešimų pranešimai, reikalingi sistemai pranešimų apdorojimo operacijoms atlikti.
Didžioji dalis programoje atliekamo darbo apima prieigą prie viešųjų eilių ir jų pranešimų. Tačiau, atsižvelgiant į programos žurnalą, patvirtinimą ir kitus specialius apdorojimo poreikius, tikėtina, kad kasdienėse operacijose bus naudojamos kelios skirtingos sistemos eilės.
3. Sinchroninis VS. Asinchroninis ryšys
Ryšys eilėje iš esmės yra asinchroninis, nes pranešimai siunčiami ir gaunami iš eilės skirtingais procesais. Be to, gavimo operaciją galima atlikti asinchroniškai, nes asmuo, norintis gauti pranešimą, gali iškviesti BeginReceive metodą į bet kurią eilę ir nedelsdamas tęsti kitas užduotis, nelaukdamas atsakymo. Tai labai skiriasi nuo to, ką žmonės žino kaip "sinchroninį bendravimą".
Sinchroninio ryšio metu užklausos siuntėjas turi laukti numatyto gavėjo atsakymo prieš atlikdamas kitas užduotis. Siuntėjo laukimo laikas visiškai priklauso nuo to, kiek laiko gavėjas apdoroja užklausą ir išsiunčia atsakymą.
4. Sąveika su pranešimų eilėmis
Pranešimų apdorojimas ir pranešimai suteikia galingą ir lankstų mechanizmą tarpusavio ryšiui tarp serverio programų komponentų. Jie turi keletą privalumų, palyginti su tiesioginiu iškvietimu tarp komponentų, įskaitant:
Stabilumas – komponentų gedimai paveikia pranešimus daug mažiau nei tiesioginiai skambučiai tarp komponentų, nes pranešimai saugomi eilėje ir lieka tol, kol jie tinkamai apdorojami. Pranešimų apdorojimas yra panašus į operacijų apdorojimą, nes pranešimų apdorojimas yra garantuotas. Pranešimų prioritetų nustatymas – skubesni ar svarbesni pranešimai gali būti gauti prieš palyginti nesvarbius pranešimus, todėl galite užtikrinti tinkamą atsakymo laiką kritinėms programoms. Galimybė neprisijungus – kai siunčiami pranešimai, jie gali būti siunčiami į laikiną eilę ir likti ten, kol bus sėkmingai pristatyti. Kai dėl kokių nors priežasčių prieiga prie norimos eilės nepasiekiama, vartotojas gali tęsti veiksmą. Tuo pačiu metu kitos operacijos gali būti tęsiamos taip, lyg pranešimas būtų apdorotas, nes atkūrus tinklo ryšį pranešimų pristatymas garantuojamas. Operacijų pranešimų apdorojimas – suporuokite kelis susijusius pranešimus į vieną operaciją, kad užtikrintumėte, jog pranešimai bus pristatomi nuosekliai, tik vieną kartą ir juos būtų galima sėkmingai nuskaityti iš paskirties eilės. Jei yra klaidų, visa operacija atšaukiama. Sauga – pranešimų eilės technologija, kuria pagrįstas komponentas "MessageQueue", naudoja "Windows" saugą, kad apsaugotų prieigos valdymą, tikrintų ir užšifruotų bei autentifikuotų komponento siunčiamus ir gaunamus pranešimus.
5. Parašykite paprastą pranešimų eilės programą .Net aplinkoje
(1) Pirmiausia įdiekite pranešimų eilės paslaugas
Įdiekite MSMQ per valdymo skydelį, veiksmą "Pridėti / pašalinti programas" – "Pridėti / pašalinti Windows komponentus".
MSMQ galima įdiegti darbo grupės arba domeno režimu. Jei diegimo programa neranda serverio, kuriame veikia pranešimų eilė, teikianti katalogų tarnybas, ją galima įdiegti tik darbo grupės režimu, o pranešimų eilė šiame kompiuteryje palaiko tik privačių eilių kūrimą ir tiesioginių ryšių su kitais kompiuteriais, kuriuose veikia pranešimų eilės, kūrimą.
(2) Konfigūruokite MSMQ
Atidarykite kompiuterio valdymą – pranešimų eilę ir sukurkite MSMQDemo eilę privačiose eilėse
(3) Rašyti kodą - tiesiog parodyti MSMQ objektą
MessageQueue klasė yra apvyniojimas aplink "pranešimų eilę". Klasė MessageQueue pateikia nuorodą į pranešimų eilės eilę. Galite nurodyti kelią į esamą išteklių MessageQueue konstruktoriuje arba galite sukurti naują eilę serveryje. Kad galėtumėte iškviesti siuntimą, peržiūrą arba gavimą, turite susieti naują MessageQueue klasės egzempliorių su esama eile.
"MessageQueue" palaiko dviejų tipų pranešimų gavimą: sinchroninį ir asinchroninį. Dėl sinchronizuotų peržiūros ir gavimo metodų proceso gija laukia, kol nurodytu intervalu į eilę atvyks naujas pranešimas. Asinchroniniai BeginPeek ir BeginReceive metodai leidžia pagrindinę programos užduotį toliau vykdyti atskiroje gijoje, kol pranešimas pasiekia eilę. Šie metodai veikia naudojant atgalinio iškvietimo objektus ir būsenos objektus, kad palengvintų informacijos perdavimą tarp gijų.
Šaltinio kodo atsisiuntimas:
Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašome Atsakyti
|