Introducere în Lumen

Lumen este un brand nou de tip micro-framework dezvoltat de autorul cadrului Laravel, Taylor Otwell. Nu stresați, totuși - Lumen nu este menit să înlocuiască Laravel. De fapt, ideea din spatele Lumen este că aceasta completează aplicațiile existente sau viitoare ale Laravel.

Taylor Otwell a dezvoltat Lumen cu câteva scopuri foarte specifice, și anume, microservice și API-uri. Doar pentru scurt timp, un microserviciu este un proces mai mic, decuplat care comunică cu o aplicație mai mare, de ex. aplicația noastră Laravel.

În acest articol vreau să trec peste ceea ce este diferit în Lumen, atunci când ar trebui să folosim Lumen și cum putem folosi Lumen. Voi explica, de asemenea, modul în care putem lua aplicația noastră Lumen și o putem migra cu ușurință într-o aplicație full-stack Laravel. Nu va fi o mulțime de cod, așa cum Lumen este la fel ca Laravel. Să începem.

Deci ce este nou?

Aceasta va fi probabil prima întrebare pe care mulți dintre voi o veți întreba. În realitate, nu un întreg este de fapt "nou" cu Lumen în afară de lipici. Lumen utilizează încă majoritatea componentelor Iluminate care alcătuiesc cadrul Laravel (există doar un cuplu care lipsește). Gândește-te la asta ca la o instalare a lui Laravel. 

Scopul său este de a maximiza performanța și pentru a obține această creștere a performanței, au fost schimbate câteva lucruri. Cele mai importante dintre acestea sunt următoarele:

  1. Mai puțină configurație. O mare parte din Lumen vine preconfigurat. De fapt, veți găsi că nu există config director într-o instalare Lumen. În schimb, veți utiliza .env fișiere pentru a configura majoritatea aplicației.
  2. Router diferit. Aceasta este probabil cea mai mare diferență și motivul pentru care poate fi cât de repede este. Lumen nu utilizează routerul Symfony ca și fratele său Laravel. Dimpotrivă, Lumen utilizează FastRoute, o aplicație de rutare ușoară dezvoltată de Nikita Popov.

Există câteva compromisuri aici. FastRoute este o implementare foarte rapidă, dar nu este la fel de plină de caracteristici ca routerul Symfony. Dacă doriți să utilizați rutarea sub-domeniu, atunci va trebui să vă lipiți de o instalare Laravel care utilizează routerul Symfony. 

Celălalt compromis care merită menționat este că, pentru un control mai bun asupra configurației anumitor componente, va trebui să modificați fișierele de configurare în cadrul furnizor / laravel / lumen-cadru director. Majoritatea configurației se poate realiza prin .env fișiere, dar unele lucruri mai puțin configurate nu sunt direct configurabile.

Ar trebui să trec la Lumen chiar acum?

Răspunsul de aici va depinde, dar probabil nu. Dacă dezvoltați sau ați dezvoltat o aplicație pe Laravel (4 sau 5), probabil că nu va trebui să treceți la Lumen chiar acum. În timp ce Lumen este capabil să dezvolte o aplicație web plină, este mai potrivită pentru serviciile și API-urile mai mici, decuplate.

Deci, când pot să-l folosesc?

Nu vă pot spune când puteți și nu puteți folosi un cadru disponibil pentru dvs. Cu toate acestea, voi face câteva recomandări cu privire la momentul în care vă recomandăm să utilizați Lumen pentru o parte a proiectului următor.

Să presupunem că construiți o aplicație mare de magazin web. Deci, mergeți mai departe și instalați Laravel și începeți să lucrați cu o aplicație monolitică. Acum, nu este nimic în neregulă cu această abordare, și veți găsi că funcționează bine pentru dvs. Dacă da, continuați. Dacă găsiți că deveniți copleșiți de complexitate sau că lucrurile par să fie puțin înlăturate, atunci poate doriți să o împărțiți în niște piese mai mici, mai ușor de gestionat.

Ați folosi Lumen pentru a crea aplicații separate pentru fiecare serviciu decuplat. Pentru magazinul nostru am putea împărți facturile, notificările prin e-mail, expedierea și urmărirea pentru a separa aplicațiile. Fiecare dintre aceste aplicații ar fi o instalare Lumen autonome și fiecare aplicație ar face doar o sarcină specifică. 

Pentru a permite aplicației noastre principale să comunice cu serviciile noastre decuplate, vom face uz de cozi și de un serviciu precum Amazon SQS. Putem folosi cozile de așteptare pentru a coborî ușor locurile de muncă, iar fiecare serviciu ar asculta pentru anumite locuri de muncă și le va procesa în așteptare. Beneficiul acestei abordări este acela că fiecare serviciu poate fi scalat și desfășurat independent una de cealaltă. 

Puteți utiliza, de asemenea, Lumen pentru a construi un API care ar putea fi, de asemenea, consumat de aplicația dvs. principală cu ajutorul unui client HTTP, cum ar fi Guzzle. Această decuplare vă permite să scalați și să optimizați partea de afaceri a aplicației fără a interfera cu restul.

Bine, cum îl folosesc?

Până acum, ar trebui să aveți o idee bună dacă să folosiți sau nu Lumen este pasul potrivit pentru dvs. Instalarea Lumen este la fel de ușor ca instalarea Laravel: o simplă compozitor crea-proiect comanda sau puteți instala lumen să creeze noi proiecte. Vom folosi doar Compozitor pentru a lua o instalare proaspătă.

compozitor crea-proiect laravel / lumen LumenProject - preferat-dist

Compozitorul va trage în jos toate dependențele. Puteți utiliza Artisan pentru a servi rapid aplicația pentru a arunca o privire sau puteți crea un site gazdă sau Homestead. Oricum, odată ce ați lovit calea către instalarea dvs. Lumen, veți vedea pagina stralucitoare care vă informează că Lumen este bine să mergeți.

Configurația este făcută în .env fișiere, deci fie veți dori să le redenumiți .env.example fișier sau copiați conținutul acestuia într-un fișier nou.

Bootstrappingul rămas pe care veți dori să îl cunoașteți este în bootstrap / app.php fişier. Dacă utilizați .env configurație menționată mai sus, atunci veți dori să vă dezactivați Dotenv :: încărcare (__ DIR __. '/ ... /');. Derulați prin acest fișier veți vedea mai multe linii comentate pe care ați putea dori să le dezactivați. Există încărcarea de fațade, Elocvent, unele middleware și înregistrarea altor furnizori de servicii.

Acum ți-ai găsit o copie proaspăt instalată și configurată a lui Lumen, gata să construiască ceva uimitor.

Dar așteptați, am nevoie de Laravel acum!

S-ar putea să vă construiți aplicația Lumen și totul merge absolut bine, până la o zi plină de fapte, când îți dai seama că ai nevoie de ceva care oferă doar schema full-stack Laravel. Nu vă faceți griji, totuși, deoarece este un upgrade extrem de nedureros. Iată pașii următori:

  1. Instalați o copie nouă a lui Laravel 5.
  2. Copiați-vă peste aplicaţia director. Fiți conștient de faptul că este posibil să aveți nevoie de câteva lucruri de la L5 aplicaţia , cum ar fi furnizorii.
  3. Copiați configurația dvs. în fișierul corespunzător din config director.
  4. Copiați orice bootstrapping personalizat.
  5. Remediați câteva trasee. Deoarece Lumen folosește FastRoute, va trebui probabil să modificați unele dintre rutele dvs. astfel încât să fie compatibile cu routerul Symfony.

Aceasta ar trebui să fie cea mai mare parte a ceea ce trebuie să copiați pentru a migra aplicația dvs. Lumen la Laravel. Desigur, acest lucru funcționează în ambele sensuri, astfel încât să puteți migra cu ușurință o aplicație Laravel la Lumen dacă vă dați seama că nu aveți nevoie de tot ceea ce oferă pachetul full-stack.

Concluzie

Pentru a încheia acest lucru, vreau doar să subliniez că susțin utilizarea Lumen în principal pentru servicii decuplate și API-uri, ceea ce este destinația sa. Asta nu înseamnă că nu poți construi o întreagă aplicație pe Lumen, pentru că poți. Dacă alegeți să faceți acest lucru, este bine. Nu există reguli sculptate într-o tabletă de piatră care să vă spună ce puteți și nu puteți folosi pentru proiectele dvs. La sfârșitul zilei, decizia este lăsată de tine. Cântăriți opțiunile, planificați-vă proiectul, decideți ce veți avea nevoie, consultați echipa, apoi luați decizia finală.

Cod