Torniamo a un classico del blog di LaraMind: i confronti. Quello di oggi si svolge “in famiglia”: difatti parleremo di Lumen, che può essere considerato il fratello minore di Laravel (in quanto è stato anch’esso creato da Taylor Otwell) e lo confronteremo proprio con quest’ultimo.
Differenze fra Laravel e Lumen
La macro differenza tra i due framework sta nella velocità di elaborazione delle request: Lumen è nato esattamente per questo scopo, sacrificando però la flessibilità e le funzionalità che sono proprie di Laravel. Molti lo definiscono un “micro-framework”, anche per via dei suoi pochissimi file che compongono il suo repository, e quindi il suo utilizzo non è, probabilmente, idoneo a tutte le esigenze.
Ad esempio, le Facade sono disabilitate di default, proprio per rendere tutto il funzionamento meno macchinoso possibile. Inoltre, anche la fase di boot di Lumen è stata completamente rivista rispetto a Laravel e resa estremamente performante per abbattere i tempi di attesa.
Cheman Garrido, in questo articolo sul suo blog, ha effettuato dei test, confrontando PHP7, Lumen (in una sua primissima release) e Laravel 5.3. Dalla tabella riepilogativa, si vede chiaramente che, in un tempo molto simile, il numero di transaction al secondo effettuate da Lumen è nettamente maggiore (158,28 rispetto alle 134,63 di Laravel).
Inoltre, a partire dalla release 5.2.0 (l’ultima, al momento in cui questo articolo viene scritto, è la 5.4.0), lo sviluppo di Lumen si è allontanato sempre più verso dalle esigenze di chi utilizza un framework MVC in maniera “classica”, piuttosto questa release rappresenta un passaggio ulteriore verso la semplificazione, focalizzandosi unicamente sui microservizi (come quelli stateless), JSON e API. Difatti, feature come le sessioni, l’autenticazione e le view, funzioni familiari a chi usa Laravel, non sono nemmeno incluse.
Lumen, però, è facilmente upgradabile a Laravel: difatti basta importare il codice del primo in un’installazione del secondo, e il gioco è fatto. Ciò è possibile proprio grazie al fatto che entrambi sono sviluppati a partire dalle stesse componenti base.
Inoltre, niente vieta di utilizzare i due “fratelli” insieme: sfruttando le peculiarità di entrambi, è possibile realizzare un sistema opportunamente ottimizzato, rendendolo estremamente veloce ma al tempo stesso versatile e potente.
Come abbiamo visto, non crediamo che mettere in competizione Laravel e Lumen sia una scelta logica e utile: non li consideriamo due rivali, piuttosto due progetti paralleli, ognuno con degli scopi e degli utilizzi specifici. Questo permette “ai due” di non “pestarsi i piedi”, del resto creare questo “tipo specifico di concorrenza” per uno come Taylor Otwell non avrebbe avuto molto senso.