Si prega di spiegare i vantaggi dell'uso di una sintassi basata su XML (ad esempio XAML) invece del normale codice sorgente (ad esempio WinForms)? [chiuso]

8

Prima di tutto, tieni presente che questa domanda non riguarda WPF vs. WinForms.

Quali sono i vantaggi di più alto livello che hanno portato Microsoft a inventare XAML in favore del "vecchio" approccio alla generazione di codice C # compilabile?

La mia impressione è che gli altri sviluppatori sembrano trovarne molti aspetti negativi, ma Microsoft è andata con lui a prescindere, il che significa che c'è un vantaggio che non vedo. Mi piacerebbe che tu mi spiegassi cosa mi manca.

    
posta Timwi 12.03.2012 - 21:07
fonte

7 risposte

7

Il più grande vantaggio di XAML è che ti consente di descrivere la tua interfaccia utente in modo dichiarativo. Cioè, non dici "crea una scatola, ridimensionala ora", dici "crea una scatola e btw, è di queste dimensioni"

Il secondo posto in cui splende XAML è che sfrutta davvero i binding. Ad esempio:

<Button IsEnabled="{Binding IsBusy}">

Nel tuo modello di visualizzazione puoi andare sulla tua attività e impostare IsBusy su true o false, e mentre cambia, lo stato abilitato del pulsante cambia automaticamente avanti e indietro.

Quindi, come esempio più complesso:

<ListBox ItemsSource={Binding Options}>
 <ListBox.ItemsTemplate>
  <CheckBox Checked="{Binding IsChecked}" Contents="{Binding Name}"/>
 </ListBox.ItemsTemplate>
</ListBox>

In questo esempio siamo vincolati a un elenco (Opzioni) e creando un elemento in una casella di riepilogo per ogni elemento. La cosa interessante qui è che man mano che aggiungiamo elementi alla lista, o rimuovili, l'interfaccia utente viene automaticamente sincronizzata con lo stato della nostra lista. Mentre facciamo clic sulla casella di controllo su ciascun elemento, gli oggetti sottostanti vengono automaticamente aggiornati per corrispondere all'interfaccia utente. Con potenti strumenti come questo ho hackerato le interfacce utente in una frazione del tempo necessario per collegare tutti gli eventi in un'app WinForms.

In generale, tutto questo significa che puoi scrivere la tua interfaccia utente in un formato dichiarativo e questo è un enorme guadagno di produttività. Anche se, devo dire che questo ha un costo. Probabilmente otterrai più prestazioni da un'app WinForms poiché il codice sarà meno generalizzato. Ma a meno che tu non stia facendo qualcosa come mostrare 40.000 righe in una griglia di dati, probabilmente non noterai un grosso rallentamento con XAML.

Va anche detto che altre librerie UI realizzano questo stesso obiettivo senza XML. Ad esempio, QT utilizza Json (http://labs.qt.nokia.com/2009/05/13/qt-declarative-ui/)

    
risposta data 12.03.2012 - 21:41
fonte
6

The 8 Vantaggi di XAML per l'interfaccia utente e oltre

  • XAML descrive i dati in modo conciso, ma umano e comprensibile dalla macchina
  • XAML è utile per molti tipi di dati
  • XAML utilizza i modelli di oggetto tipizzati per una migliore programmazione e convalida
  • XAML è estensibile e Tollerante versione
  • XAML è Toolable
  • XAML è XML (beneficia della disponibilità di strumenti standard, è leggibile da parte dell'utente, ecc.)
  • XAML abilita i modelli di programmazione basati su eventi
  • XAML può essere compilato o interpretato

Vedo XAML come una "lingua intermedia" dell'interfaccia utente; puoi usarlo con qualsiasi linguaggio di programmazione e su diverse piattaforme. Abilita la descrizione dell'interfaccia utente in linguaggio, piattaforma e dispositivo.

    
risposta data 12.03.2012 - 21:44
fonte
3

L'uso di XML fornisce metadati in un formato supportato da un numero enorme di parser e strumenti di analisi. Almeno in teoria questo permette a chiunque di eseguire un meta-programma contro di esso usando qualsiasi linguaggio.

Più in pratica, XML ti fa sembrare uno standard più aperto. Puoi argomentare che è solo un markup come un browser, ma è più facile da analizzare.

Questi sono vantaggi reali, ma in pratica c'è troppa attività al di fuori dello XAML perché i vantaggi siano terribilmente importanti.

    
risposta data 12.03.2012 - 21:30
fonte
1

XAML è stato progettato per rappresentare semplicemente una gerarchia di oggetti e non solo per la GUI come XPS e WF. L'utilizzo di XAML per creare applicazioni ti aiuterà a fornire Rich Internet Applications (RIA) e ricche applicazioni desktop.

L'uso di XAML come rappresentazione dichiarativa basata su testo della GUI avvicina gli strumenti di sviluppo MS ad altre tecnologie considerate standard nel settore come l'HTML.

Alcune delle caratteristiche principali di XAML (su Windows Form) sono:

  1. XAML consente di disegnare immagini e trasformazioni di grafica vettoriale scalabile (SVG). Uno dei vantaggi della grafica vettoriale è che possono scalare a qualsiasi dimensione senza perdere qualità, quindi non preoccuparti della risoluzione del computer dell'utente.

  2. I moduli Windows, in generale, hanno sofferto di un supporto limitato per il posizionamento automatico dei controlli a seguito del ridimensionamento di Windows e delle modifiche nella superficie della GUI (come quando vengono aggiunti o rimossi i nuovi controlli). I controlli sono posizionati specificando esplicitamente i valori di riga e colonna per ciascun controllo tramite la GUI o il codice del programma. Mentre XAML consente questo comportamento, introduce un modo più semplice per risolvere questo problema fornendo il controllo Stack Control ei controlli del pannello Wrap.

  3. In XAML puoi costruire nuovi controlli da quelli esistenti direttamente in XAML usando il nesting. È possibile nidificare un controllo immagine all'interno del controllo pulsante insieme a un pannello pila per creare un nuovo tipo di pulsante, ovvero un pulsante con un'immagine. Poiché questo controllo viene creato in XAML, non è necessario creare una dll separata per utilizzarla come nel caso dei moduli di Windows. Esempio:

    <Button Width="90" Height="40">
        <StackPanel Orientation="Horizontal">
          <Image Source="Yes.png" Width="14" Height="14" />
          <TextBlock Margin="5,1,0,0" Text="Yes" />
        </StackPanel>
    

  4. Lo stile e i modelli consentono di personalizzare l'aspetto dei controlli su diversi livelli simili alle funzionalità di CSS e HTML. Non è richiesta alcuna programmazione procedurale. Una modifica può essere riflessa nell'intera GUI.

  5. XAML consente tecniche avanzate di associazione dati non disponibili nei moduli di Windows. Puoi persino associare un controllo ai valori dei dati di anther.

  6. XAML fornisce un framework di navigazione integrato che puoi usare o sostituire con altri framework. Infatti, WPF, Silverlight e XAML sono progettati per sfruttare il pattern MVVM che non è possibile ottenere esattamente con Windows Form.

  7. Con l'introduzione di XAML, il codice dietro i file potrebbe essere isolato da un maggiore grado dai file di progettazione dell'interfaccia. Ovviamente esiste ancora la dipendenza di alcuni nomi. Tuttavia, il fatto che XAML sia un linguaggio dichiarativo basato su testo simile a XML e HTML che non richiede un compilatore, consente ai progettisti di interfacce di creare file XAML separati da integrare successivamente con il codice dietro i file. Questo è diverso dal caso con i moduli di Windows in cui la GUI è strettamente accoppiata come codice procedurale nel progetto. I progettisti che utilizzano XAML potrebbero persino lasciare Visual Studio e utilizzare lo strumento MS Expression Blend per creare la GUI. MS Expression Blend è creato per i progettisti piuttosto che per i programmatori.

  8. XAML fornisce tecniche native avanzate per l'animazione e la visualizzazione di video senza la necessità di strumenti di terze parti.

  9. XAML aveva lo scopo di rendere lo sviluppo del software e delle pagine Web basato su Windows più vicino di quanto non stesse usando ASP.NET e Windows Form. Silverlight e WPF usano entrambi XAML (anche se ci sono alcune differenze, ma gran parte dell'esperienza è trasferibile).

  10. Un SDK per XAML include controlli interessanti e ti consente, tra le altre funzionalità, di supportare presentazioni in stile wizard / storyboard senza utilizzare uno strumento di terze parti.

risposta data 12.03.2012 - 23:10
fonte
1

XAML Describes Data in a Concise, but Human and Machine Comprehensible, Way

In teoria ogni nuova lingua è qualcosa che devi imparare. Molte persone lo farebbero preferisco parlare molte / più lingue - poiché è considerato ricchezza linguistica. Questo esiste ed è relativo alle lingue naturali, ma non necessario ai linguaggi di programmazione.

Io stesso ho programmato in un bel po 'di lingue inclusi i file batch, perl, lua, python, c ++ e c #. Ricordo tutti loro? No, posso cambiare usando un'altra lingua, ma ci vuole tempo. Basta scrivere ora in C #, quindi passare a C ++, si può facilmente mescolare è NULL, null, nil o nullptr a seconda del linguaggio di programmazione e del suo "dialetto". (c ++ normale, c ++ gestito)

xaml è xml "dialetto". È facile da imparare? basandomi su molte domande su altri forum, direi di no.

Sostituisce C #? No.

La risposta è abbastanza ovvia: preferirei avere un linguaggio di programmazione, che è buono progettato (C # - ad esempio riflessione del tipo di dati), ha una buona peformance (come C ++) e script (C # -script, C ++ / cling o anche meglio)

Attualmente C ++ e C # non soddisfano pienamente le mie esigenze, ma xaml è un formato di dati strano, che io non considererebbe un valore di apprendimento (solo avvolgendolo e nascondendolo dagli occhi dello sviluppatore)

Alla fine mi piacerebbe ricombinare il linguaggio naturale (parlato) con il linguaggio di programmazione (linguaggio costruito artificialmente) nella stessa lingua - quindi può essere usato per la comunicazione e dai programmatori - questo è più tardi nel futuro, quando il linguaggio di programmazione "architettura" o "schemi di progettazione" inizieranno a essere documentati.

  1. XAML allows for drawing Scalable Vector Graphics (SVG) Images and transformations.
  2. ...

XAML introduce effettivamente alcune nuove funzionalità migliorate rispetto a Winforms, quindi vale la pena di prendere in considerazione per usarlo. Ma alla fine se vuoi che l'interfaccia utente diventi completamente dinamica - xaml deve essere sostituito da un simile codice di runtime.

Alla fine l'interfaccia utente dovrebbe essere semplice da usare - e questo significa un insieme minimo di controlli, controlli simili (cancella, ok, scorciatoie, stessa larghezza / altezza e così via) il che significa che l'interfaccia utente può essere più o meno generata automaticamente.

Btw - è possibile incorporare direttamente nel codice xaml C #? Meta dati, stringa, commenti?

A volte è utile abusare o abusare del linguaggio in modo che nessuno lo immaginasse. Perl fa molto questo, ma preferisco una sintassi più pulita piuttosto che criptica. Ma C # contro xaml - avrei scelto C #.

    
risposta data 05.11.2015 - 21:44
fonte
0

Un vantaggio è che XAML può essere utilizzato in altre applicazioni. Un buon esempio è che XAML può essere sviluppato in Blend da un designer / artista mentre gli interni (codice dietro) vengono codificati in Visual Studio.

Credo che sia stato il tentativo di Microsoft di separare il markup dell'interfaccia utente rispetto al codice e di rendere possibile che l'interfaccia utente venisse codificata dai non programmatori utilizzando uno strumento come Blend.

Ma molti negozi non hanno Blend, quindi per molti di noi sembra una re-invenzione della ruota.

Ecco 8 punti acquistati da qualcuno più vicino al client Windows:

8 vantaggi XAML

    
risposta data 12.03.2012 - 21:43
fonte
-2

Un punto in cui non vedo molte risposte è che xaml racchiude il nucleo dei principi desgin di wpf. Separa la rappresentazione visiva e la logica visiva (in pratica questo è limitato ai trigger e tale, ma non assumendo controlli personalizzati questo è spesso tutto ciò che serve) dalla logica di business. Questo si accoppia anche come altri hanno notato con una sintassi expresive per il binding, proprietà associate e altri metadati che possono essere più prolissi nel normale codice C #.

Su una nota più personale, una cosa che trovo interessante su xaml è che beter rappresenta la gerarchia visiva dei controlli rispetto alla semplice generazione di codice. A prima vista è facile vedere come un controllo è collegato agli altri.

    
risposta data 13.03.2012 - 13:43
fonte

Leggi altre domande sui tag