Modern Windows desktop

di il
8 risposte

Modern Windows desktop

Buongiorno a tutti,
per la prima volta dovrò affrontare una applicazione desktop Win che però dovrebbe presentarsi in forma "moderna". Immaginatevi una applicazione tipo da totem dove all'utente, assolutamente non avvezzo all'uso di PC, deve essere mostrato un po di "cinema", nel senso di: bella colorata, pulsanti e altri controlli dalla forma arrotondata e gradevole, ausili grafici, ecc.
In altre parole non si deve presentare come una classica applicazione Windows.
Guardandomi attorno ho visto che forse una applicazione WPF potrebbe fare al caso mio, anche perchè sulla parte MMI potrebbe anche intervenire un grafico (che sarebbe decisamente più bravo di me in queste cose).
Poi ho visto che esiste anche UWP che, se ho capito bene, è una estensione di WPF ma che è nata per l'utilizzo su dispositivi di diversa natura. Poi ho scoperto che esiste anche WinUI del quale conosco decisamente poco e del quale mi è ignoto l'eventuale sforzo di apprendimento.
Il solito marasma di tecnologie Microsoft insomma...
Dimenticavo: il backend sarà sviluppato in C#
Qualcuno di voi ha già affrontato un problema simile e se la sente di darmi qualche consiglio? Anche tenendo presente che, trattandosi di un progetto nuovo, dovrà probabilmente affrontare revisioni e sviluppi futuri.
Grazie

8 Risposte

  • Re: Modern Windows desktop

    Lucios ha scritto:


    Guardandomi attorno ho visto che forse una applicazione WPF potrebbe fare al caso mio [...]
    Se l'obiettivo è scrivere l'applicazione in C#, come hai anticipato, e non è previsto l'uso di alcun linguaggio né piattaforma differente, allora credo che WPF costituisca la soluzione più viabile per te.

    Il mondo UWP sta per lasciare il posto ad altre tecnologie, tra cui WinUI 3, che però non è ancora matura e mi pare sia ancora in stato di technology preview. Ciò nonostante, XAML è lo strumento usato in prevalenza per la creazione dell'interfaccia ed è presente sia in WPF che in WinUI, per cui direi che con WPF hai un possibile percorso di migrazione.

    Usando WPF si possono ottenere risultati eccezionali. Diciamo che io preferisco altri linguaggi e tecnologie sotto questo aspetto, per alcuni motivi specifici:
    • conosco tali linguaggi, quindi ho possibilità di scelta.
    • l'approccio XAML mi risulta spesso più complicato del dovuto, soprattutto quando occorre applicare pattern MVVM.
    • il supporto RAD dell'ambiente di sviluppo (Visual Studio) è un po' limitato in questo frangente rispetto ad altri.
    • ho sempre il timore che Microsoft cessi il supporto a una specifica tecnologia/piattaforma e costringa a migrare.
    • voglio delle applicazioni native.
    Se questi aspetti non cozzano con alcuni dei tuoi requisiti, allora credo che WPF faccia per te.

    Unica cosa: prima di iniziare il progetto, studia molto ma molto ma molto bene WPF e soprattutto XAML.

    Ciao!
  • Re: Modern Windows desktop

    Grazie Alka,

    dei punti che hai elencato
    ho sempre il timore che Microsoft cessi il supporto a una specifica tecnologia/piattaforma e costringa a migrare.
    questo è quello che turba maggiormente anche me ad essere sincero, gli altri sono aspetti tecnici superabili.
    Dici che utilizzi altre tecnologie, solo per parlare perchè ora non ho certo il tempo di studiare più di tanto, a cosa ti riferisci, se puoi dirmelo?

    Grazie ancora
  • Re: Modern Windows desktop

    Lucios ha scritto:


    Dici che utilizzi altre tecnologie, solo per parlare perchè ora non ho certo il tempo di studiare più di tanto, a cosa ti riferisci, se puoi dirmelo?
    Sono stato vago in quanto, trattandosi di altri linguaggi, davo per scontato che non fossero (per così dire) papabili: non volevo essere "misterioso" in modo inopportuno.

    Ad esempio, applicazioni come quelle che si possono realizzare con WPF ma orientate al "business" (quindi con una interfaccia moderna ma sempre calati in un contesto di workflow aziendale, ossia no videogiochi o affini) le creo usando Delphi e FireMonkey (che è una libreria grafica che condivide molti dei concetti di WPF, oltre ad essere però crossplatform e adatta anche ai device mobile - per Android e iOS - oltreché al desktop quindi Windows, Mac OS e Linux).

    Siccome non posso linkare direttamente filmati da YouTube, dai comunque un'occhiata eventualmente ai miei link in firma: in genere, faccio live coding proprio su quel genere di tematiche e ho pubblicato diversi filmati dove sviluppo applicazioni per grandi schermi e app crossplatform usando la suddetta libreria e ambiente (che ha compiuto da poco 27 anni di età!).

    Ciao!
  • Re: Modern Windows desktop

    Buondì

    Ho visto che dici di dover scrivere per la prima volta un'applicazione Windows... Ma è perchè viene richiesto l'utilizzo di risorse/comandi tipiche di Windows, o per altri motivi?

    Lo chiedo perchè se ha inecessità di usare delle funzionalità native del PC Windows, allora ti consiglio vivamente di usare WPF ma mi raccomando: applicalo col paradigma MVVM.
    La curva di apprendimento è più alta, però ti tornerà molto comodo nei prossimi anni: Microsoft sta per rilasciare MAUI e quello probabilmente sarà il sostituto di WPF. Nel caso tu abbia usato il paradigma MVVM, il passaggio sarà molto più semplice, anche perchè nelle preview, il pardadigma MVVM è valido anche in MAUI, per cui se lo impari, lo riusi.

    Sempre su WPF, se ti piace lo stile material, ti consiglio questa libreria che ho usato e con cui mi sono trovato bene: https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit


    Se l'utilizzo delle risorse del PC è limitato e hai esperienza/sei più focalizzato sulla parte web, puoi sempre valutare Electron o cose simili (vedi Ionic).
    In pratica scrivi la tua app web e la compili come app nativa.
    Per un progetto pilota ho fatto un'applicazione con Blazor Server e l'ho convertita in app nativa con Electron.NET
    E' venuto fuori qualcosa di carino... Ovviamente non è come fare un'app con WPF, però ha anche una curva di apprendimento molto più bassa rispetto a WPF e soprattutto al paradigma MVVM

    Questo è il sito da cui sono partito per Blazor ed Electron.NET: https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit
  • Re: Modern Windows desktop

    Buongiorno PiGi79
    Ho visto che dici di dover scrivere per la prima volta un'applicazione Windows... Ma è perchè viene richiesto l'utilizzo di risorse/comandi tipiche di Windows, o per altri motivi?
    Non sono stato chiaro, di applicazioni Windows ne ho fatte parecchie, ma è la prima volta che devo farne una che non deve apparire tale. Deve avere una GUI che ho definito di tipo "totem", nel senso che deve mostrare più pagine con controlli graficamente più impattanti e gradevoli di quelli standard. Bottoni dall'aspetto grafico più moderno, immagini interagibili, ecc.
    Cose cioè che una classica winform si fa fatica a fare.
    allora ti consiglio vivamente di usare WPF ma mi raccomando: applicalo col paradigma MVVM.
    Infatti, dopo essermi documentato, sono arrivato alla stessa conclusione ma mi interessa il parere di persone che hanno già affrontato il problema prima di avventurarmi su diverse tecnologie. Il paradigma MVVM mi pare di aver capito che è praticamente indispensabile per i miei scopi.
    Per un progetto pilota ho fatto un'applicazione con Blazor Server e l'ho convertita in app nativa con Electron.NET
    Ci ho pensato anch'io ma sinceramente non vedo vantaggi significativi.

    Grazie per i link.
  • Re: Modern Windows desktop

    Lucios ha scritto:


    Infatti, dopo essermi documentato, sono arrivato alla stessa conclusione ma mi interessa il parere di persone che hanno già affrontato il problema prima di avventurarmi su diverse tecnologie. Il paradigma MVVM mi pare di aver capito che è praticamente indispensabile per i miei scopi.
    In generale è più che utile, ma con WPF ancora di più, l'applicazione del paradigma MVVM direi che è quasi imprescindibile.
    Quindi hai detto bene.

    Lucios ha scritto:


    Per un progetto pilota ho fatto un'applicazione con Blazor Server e l'ho convertita in app nativa con Electron.NET
    Ci ho pensato anch'io ma sinceramente non vedo vantaggi significativi.
    Ecco, questo è il tipo di applicazioni che di solito cerco di evitare, ossia quelle basate su Electron e tecnologie simili: sono progettate per chi conosce JavaScript e il Web in generale, ma non sono per niente ottimali dal punto di vista delle prestazioni, rispettose nell'uso della CPU e della memoria, poiché spesso si esprimono racchiudendo al proprio interno un browser, un server Web, una istanza di Node oltre ovviamente al codice dell'applicazione stessa.

    Vedere su un PC desktop più di 200MB occupati per un'applicazioncina banale è ciò che mi fa ringraziare il fatto di conoscere Delphi come valida alternativa a questa soluzione.
  • Re: Modern Windows desktop

    sono progettate per chi conosce JavaScript e il Web in generale
    Sì, sono arrivato anch'io alle medesime conclusioni. Blazor è molto interessante ed ha senso in caso di applicazioni web. Usarlo in altri ambiti mi pare più una forzatura (o un "San Ingegno" come si dice dalle mie parti) per risolvere un problema conoscendone già la tecnologia e non avendo intenzione o il tempo di impararne una più consona.
  • Re: Modern Windows desktop

    Lucios ha scritto:


    Blazor è molto interessante ed ha senso in caso di applicazioni web. Usarlo in altri ambiti mi pare più una forzatura [...]
    Attenzione che questo scenario è vero oggi, attualmente, ma potrebbe non esserlo più un domani, perché da più parti si mormora della possibilità di estendere i confini di Blazor anche al di fuori del Web, ad esempio in ambito mobile, rimpiazzando soluzioni esistenti come Xamarin. Al momento comunque, concordo sul fatto che gli usi siano quelli che hai detto.

    Ciao!
Devi accedere o registrarti per scrivere nel forum
8 risposte