Modelul reactorului

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Modelul reactorului este un model de proiectare pentru programarea orientată spre evenimente și se încadrează în categoria modelelor concurente. Se aplică unui model Client-Server în care solicitările de la clienți pot ajunge oricând simultan. Se mai numește și un dispecer sau un notificator de evenimente .

Cerere

Acest model găsește aplicația în acele sisteme în care serverul trebuie să gestioneze cererile clientului simultan fără:

  • înghețați la nesfârșit gestionând o singură cerere,
  • prea multă dificultate pentru a adăuga funcții noi.

Structura

Soluția oferă un Dispatcher care trimite cererile clientului către managerul corespunzător, decuplând componentele software generale de cele specifice aplicației.

Componente

  • Resursă: un obiect care reprezintă o resursă a sistemului de operare utilizat de clienți, pe care operațiile pot fi blocate.
  • Demultiplexor de evenimente sincron: Ascultă evenimente pe un set de mânere. În C / C ++ pe sistemele UNIX , acest lucru poate fi implementat cu apelul de sistem select ().
  • Inițializator Dispatcher: definește metodele de înregistrare, eliminare și recuperare a obiectelor care gestionează evenimente ( gestionarea evenimentelor ).
  • Handler de evenimente: este o interfață generică care expune metoda handle_event (). Clasele derivate implementează această metodă după cum este necesar ( suprascrieți metoda)

Dinamica

  • Aplicația înregistrează un manipulator de evenimente concrete pe inițiatorul dispecerului și îi furnizează o referință la resursa corespunzătoare.
  • Inițiatorul creează o asociere între resursa pe care va avea loc un eveniment și gestionarul de evenimente capabil să îl gestioneze.
  • când un eveniment este detectat pe o resursă, demultiplexorul sincron apelează funcția handle_event () a gestionarului de evenimente corespunzător.

Proprietate

Beneficiile acestui model de programare sunt demultiplexarea independentă de aplicație și, prin urmare, reutilizabile, precum și modularitatea, extensia funcționalității de configurabilitate foarte ridicate.

Cu toate acestea, există și unele dezavantaje:

  • aplicabilitate restricționată : evenimentele trebuie să se refere la obiectele sistemului de operare și sistemul de operare trebuie să furnizeze un apel de sistem corespunzător selectului () în Unix .
  • nu există nicio preempțiune : dacă un gestionar de evenimente apelează o funcție de blocare, întregul sistem se blochează. Prin urmare, funcțiile de gestionare a evenimentelor trebuie să revină foarte repede pentru a maximiza concurența
  • depanarea este complicată, deoarece controlul oscilează între demultiplexor și gestionatorul de evenimente.

Bibliografie

  • Yves Roudier, „Sisteme distribuite și middleware”, Institut Eurécom 2015

Elemente conexe