Blazor e il Source Generator con le Roslyn API

Capita a tutti di invecchiare e rincoglionirsi, per me il processo è iniziato intorno all’adolescenza, ma è una sorte che prima o poi spetta a tutti quanti. Oddio sto iniziando con una digressione, ma se è all’inizio di un testo, può ancora essere chiamata digressione oppure può benissimo essere definita apertura a vuoto o ad-cazzum? Oh my God, sto introducendo una nuova digressione, sarà una re-digressione o una meta-digressione?!?!?!? OK stop…

Come scritto in precedenza ho ricominciato a scrivere codice su Blazor, non ne comprendo neanche io il reale motivo, forse non voglio essere uno sviluppatore à la page ma non voglio neanche diventare un dinosauro, mi piace piuttosto rimanere fra “tra incudine e martello”, non riscendo a decidere di quale morte voglia morire. Ho iniziato a sviluppare una serie di involucri (wrapper) per librerie API JavaScript, così da studiare le nuove strategie di sviluppo introdotte su Blazor, visto che ero rimasto fermo alle versione .NET 4.x, imparando a mie spese le peculiarità del nuovo JS Interop sviluppato da Microsoft. Uno dei primi problemi che mi sono trovato ad affrontare sin da (praticamente) subito è stato quello del dover creare script .JS personalizzati anche solo per leggere/scrivere una misera proprietà o invocare il costruttore di una classe JavaScript. Questo ha introdotto il “nuovo” (che poi tanto nuovo non era) problema del dover gestire il caricamento del modulo, coi relativi script JavaScript annessi, ed in modalità on-demand: ovvero solo quando ce ne fosse stato realmente bisogno. Questo ha introdotto una nuova problematica del dover gestire lo smaltimento del modulo una volta che…

… eh no, caro Zio Billy*, stavolta mi sono fatto furbo! 😏

(* Zio Billy per me sarebbe Bill Gates che non è più in Microsoft da 20 anni, ecco sono così vecchio io)

Continua a leggere “Blazor e il Source Generator con le Roslyn API” →

Ritorno a Blazor 🥳

Qualche anno fa avevo iniziato a studiare il framework Blazor quando era ancora basato sulla versione di .NET antecedente alla 5.0 (v3.1 del 2019), realizzando anche una piccola applicazione WebAssembly per processare tag audio col browser, ma incontrai molte difficoltà tecniche, principalmente nell’interoperabilità JavaScript / CSS, e soprattutto il paradigma della programmazione mi sembrava eccessivamente farraginoso. L’idea di sviluppare applicazioni web front-end con il magnifico linguaggio C# è molto attraente. Tuttavia, la piattaforma, basata esclusivamente sui browser, impone limiti significativi al livello di astrazione raggiungibile.

La visione (utopistica) per la quale nutrivo grandi speranze era di sviluppare 1, o al massimo 2 layer di librerie Blazor di basso livello per l’astrazione base fondamentale. Su questa base fondamentale, avrei poi potuto adattare una serie di librerie .NET C# di più alto livello che, in parte, avevo già sviluppato. Questo mi avrebbe consentito di disaccoppiare il codice di alto livello dalla piattaforma sottostante e poter poi realizzare, con lo stesso identico code base, sia applicazioni web sia la loro versione desktop … e anche mobile! Ecco è rimasto giusto un sogno perchè poi le cose sono andate totalmente in merda 😏

Ma oggi con Blazor basato su .NET 8/9 le cose sembrano essere migliorate…

Continua a leggere “Ritorno a Blazor 🥳” →

Blazor – .NET 5 RC1

Qualche giorno fa è stato rilasciato il nuovo .NET 5 (Release Candidate 1) che ha introdotto alcune interessanti novità nel comparto Blazor. La succosa novità che ho provato a velocità warp è stato il neo-introdotto <Virtualize> ovvero il componente built-in che consente di virtualizzare una serie (numerosa) di elementi in modalità scorrimento; a mo’ di ListBox per capirci. Putroppo non funziona benissimo, ancora qualche bug, ma la direzione intrapresa è quella giusta.

Continua a leggere “Blazor – .NET 5 RC1” →