2009-10-07 15 views
9

Recentemente ho iniziato a utilizzare WCF e sono rimasto molto colpito, tanto che mi chiedo come ottenere di più in WPF, ma le mie prime esperienze con XAML non erano grandiose, circa 1 anno fa.Quali sono i principali vantaggi di entrare in WPF?

Le cose sono migliorate, la consegna è veramente indipendente dal browser (può essere eseguita su browser diversi da IE).

La produttività di sviluppo è aumentata, una migliore separazione codice/ui? Richiede l'apprendimento della luce argentata?

Se hai avuto esperienza reale con WPF, si prega di indicare i pro ei contro.

+0

Stai chiedendo specificamente di Silverlight? O su XBAP? o anche applicazioni desktop WPF? –

+0

WPF non è per il browser che è per il desktop, Silverlight viene eseguito nel browser, entrambi utilizzano XAML per l'interfaccia utente. – CSharpAtl

risposta

12

Primo:

WPF è al 100% indipendente dal browser, perché WPF non viene eseguito nel browser.

XBAP (ora deprecato) e Silverlight eseguito nel browser, ma entrambi sono sottoinsiemi di WPF.

Secondo:

Il vantaggio principale di WPF è la natura gerarchica delle strutture GUI è possibile creare. Se hai mai fatto programmazione ASP.NET, WPF è una mossa più naturale di WinForms.

L'associazione dei dati in WPF è diversa, ma migliore, IMO.

Bottom line: XAML e le sue complessità sono una grande curva di apprendimento, e WPF e XAML vanno molto a braccetto. Ma una volta comprese le basi e puoi iniziare a costruire GUI di base con esso, non vorrai mai più usare WinForms.

Per quanto riguarda Pro e Contro, direi che l'unico vero con in WPF è la grande curva di apprendimento. Può fare tutto ciò che WinForms può fare da una prospettiva .NET ed è più facile da usare (una volta compreso) di WinForms. L'unico posto che potrebbe essere "mancante" è nella manipolazione diretta di GDI +, ma probabilmente vorrai evitarlo laddove possibile. Se diventa necessario in un progetto WPF, basta creare un controllo WinForms e ospitarlo in WPF. Non è la soluzione più elegante, ma può portare a termine il lavoro.

+0

Quindi, questo sostituisce le classiche interfacce winform goffe? E tutto questo può essere fatto con VS2008? –

+0

@ JL: Sì. Sebbene tu possa ancora fare le interfacce "grigio scuro" con WPF (ed è molto facile, IMO) puoi fare molto, molto di più. Inoltre si ottiene una maggiore separazione delle preoccupazioni incorporate nella struttura di WPF, qualcosa che non si ottiene con WinForms. – Randolpho

2

Bene, ho una vera esperienza con WPF, ma non con WinForms. Sto usando WPF da 8 mesi e trovo divertente, facile da imparare, difficile da padroneggiare. Il binding, gli stili di comando & che sono le funzioni di base di WPF IMO, sono davvero facili da imparare e da usare. So che i comandi e lo stile non erano presenti in WinForms, era obbligatorio, ma come diceva Randolpho, era diverso.

Anche WPF utilizza DirectX per disegnare la sua grafica ora GDI o GDI +, che offre anche molta più flessibilità per disegnare grafica 2D avanzata o anche grafica 3D. Inoltre, dato che si trova su DirectX, la GPU viene utilizzata per disegnare tutta la grafica anziché la CPU (come GDI), quindi in un certo senso, si sta utilizzando meno potenza di elaborazione dalla CPU.

+0

+1 per menzionare DirectX anziché GDI. WPF non usa affatto GDI/+, mentre WinForms avvolge spesso GDI/+. – Randolpho

+0

Grazie, penso che sia una differenza fondamentale da WinForms, prova a fare un po 'di rendering 3D con WinForms = P lol – Carlo

+0

Definitivamente una differenza fondamentale. Ma non necessariamente per il rendering 3D; più per il disegno basato su * vector *. WPF è ancora meglio usando il rendering 2D via DirectDraw, ecc. – Randolpho

4

Se si sta sviluppando nel browser, probabilmente si desidera utilizzare Silverlight. È simile a WPF, ma è indipendente dal browser e guadagna molta trazione in termini di utilizzo, oltre a una grande attenzione da parte di Microsoft. (Ad esempio, i nuovi servizi RIA sono molto carini, per le app aziendali.)

Sia WPF che Silverlight offrono molti degli stessi vantaggi rispetto alle tecnologie precedenti per lo sviluppo dell'interfaccia utente, ad esempio Windows Form.

  • L'associazione di dati in WPF e Silverlight è molto potente e molto flessibile. Ciò può accelerare lo sviluppo e fornire un livello di sicurezza difficile da creare prima.
  • Lo sviluppo dell'interfaccia utente, anche se diverso, è molto più flessibile. La separazione della presentazione dal comportamento in WPF e Silverlight rende molto facile la creazione di codice UI molto personalizzato, molto rapidamente.
  • La nuova interfaccia di comando, in combinazione con DataTemplates, consente uno sviluppo molto più semplice in un modo molto flessibile, verificabile e gestibile (utilizzando lo schema MVVM).

Tutti questi portano a uno sviluppo a lungo termine molto più bello, una volta superata la curva di apprendimento, a mio parere.

4

Contro

  1. WPF non è così facile da imparare.

  2. WPF è ancora giovane. Per fornire un esempio: per utilizzare un controllo griglia di dati è necessario scaricare il toolkit WPF non supportato. Silverlight 3 ora supporta la griglia di dati in modo nativo e sono abbastanza sicuro che VS 2010 avrà la griglia di dati inserita in WPF. Ma ci vuole tempo per maturare.

  3. Come con qualsiasi tecnologia, non ci si fida sempre dei campioni. Ho visto alcuni XAML piuttosto brutti in natura (anche da Microsoft).

Pro

  1. L'interfaccia utente è dichiarativo espresso come una gerarchia di oggetti rappresentati in XAML invece in un progettista visivo che consente solo l'interazione con il mouse. (Visual Studio ed Expression Blend hanno anche un visual designer che funziona su XAML.)

  2. La composizione di controlli in pannelli di layout flessibili e l'estrazione di risorse dai dizionari consentono di creare interfacce utente fluide coerenti e belle. Oltre a ciò, aggiungi un ricco supporto per elementi grafici come disegni vettoriali, sfumature colorate, trasparenza e aggiungi a questo mix di animazioni e hai gli strumenti per creare un'esperienza utente davvero straordinaria (o molto orribile se non sai cosa stanno facendo.)

  3. I controlli sono composti da layout e comportamento. Sei in grado di sostituire completamente il layout e mantenere il comportamento. Questo è molto più avanzato di un pulsante disegnato dal proprietario o di una casella di riepilogo con immagini.

  4. Il forte supporto per l'associazione dati semplifica la separazione della logica dell'applicazione in livelli gestibili. Mai più dovrai commutare un bit dell'interfaccia utente all'interno di un oggetto modello di dominio.

  5. Il modello di rendering in WPF non è il modello GDI in cui il metodo OnPaint viene chiamato per dipingere un'area particolare della finestra. Invece si aggiungono elementi a un grafico di scena (normalmente espresso in XAML) che viene quindi renderizzato usando DirectX. In molti modi questo è un modello molto migliore.

Sono impressionato dal disegno complessivo di WPF, e a mio parere i progettisti di WPF sono persone veramente intelligenti che hanno fatto un ottimo lavoro. Ma lavorare con WPF può essere comunque un'esperienza frustrante perché non hai trovato la soluzione "corretta" al tuo problema o perché alcuni aspetti di WPF sono semplicemente fastidiosi (come quando vuoi personalizzare una piccola parte di un built-in controllo e improvvisamente si trovano a dover modificare un modello di controllo colossale).

Come probabilmente avete già capito, WPF non è Silverlight. Piuttosto Silverlight è una versione "leggera" di WPF nel browser. Poiché Silverlight è un po 'meno complesso, in realtà è un ottimo punto di partenza per ottenere un'esperienza XAML se non ti dispiace scrivere un'applicazione browser sandbox anziché un'applicazione desktop.

Problemi correlati