Evoluția ludoprogramming.com – de la Web Forms la arhitectură modernă
Orice proiect tehnic care trăiește suficient de mult ajunge, inevitabil, să reflecte evoluția tehnologiilor, a experienței dezvoltatorului și a obiectivelor inițiale. ludoprogramming.com nu este doar un blog tehnic, ci și un jurnal real al deciziilor arhitecturale, al experimentelor reușite (și mai puțin reușite) și al adaptării continue.
Acest articol urmărește cronologic transformările prin care a trecut site‑ul, de la primele linii de cod scrise în Web Forms până la discuția despre un posibil viitor bazat pe Azure Functions și o arhitectură orientată pe servicii.
1. Începuturile: ASP.NET Web Forms + .NET Framework + SQL Server
Prima versiune a site‑ului a fost construită folosind:
-
ASP.NET Web Forms
-
.NET Framework
-
SQL Server ca bază de date
La momentul respectiv, Web Forms oferea un mod rapid de a construi aplicații web dinamice, cu o curbă de învățare relativ mică. Modelul event‑based și controalele server‑side au fost potrivite pentru început, însă au venit la pachet cu:
-
logică puternic legată de UI
-
dificultăți de testare
-
control limitat asupra HTML‑ului generat
Această etapă a fost esențială pentru formarea bazei, dar și pentru a înțelege ce limitări apar în proiectele care cresc în timp.
2. Trecerea la .NET Core și Azure Web App
Următorul pas natural a fost migrarea către:
-
ASP.NET Core
-
Azure Web App pentru hosting
Această mutare a adus beneficii clare:
-
performanță mai bună
-
configurare modernă (dependency injection nativ)
-
separare mai clară a responsabilităților
-
integrare facilă cu ecosistemul Azure
Site‑ul a devenit mai stabil, mai ușor de întreținut și pregătit pentru extindere.
3. Bootstrap, MySQL și mutarea pe Ubuntu VM în Azure
Odată cu maturizarea proiectului, au apărut și alte schimbări importante:
UI & Design
-
aplicarea unei teme Bootstrap pentru un aspect modern și responsive
Backend & infrastructură
-
migrarea de la SQL Server la MySQL
-
deploy pe Ubuntu VM în Azure
-
configurare Nginx ca server principal
-
Apache păstrat ca entry point, cu redirect către Nginx
Această etapă a fost una profund tehnică, axată pe:
-
înțelegerea administrării unui server Linux
-
configurarea corectă a reverse proxy‑ului
-
control total asupra mediului de rulare
A fost un pas important de la „platform as a service” către „infrastructure as a service”.
4. Experiment: Blazor WebAssembly
Din dorința de a învăța și experimenta tehnologii moderne din ecosistemul .NET, site‑ul a fost refactorizat într‑o versiune bazată pe:
-
Blazor WebAssembly
-
o nouă temă Bootstrap
Obiectivul acestei etape nu a fost neapărat producția, ci:
-
înțelegerea modelului SPA în .NET
-
analiza experienței de dezvoltare cu Blazor
-
testarea performanței și a flexibilității
Concluzia rapidă
Pentru un blog orientat pe conținut, problema majoră a fost SEO:
-
randare client‑side
-
indexare slabă în motoarele de căutare
-
timp mai mare până la afișarea conținutului
Deși Blazor este o tehnologie excelentă în anumite contexte, pentru acest caz de utilizare nu a fost alegerea optimă.
5. Revenirea la MVC + API (cu lecțiile învățate)
După experimentul Blazor, decizia a fost una pragmatică:
-
revenire la ASP.NET MVC pentru UI
-
API separat pentru logică și date
-
păstrarea aceleiași teme Bootstrap
Această arhitectură a oferit:
-
SEO excelent
-
separare clară între prezentare și backend
-
posibilitatea de a extinde API‑ul pentru alte clienți (mobile, MAUI, SPA)
Practic, site‑ul a devenit mai matur și mai aproape de un produs real, nu doar de un experiment.
6. Care ar putea fi următorul pas?
Web App pentru UI + Azure Functions pentru backend
Un pas firesc în evoluția proiectului ar putea fi:
-
Web App (MVC sau chiar Razor Pages) strict pentru UI
-
înlocuirea API‑ului clasic cu Azure Functions
Beneficii
-
arhitectură serverless
-
scalare automată
-
costuri optimizate
-
funcții mici, bine delimitate (articole, comentarii, search, admin)
Practic
-
UI → Azure Web App
-
Backend → Azure Functions (HTTP triggered)
-
posibilă tranziție către o arhitectură microservicii light
Această abordare ar transforma ludoprogramming.com într‑un exemplu real de arhitectură modernă, perfect aliniată cu temele discutate pe blog.
Concluzie
Evoluția ludoprogramming.com nu este despre „rescrierea codului”, ci despre:
-
învățare continuă
-
adaptare la context
-
luarea deciziilor potrivite pentru scopul aplicației
Fiecare etapă a avut rolul ei și a contribuit la nivelul actual de maturitate. Următorul pas nu este neapărat o schimbare radicală, ci o rafinare a arhitecturii — exact așa cum ar trebui să evolueze orice proiect tehnic sănătos.