Dalla mia esperienza il numero di nuove applicazioni client-server si è ridotto notevolmente negli ultimi anni, in quanto il mercato preferisce investire in soluzioni web.
Per applicazioni client-server intendo applicazioni che richiedono un client installato sul computer, che accede a dati forniti da un server (database).
Un esempio tipico sono applicazioni di contabilità o gestionali, che normalmente fino ad alcuni anni fa accedevano a un server database in LAN (rete locale).
Esempi di tecnologie che vengono utilizzate, in ambito Microsoft in cui sono specializzato, sono Microsoft Windows Forms (WinForms) e Microsoft Windows Presentation Foundation (WPF), realizzate su framework .NET.
Ma perchè sviluppare una applicazione client-server e non web?
Per chiunque abbia provato a implementare un sistema gestionale professionale, è chiaro che le applicazioni web, anche se utilizzassimo le ultimissime tecnologie quali Angular, React, Vue, etc, sono molto costose da realizzare e mantenere, inoltre la UX è molto limitata, in quanto è molto difficile realizzare interfacce efficienti e compatte, che permettano facilmente di navigare, creare, modificare i dati, file, visualizzare analisi dati, e molto altro.
Le applicazioni web sono indispensabili se si ha la necessità di accedere da remoto (via internet, per capirsi) ai nostri dati.
Gli ambienti di sviluppo per applicazioni client-server, come ad esempio Visual Studio (non Visual Studio Code), hanno dei potentissimi strumenti di sviluppo RAD che con il semplice Drag & Drop permettono di realizzare interfacce molto velocemente, permettendoci di focalizzarci sul vero business value, ovvero implementare la logica di dominio. Le risorse impiegate per lo sviluppo della UI sono circa il 20%, mentre per la parte di dominio il restante 80%.
Per le applicazioni web invece vale l’opposto: 80% per realizzare interfacce html, che funzionino su ogni browser, responsive per ogni schermo, che siano accessibili, e sicure.
Quindi nel caso di un gestionale che non ha come requisito l’accesso internet/web, la cosa più efficiente ed economica, soprattutto se pensiamo al lungo termine, è la realizzazione di una applicazione client-server. Ma quali tecnologie scegliere?
Nel caso di un gestionale enterprise dove il requisito principale è la facilità del data entry, e non interessa l’aspetto grafico, Windows Forms è ancora la scelta migliore. Nel caso invece di applicazioni più grafiche (o multimediali), WPF è la strada giusta.
Da notare che Windows Forms non è una tecnologia obsoleta o che verrà abbandonata, anzi, Microsoft vista l’enorme mole di applicazioni esistenti, e specifico target Enterprise, ha scelto di riscrivere completamente, sia il supporto in Visual Studio, che il motore Windows Forms.
Chi ha provato a scrivere codice con queste piattaforme sa che è molto semplice ritrovarsi con un monolite, spaghetti code, e nessuna possibilità di manutenzione. Ma per fortuna anni fa queste piattaforme sono state rivoluzionate con il Reactive thinking (RX), ovvero un mix di concetti di stream di dati (data driven), functional programming (FP), e C#.
A questo punto la community ha messo a disposizione un framework, ReactiveUI (RxUI), che permette di scrivere codice Reactive ANCHE in queste piattaforme. Inoltre RxUi fa parte della .NET Foundation, con supporto ufficiale Microsoft.
Se avete sentito parlare di Angular e RxJS, ebbene si, è la stessa tecnologia. In pratica potrete portare le vostre competenze di RxJs in Windows Forms/WPF.
Inoltre ReactiveUi è l’ideale per le App mobile (es Xamarin), in quanto supporta molte piattaforme.
Il vantaggio di utilizzare Reactive Ui è che i ViewModel sono completamente testabili, e permette di implementare View (le Forms) senza codice di dominio, ma relegando tutto alle sole ViewModel. Il codice a questo punto diventa facilissimo da leggere, mantenere e testare!
Essendo opensource, è possibile ottenere supporto dalla fantastica community, ma anche aiutare, ad esempio io ho collaborato personalmente a migliorare gli esempi Windows Forms nel loro repo ufficiale.
Volete iniziare un nuovo progetto RxUI? Assolutamente dovete leggere il fantastico libro “You, I, and ReactiveUI” di Kent Boogaart, che con una semplicità disarmante vi porterà a scrive applicazioni di alta qualità e introdurvi alla potenza del codice Reactive. Il libro utilizza WPF per gli esempi, ma gli stessi concetti valgono per Windows Forms e altre piattaforme mobile.
Alcuni link:
- https://github.com/reactiveui/ReactiveUI
- https://github.com/reactiveui/ReactiveUI.Samples
- https://kent-boogaart.com/you-i-and-reactiveui/
- https://www.blurb.com/b/8680442-you-i-and-reactiveui-color-hardcover
Buon divertimento!