GUI di Windows: WPF o WinRT (2015+)


94

Sto cercando di ottenere una panoramica delle diverse tecnologie, da utilizzare durante la creazione di GUI in Windows World.

Per il contesto, sto costruendo un piccolo gioco multiplayer di piattaforma 2D. (Solo per scopo di apprendimento ..)

Il mio insegnante dice che pensa che WPF sia la strada giusta, ma sembra che lo paragoni solo a Windows Forms.

La mia comprensione è che qui nel 2015 Windows Forms è completamente morto?

In queste altre domande sullo stackover, dicono che WinRT + XAML è per la costruzione della GUI Metro (cosa dei riquadri di Window 8!), E sembra che WPF sia qualcosa usato solo per desktop in Window 7/8 e sia strettamente correlato a Silverlight ..

Come si confronta Windows 8 Runtime (WinRT / app di Windows Store / app universale di Windows 10) con Silverlight e WPF?

  • Il desktop è dove risiedono le vecchie app (rosso. WFP).
  • La nuova classe di applicazioni, le applicazioni Metro, può essere costruita in diversi modi, incluso VB.NET, C # o C ++. Queste tre opzioni di lingua possono usare XAML per la creazione dell'interfaccia utente. L'alternativa è utilizzare JavaScript / HTML5 / CSS per lo sviluppo sia dell'interfaccia utente che del codice dell'applicazione.

La mia vera domanda è: non c'è un buon modo per creare GUI in Window World?

E se no, quali tecnologie si dovrebbero usare su Window 7, Window 8 (Desktop e Metro), Window Phone, (e Windows 10!) E persino su x-box ..

È a diverse tecnologie da confrontare in questo modo?

Quale pensi sia la cosa giusta in cui investire del tempo?


5
"WPF o WinRT?". Impara entrambi, WPF per desktop, Windows Runtime per dispositivi mobili. Queste tecnologie hanno molte cose in comune, come XAML e un framework molto simile. Puoi anche scrivere codice che supporti entrambe le piattaforme, come librerie di classi portatili.
Clemens

2
@ Clemens L'ultima parte è un po 'fuorviante. Le librerie .NET standard devono essere ricostruite / mirate per funzionare con le app WinRT, che potrebbero richiedere modifiche al codice per determinate classi.
BradleyDotNET

3
Windows Forms non è del tutto morto ma probabilmente non vuoi usarlo a meno che tu non abbia già familiarità con esso.
Casey

2
Il tuo obiettivo di "rimanere aggiornato nella GUI di Windows" è piuttosto dannoso secondo me. C'è poco futuro in questo per lo sviluppatore medio a lungo termine. MS ha cambiato i suoi strumenti per la GUI così tante volte mentre JavaScript e HTML5 hanno continuato a guadagnare terreno. Se ti stai sviluppando per vivere dimentica tutto il resto. Poche eccezioni a questo, se lavori per MS, o GUI di terze parti o se sei disposto a mantenere il vecchio codice.
NoChance

3
Anche MFC non è completamente morto e nemmeno Win32. Ma MFC per un gioco è ciò che un pazzo sceglierebbe
Lothar

Risposte:


132

C'è molto qui, ma qui va:

  • Windows Forms (Winforms) è morto ? No. È ancora attivamente supportato. Detto questo, è una tecnologia orribile su cui lavorare (almeno una volta che conosci la magia di WPF)
  • Se vuoi creare un'app desktop (classica, non Metro) bella e ben progettata , WPF è la risposta in termini puri .NET. È possibile utilizzare le API WinRT (come le loro classi socket) ma non è possibile eseguirle su sistemi operativi precedenti a Windows 8. L'interfaccia utente è ancora WPF.
  • Le app WinRT sono per Windows 8 Store (sono disponibili anche in Windows 10 Store). Non puoi usare WPF qui o WinRT sul desktop, quindi il luogo in cui distribuisci determina cosa usi. Hai ragione nella tua comprensione delle lingue / tecnologie disponibili.
  • Windows Phone 8 (ora deprecato) utilizza un runtime modificato di WinRT (questo è cambiato in Windows 10). Per Win8 / WP8, puoi utilizzare app "Universali" per condividere la maggior parte del codice tra un'app WinRT standard e un'app per Windows Phone.
  • Windows 10 usa la piattaforma UWP (Universal Windows Platform) basata su .NET Core. Il codice sviluppato per Windows 10 può essere utilizzato anche su Xbox One, Windows Phone 10 e HoloLens. WPF è ancora per app desktop "standard".
  • XBox è complicato. XNA è scomparso e Microsoft sembra abbandonare i contenuti creati dalla comunità per la piattaforma. Detto questo, Unity3D può essere distribuito su XBox e credo che lo sviluppo DirectX (C ++) standard funzioni per questo. Le app della piattaforma Windows universale possono essere distribuite anche su Xbox One e questa sembra essere la strategia di Microsoft in futuro.

Per quanto riguarda ciò su cui passare il tempo, dipende da cosa stai prendendo di mira :). Imparare WPF / UWP + XAML ti darà molti vantaggi se vuoi rimanere "aggiornato" nello sviluppo di .NET GUI, quindi è quello che vorrei. WPF ha la maggior parte delle funzionalità, quindi iniziando da lì devi solo trovare soluzioni alternative per ciò che manca in UWP (o qualsiasi altra tecnologia basata su XAML).

Se lo fai, assicurati di apprendere il modello MVVM (Model-View-View Model). Funziona molto bene con le tecnologie basate su XAML e ti consente di condividere molta logica tra le tue applicazioni WPF e UWP. La stessa logica può essere utilizzata anche se alla fine si sviluppano applicazioni Xamarin per iOS / Android, ecc.

Nota che per un vero sviluppo del gioco, ti consigliamo un vero framework di gioco (come Unity3D o anche XNA). Puoi farlo in WPF, e questa è una scelta migliore di Winforms, ma nessuno dei due è davvero pensato per i giochi.


Grazie per la risposta, ho iniziato con XNA per il mio mini gioco, quindi mi dispiace sapere che lo rimuoveranno. Ma non vedo l'ora di vedere cosa ci porterà Windows 10.
Alf Nielsen

@AlfNielsen Non sono sicuro di quando terminerà il supporto, ma sembra che non lo aggiorneranno presto.
BradleyDotNET

2
Sembra che VS stia per il pieno supporto di Unity, quindi complimenti per averlo previsto! :)
BK

2
La velocità di rendering di WPF utilizzando classi WPF come Visual è orribile per i giochi o qualsiasi cosa in tempo reale.
Ala Sendon

2
@WingerSendon Guarda RenderTransform, Viewport3De simili. Sono accelerati dall'hardware.
BradleyDotNET

26

È un thread piuttosto vecchio, ma come mi sono imbattuto in questo tramite Google (per interesse), forse qualcun altro potrebbe raggiungerlo anche qui. Questa è una domanda che viene posta ripetutamente dai nuovi programmatori. Quindi vorrei rispondere anche ad alcune cose, ora che Windows 10 è ufficialmente rilasciato.

In primo luogo, non si dovrebbe più iniziare con Windows Form. È la tecnologia più matura per ora, ma non ci sarà alcun ulteriore sviluppo di Windows Form, è solo in fase di manutenzione ora. WPF è attivamente sviluppato (ultimo che ho letto). Ma ora, le app universali di Windows (WinRT) non devono più essere utilizzate a schermo intero e possono essere utilizzate in modalità finestra proprio come le altre app desktop (WPF e WinForms). Ciò aumenta notevolmente la loro usabilità su computer non tablet. Credo che questo sarà il futuro anche per le app desktop. Sebbene i software WPF siano le tradizionali app desktop (senza autorizzazioni, solo UAC). In ogni caso, non importa che impari lo sviluppo WPF o WinRT (usando .Net), finirai per imparare entrambi. Entrambi sono XAML + C # (o un altro linguaggio .Net). Stavo imparando WPF quando WinRT è uscito con Windows 8. Mi sono sentito come a casa, solo pochi piccoli cambiamenti a cui ti abitui molto presto. Non sono però sicuro dello scenario MVVM (data-binding) in WinRT. Sto ancora imparando questo aspetto di WPF da solo.

Window 10 è appena stato lanciato. Windows 8 / 8.1 non ha avuto lo stesso successo di Windows 7. Quindi, se vuoi creare un'app che abbia un pubblico più ampio, per ora dovresti utilizzare WPF. Ma nel prossimo futuro, WinRT sarà la strada da percorrere.

Per la tua domanda, "quali tecnologie si dovrebbero usare su Window 7 , Window 8 (Desktop e Metro), Window Phone, (e Windows 10!) E persino su x-box", l'unica risposta è Windows Universal Apps. Questo è il motivo esatto per cui è stato sviluppato questo framework. Una tecnologia da utilizzare per sviluppare app per tutti i dispositivi. Desktop, tablet, telefoni (incluso Android che utilizza Xamarin in bundle con Visual Studio 2015), Xbox e IoT (Internet of Things).


19
Le app universali non sembrano funzionare su Windows7 o Windows8. Le "app universali" sono solo "universali" per i dispositivi Win10.
Dragontamer5788

Xamarin è ancora una cosa a sé (senza app universali) e non sono sicuro che possano distribuire neanche su Xbox.
BradleyDotNET

2
@PrateekJain: NO a correre applicazioni UWP su Windows 8: stackoverflow.com/a/30317960/199364
ToolmakerSteve

6
WinForms è ancora ottimo per GUI veloci e sporche - WPF è carino, ma richiede molto codice standard (e una curva di apprendimento ripida) per essere utilizzato "correttamente", anche senza MVVM. Fa schifo che WPF non abbia vere funzionalità RAD e che XAML sia così dettagliato .
Dai

1
Per tutti i dispositivi del mio culo. Microsoft parla di nuovo al suo meglio. Proprio come ai vecchi tempi quando lo chiamavano multipiattaforma perché funzionava su Windows95 e Windows2000. L'altra cosa è che non voglio mai che le app desktop abbiano le stesse brutte dimensioni di pulsanti e soprattutto alberi ed elenchi che devo usare per il tocco. Quindi nessun UWP per me
Lothar

23

Proverò a rispondere solo a una delle tue domande:

Windows Forms è completamente morto?

No, la tecnologia Windows Form non è morta. Ti dirò perché. WPF e XAML sono una tecnologia molto completa e complessa e puoi creare un'interfaccia utente molto carina. Ma! Questa tecnologia richiede una conoscenza approfondita. Per i layout di base, non è necessaria così tanta conoscenza, ma per alcuni layout avanzati dovresti avere una conoscenza approfondita e quando ho iniziato con questa tecnologia e ho passato molto tempo a cercare alcuni suggerimenti su Google. Quindi, quando ho bisogno di alcuni semplici moduli per l'input dell'utente, scelgo sempre la tecnologia Windows Form che è molto semplice e diretta. Questo è anche il motivo per cui questa tecnologia ha avuto molto successo quando è venuta nel mondo. Quando inizi con WPF devi anche sapere cos'è il design pattern MVVM e alcuni programmatori non esperti ne sono confusi.


3
Questa è la mia risposta preferita. Per le piccole app utilizzo Windows Forms perché è così facile e veloce da usare. Per codice di produzione complesso utilizzo interamente C ++ (con WTL) e .NET a passaggio laterale.
Robinson

8
Per i lettori che non hanno familiarità con WPF alcuni chiarimenti: per i layout di applicazioni di base WPF richiede più o meno la stessa quantità di impegno. Il modello di applicazione VS WPF predefinito fornisce lo stesso punto di partenza di WinForms. MVVM non è affatto obbligatorio per lavorare con WPF, ma in realtà l'uso di Binding senza alcun framework MVVM è facile anche per le app semplici. WPF è tecnologicamente più vicino a WinRT e UWP, quindi per il tuo bene presumi che Windows Forms sia morto per qualsiasi altra cosa che mantenere le applicazioni legacy.
anche il

3
Winforms è ottimo per creare un'app "console" new age. Ad esempio, controllo a schede estremamente semplice con un mucchio di pulsanti e input dell'utente che mette efficacemente una skin su quella che normalmente sarebbe un'app console.
rotola l'

16

Ora è aprile 2016 e non c'è ancora una risposta chiara a questo. Stiamo sviluppando un'applicazione desktop molto moderna per il monitoraggio delle prestazioni in tempo reale che deve eseguire il rendering di più grafici e display, mescolati con testo e vari altri grafici. La nostra applicazione è C #, WPF con .NET Framework 4.5.2 ma stiamo ancora scrivendo alcuni componenti utilizzando WinForms e GDI + per ottenere prestazioni accettabili. Semplicemente non l'abbiamo raggiunto con WPF. Abbiamo anche sviluppato un paio di display nell'applicazione con DirectX, ma questo aggiunge molta complessità che solo pochi membri del team possono supportare. La semplicità e la velocità pura che possiamo ottenere dall'hosting di un display WinForms all'interno di WPF e la velocità di GDI + ci danno ciò di cui abbiamo bisogno al costo della pura struttura View / ViewModel insieme a dover affrontare vari problemi dello spazio aereo. La nostra applicazione è piuttosto specialistica e mi piacerebbe sbarazzarmi del tutto di WinForms, ma sfortunatamente questo non è ancora possibile nel nostro caso. Per prestazioni pure dovrai utilizzare DirectX o WinForms.


1
Ti dirò che alcune cose sono più performanti in WinForms. Ci sono altre cose (animazioni in particolare) per le quali è vero il contrario. Certo, andare direttamente a DirectX sarebbe probabilmente ancora meglio, ma nessuno vuole farlo come hai sottolineato.
BradleyDotNET

1
Dopo WinRT, ho deciso di iniziare a cercare altrove. I miei clienti e io non possiamo fare affidamento su ciò che Microsoft vuole in quanto influisce sui profitti miei e dei miei clienti. Sto ora esaminando un'applicazione ospitata autonomamente che utilizza un server Web locale per servire le pagine dell'applicazione localmente al browser dell'utente o al controllo del browser incorporato in un'app WinForm / WPF. Questo semplifica lo sviluppo, mi avvicina alla compatibilità multipiattaforma e ovviamente riduce i costi.
TheLegendaryCopyCoder

6

I miei due centesimi ... se vuoi vere app universali, ovvero programmi che possono essere eseguiti su QUALSIASI sistema operativo desktop incluso Windows, WinForms è ancora la strada da percorrere. Assicurati solo di rimanere compatibile con CLR e puoi distribuire su Mac e Linux tramite Mono. Un enorme vantaggio. XAML può essere interessante, ma non verrà portato su altri sistemi operativi.

Personalmente trovo terrificante il modello di business UWP in modalità sandbox (sabbie mobili?); contrasta l'apertura che Windows ha rappresentato sin dall'inizio.


4

Lavoro con le tecnologie Microsoft da oltre 10 anni. La cosa più importante che ho imparato non è solo ascoltare ciò che Microsoft ti offre. Quando Microsoft afferma che questo è il futuro, ha il 50% di possibilità di sbagliare. Microsoft farà sicuramente del suo meglio per promuovere i prodotti su cui ha investito, ma ciò non significa che dovresti seguire. Guarda cosa succede a WCF e Silverlight.

Sebbene WPF sia una piattaforma molto piacevole per imparare, ha un'enorme curva di apprendimento. Non credo che nessuno sviluppatore con meno di 5 anni di esperienza di programmazione possa eseguire correttamente WPF.

Seguendo il modello MVVM, scoprirai che fare qualcosa di relativamente facile in WinForm può diventare molto impegnativo in WPF. Ad esempio, colorare una cella in base a una condizione dopo un aggiornamento o scorrere una riga nella vista ed evidenziarla.

Ovviamente puoi dire che non devi fare MVVM. Basta inserire il codice nel codice e farlo funzionare. Sì, funzionerà, ma qual è il punto di utilizzare WPF? Perché non usare semplicemente Win Form?


1
Sono d'accordo che WPF ha un'intensa curva di apprendimento, ma una volta superata, semplicemente non si può tornare a WinForms ... mai.
Krythic

4

Questo è un thread vecchio ma importante con lo stato di avanzamento corrente del framework .NET, le funzionalità di c # e la maggiore attenzione a c # come scelta di sviluppo del gioco.

In tutta onestà, WPF non viene quasi mai scelto come piattaforma di gioco ac #. I problemi di spazio aereo del WPF hanno spaventato le persone abbastanza velocemente. Non credo che molti titoli importanti o motori di gioco in streaming principali supportino WPF come piattaforma di destinazione neanche per questo motivo. Tuttavia, WPF è un'ottima piattaforma per i lanciatori di giochi!

WinForms, anche se ora in modalità di manutenzione, sarà ancora una scelta valida per gli anni a venire. È testato nel tempo e stabile. Da quello che ho visto, anche nel 2017, WinForms è ancora la piattaforma più comune scelta per lo sviluppo di giochi basati su c #.

Guardando i dati del sondaggio sull'hardware di Steam, puoi vedere che al momento della stesura di questa risposta (luglio 2017), Windows 10 a 64 bit è ora la piattaforma di gioco per PC dominante con una quota di mercato del 50%, seguito da Windows 7 a 64 bit al 32% e Windows 8.1 a 64 bit a quasi il 7%. La quota di mercato di tutte le altre piattaforme OS è così piccola che a malapena vale la pena considerare qualcosa di diverso da questi tre.

Essendo questo lo stato attuale dei giochi per PC, WinForms è il denominatore più comune per indirizzare tutte e 3 le migliori piattaforme per PC. Guardando al futuro, la piattaforma UWP sarà la migliore piattaforma di destinazione per lo sviluppo di giochi c # poiché Windows 7 e 8 perdono una quota di mercato significativa a causa di Windows 10, a meno che non arrivi una nuova piattaforma che lo sostituisca. Quindi questo è solo dai numeri.

Se si sceglie in base al miglior livello di compatibilità per piattaforma OS invece di supportare la massima quota di mercato, le scelte sarebbero più simili:

  • Windows 10: UWP
  • Windows 8.1: WinRT o Windows Store
  • Windows 7: WinForms

La maggior parte delle altre risposte è incentrata sullo sviluppo di applicazioni Windows standard, ma lo sviluppo di giochi è un ambito molto diverso e diversi fattori influenzeranno le tue scelte, come il sistema operativo di destinazione e ciò che la tua scelta di API grafica o motore di gioco effettivamente supporta meglio.


Mentre avere un punto di vista su gamedev è interessante, non capisco perché dovresti scegliere un framework GUI per gamedev in cui hai un motore di gioco completo per C # come Unity. Solo pochi giochi che ho visto con la classica GUI erano per l'edizione dei dati di gioco (come la modifica di mappe / risorse)
Uwy

2
Per lo stesso motivo per cui scelgono un motore di gioco: è un bel po 'di lavoro creare e gestire una finestra nativa in modo efficace dal codice gestito da soli.
Mike Johnson

3

WinRT è sul desktop da molto tempo, sto scrivendo WinRT, che gira sul mio desktop. E sotto Windows 10, quelle applicazioni supporteranno posizioni non ancorate (con finestre come potresti tradizionalmente conoscerle).

Non consiglierei WinForms o WPF a nessuno che inizi oggi. Dovrebbero imparare principalmente WinRT / XAML. E impara un po 'di Win32 / .net quando ne hanno bisogno, a seconda della lingua scelta ..

"dicono che WinRT + XAML sia per la costruzione di GUI Metro (cosa di Windows 8 tile!)" - Questa è un'astrazione così eccessiva, che è inutile. WinRT è un runtime, come Win32, non è solo per la GUI, quindi quello che "dicono" è BS completo. XAML è un livello dell'interfaccia utente (molto simile a XAML in WPF) ma anche dire che è Metro GUI è sbagliato, non esiste più una cosa come Metro GUI. XAML è il livello dell'interfaccia utente di Windows. E "Windows 8 piastrelle cosa!" è espressivo della visione a tunnel di alcune persone. Sarebbe come se dicessi che Win32 è una cosa del menu di avvio. Puoi vedere quanto sia ridicola questa affermazione.


8
Per chiarire la mia affermazione originale, WinRT non può essere utilizzato per creare un'applicazione desktop "tradizionale". Per questo motivo, tra gli altri, ci sono tonnellate di ragioni per imparare WPF (WinForms, non tanto). Se non altro, avrai effettivamente imparato WinRT allo stesso tempo (come noto nella mia risposta). Inoltre, non siamo neanche lontanamente vicini al punto in cui le app WinRT dominano il mercato (in particolare le app line of business). WPF è ancora immensamente prezioso.
BradleyDotNET

7
Se WinRT non è legato alla creazione di app a schermo intero, potresti dirmi come puoi usarlo per creare un'app con finestra che gira su qualsiasi versione effettivamente rilasciata di Windows? O come usarlo per scrivere un'app che gira su più del 10% dei computer Windows (es. Windows 7 e XP)? Immagino che la maggior parte degli sviluppatori voglia essere in grado di raggiungere più del 10% degli utenti Windows. Fino a quando Windows 8 o 10 non otterranno una quota di mercato considerevole, WPF sarà ancora necessario per molte applicazioni. WinRT può essere un livello di runtime, ma ciò non cambia il fatto che non può accedere a molte delle cose (complete) che Win32 può fare.
Giovanni Colanduoni

1
@JohnColanduoni come ha detto, per chiunque inizi oggi (Mar14) WinRT è la strada da percorrere, win10 era ed è gratuito come aggiornamento per alcuni mesi ormai, e lo sarà per qualche altro mese, quindi sì, win10 sta prendendo un enorme quota di mercato. sì, non tutti sono passati a win10, ma anche un paio di giorni fa abbiamo scoperto che un aeroporto in Francia usa ancora win3.1
John Demetriou

3
@GavinWilliams Ok, dove sono le tue statistiche che mettono Windows 10 a una quota di mercato apprezzabile in qualsiasi segmento di mercato? Stai dicendo che le mod hanno rimosso il tuo commento con un link alla tua fonte, ma ti hanno permesso di inserire questo? Non lo sto comprando. Sono d'accordo che non vale la pena supportare XP, ma le app universali di Windows 10 non supportano nemmeno Windows 8.1, per non parlare di Windows 7. L'adozione non è da nessuna parte dove deve essere per giustificare Windows Universal, e sta rallentando .
John Colanduoni

3
@GavinWilliams Ok, ignoriamo che il 30% è molto meno del 97% (il supporto che otterresti se usassi WPF) e che questi dati sono utili solo per i programmatori di videogiochi. Per i videogiochi è abbastanza facile scegliere come target entrambi; a meno che tu non stia facendo qualcosa di veramente banale, vorrai usare DirectX / OpenGL, il che significa che devi solo ospitarlo in una finestra / a schermo intero. Se non vuoi usarli, vorrai davvero WPF poiché l'interfaccia utente di WinRT non consente il disegno in modalità immediata senza DirectX / OpenGL ospitato (come fa WPF). Allora che dire di WinRT giustifica una riduzione del 70% delle dimensioni del mercato?
John Colanduoni

1

Mi sono imbattuto in questa domanda un anno fa. Sono giunto alla conclusione che XAML, WPF o WinRT siano l'ambiente di sviluppo corretto con cui iniziare.

Consiglio vivamente di utilizzare .Net Framework per il livello dati (inclusi servizi Web e livello RESTful (JSON)) e HTML5 / CSS3 e Javascript puri per il livello di presentazione web.

In Windows 10 puoi integrare qualsiasi applicazione web come applicazione metropolitana appena fuori dalla scatola.

WinRT, XAML, WPF e simili cose di ms funzionano solo su Windows e hanno molte limitazioni.

Quindi dopo un anno sono ancora molto contento della mia decisione di non utilizzare WinRT o XAML per il mio nuovo progetto.


3
Di cosa stai parlando? Sì, è un'ottima scelta se vuoi creare un'app Web. Se vuoi creare un'app desktop, non lo è. Potresti usare Katana e avere WebApi ospitato localmente e creare un'app desktop, che immagino renderebbe questa risposta più pertinente.
Casey

1
OP ha chiesto informazioni sulla GUI di Windows e WPF o Winrt, non sulle app Web.
ezaspi

6
Inoltre, personalmente trovo queste tecnologie molto più difficili da utilizzare (sistema di layout incomprensibile, nessun controllo in fase di compilazione sul codice, ecc.) Il desktop non è ancora morto :)
BradleyDotNET

1
Sono d'accordo, HTML è l'interfaccia utente universale e dovrebbe essere anche per il desktop. Sento che dobbiamo semplificare tutti questi diversi quadri e smetterla di introdurne sempre di più e di più. La maggior parte non è necessaria. Impara solo HTML e ASP e poi ospita il tuo sito web in un'app WinForm. L'app WinForm contiene il tuo server web e il controllo del browser web. Il risultato è che risparmi tempo, ti concentri sulla padronanza di una lingua e tecnologia, sviluppi più velocemente, risparmi i soldi dei tuoi clienti, le tue app sono a prova di futuro e molto più portabili.
TheLegendaryCopyCoder
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.