Il ciclo di richiesta / risposta

4

Quando l'utente A decide di visitare il link tutto inizia con una richiesta. Un breve momento dopo gli viene data una risposta. In questo ciclo, Request-Response sta succedendo molto, in diversi framework è disaccoppiato in diverse componenti tra cui Routing, Dispatching, ecc.

Sto cercando di creare un semplice MVP Framework sperimentale per il mio apprendimento, cercando di utilizzare il maggior numero di best practice, diamine a chi sa che potrebbe valerne la pena anche quando ho finito.

Non sono sicuro di come dovrei disaccoppiare questo ciclo in questi diversi componenti e non sono nemmeno sicuro di cosa sia responsabile ciascun componente (Thinking SOLID, DRY, SRP, ecc.). Questo è quello che sto chiedendo, osservando diversi framework questi componenti sembrano avere aree di utilizzo diverse di volta in volta.

Qual è la responsabilità di ciascuno di questi componenti e in che ordine viene utilizzato?

Richiesta, risposta, dispatcher, router, controller anteriore, bootstrap, eventi.

    
posta user2141625 19.05.2013 - 14:49
fonte

1 risposta

1

Bootstrap

Il file bootstrap è il punto di ingresso dell'applicazione ( index.php ). Contiene codice nell'ambito globale (e questo è l'unico posto, dove dovrebbe essere il caso). In una struttura, lo fa

  • crea un oggetto richiesta dalla richiesta
  • crea un oggetto risposta in base al tipo di risorsa richiesta
  • chiedi al router per il responsabile responsabile della richiesta corrente
  • crea il controller e chiama il suo metodo principale, fornendogli gli request e answer (questo spesso viene chiamato dispatching )
  • echo la risposta

Richiesta

L'oggetto richiesta viene utilizzato per astrarre dall'ambiente web. Alla fine, è solo un contenitore di dati (spesso una copia di $_REQUEST ) che ti permette di effettuare chiamate successive ad altri controller (vedi HMVC ).

risposta

L'oggetto risposta sta gestendo l'output. Potresti avere classi di risposta diverse per XHTML, HTML5, PDF, JSON, ..., tu_name_it con un'interfaccia identica. È responsabile anche per gli avvisi e gli errori di messaggistica.

Router

Il router sa, a quale controller è assegnato il tipo di URL. Data la richiesta , prende una decisione sul controllore e lo restituisce al bootstrap .

Dispatcher

Un dispatcher viene utilizzato in diverse situazioni. Potresti pensarci come una mappa e chiamare thingest. Nel nostro caso, il file bootstrap e il router costituiscono insieme un dispatcher. Un dispatcher viene anche utilizzato per mappare eventi ai vari gestori di eventi (plugin) ed eseguirli (spesso usando il pattern Observer ).

Controller anteriore

Un dispatcher che collega gli URL ai controllori ed eseguirli a seconda della richiesta viene anche definito front controller .

Eventi

il meccanismo evento viene utilizzato per disaccoppiare i sistemi. Puoi ad esempio creare plugin che influenzano il risultato del router. L'unica cosa che devi fare è inviare alcuni eventi (ad esempio onBeforeRoute o onAfterRoute ) nel metodo di routing. onBeforeRoute otterrebbe la richiesta e potrebbe cambiarlo, prima ancora che il router lo guardi; onAfterRoute sarebbe in grado di cambiare l'uscita del router. Questo è solo un piccolo esempio di cosa puoi fare con gli eventi.

    
risposta data 21.05.2013 - 16:55
fonte