Ho pensato al modo migliore per implementare il middleware nella mia applicazione web e mi ha fatto pensare, in che modo il middleware è diverso dagli eventi?
Diciamo che prima che un controller venga eseguito voglio verificare che l'IP da cui proviene la richiesta non sia nella lista nera. Creo un nuovo middleware o registro un listener per un evento OnRequest
o BeforeController
? Questi due non ottengono la stessa cosa? Entrambi vengono eseguiti prima del controller e hanno la possibilità di eseguire azioni in base al contenuto della richiesta.
Suppongo che differiscano nel modo in cui il middleware è più incentrato sull'idea del controller before / after, in cui gli eventi possono essere utilizzati per tutti i tipi di cose nell'intera applicazione.
C'è anche il fatto che probabilmente non si desidera eseguire quel controllo IP su ogni richiesta in modo da avere un modo per escludere / includere il controllo per determinati controllori. Ciò sarebbe in qualche modo hacky con gli eventi poiché l'idea alla base di questi è che i loro ascoltatori vengono chiamati ogni volta che l'evento viene infornato.
Queste sono le uniche differenze o c'è qualcosa che mi manca?