Tecnologie Web su app GUI

3

Ho sviluppato molte applicazioni GUI per la piattaforma Windows durante la mia prima carriera professionale, e ho visto diversi framework GUI venire, avere riviste intere dedicate a loro, e poi svanire. MFC è iconico.

Con l'incarico di scrivere un'altra applicazione GUI, ho iniziato a fare ricerche su framework multipiattaforma come Qt e WxWindows. Ho trovato le stesse ripide curve di apprendimento che conoscevo da prima, e gli strumenti non sono di grande aiuto nella costruzione di un'interfaccia utente funzionale ed elegante perché è goffa e complicata.

Ma la gente sta costruendo interfacce utente belle e funzionali sul Web tutto il tempo (guarda questo sito!). Gli standard, le librerie e gli strumenti sono certamente lì.

Il mio pensiero e la mia domanda: perché non scrivere una GUI in cui la maggior parte dell'interfaccia utente è gestita da un browser incorporato? So già che i widget Qt supportano gran parte dei CSS e JavaScript, e i programmatori con una buona conoscenza dello sviluppo web sono relativamente facili da trovare, ..., quindi ...

Hai già fatto qualcosa del genere? Qual è la tua esperienza / consiglio?

Un widget del browser probabilmente supporterà un sottoinsieme delle funzionalità dei browser mainstream, ma abbastanza per produrre un'interfaccia utente ricca utilizzando le tecnologie web. C'è il vantaggio aggiunto delle enormi semplificazioni possibili quando i web-stuff non devono parlare con un server per servire le richieste di interfaccia utente.

La mia idea non è di incorporare un browser in piena regola (yikes!). È per consentire l'uso delle tecnologie web nella programmazione della GUI.

[Edit]

Non ho accettato una risposta perché quelli finora sono suggerimenti su come fare qualcos'altro, e non sull'esperienza precedente che fa ciò che suggerisco. Non sono nemmeno opinioni o speculazioni sulle insidie o sui benefici di farlo nel modo suggerito, che è quello che mi aspetterei nell'improbabilità di esplorare nuovi territori utilizzando un widget del browser per fornire una parte dell'interfaccia GUI. Pensa a HTML, CSS e JavaScript limitato, senza Internet, non .Net o Java (o Air o Flex / Flash), nessun database relazionale; solo eseguibili, librerie e modelli che possono essere installati copiandoli e la persistenza nella directory home dell'utente utilizzando il file system.

Alcune domande correlate alle aggiunte

Queste sono tratte dalle risposte finora:

  1. Esperienza utente: la WebApp che esegue StackExchange è abbastanza ricca e intuitiva?
  2. Aspettative degli utenti: il Web non è e non sono gadget portatili (smartphone e tablet) che spostano l'esperienza utente dalla tradizionale GUI?
  3. Potrebbe essere che ci siano app che devono essere GUI ma che beneficiano di webified mentre altre non lo fanno?
posta Apalala 05.01.2011 - 06:48
fonte

5 risposte

4

In realtà, una volta ero coinvolto nel lavorare su un'app Web, che alla fine abbiamo quasi finito con il marketing come "applicazione desktop" standard. Per qualche motivo, il marketing ha capito che uno dei nostri principali clienti desiderava che il prodotto " appaia come un'applicazione GUI ", così abbiamo creato una piccola app per Windows che ospita solo il controllo IE ActiveX e indica la nostra app Web (nascondendo il fatto che in realtà è un browser). Così efficacemente, per un occhio inesperto sembrava che il prodotto fosse un'app standard per la GUI.

Certo, questo non è esattamente quello che stai chiedendo (stavamo ancora puntando a un'app Web e non ospitiamo l'intera localizzazione), ma è abbastanza vicino. Sarebbe stato banale, a parte alcuni dei servizi Web remoti che ha usato, impostare questo per avere tutto il resto seduto sulla macchina locale.

Questo era il problema più grande però: guarda e senti . Soprattutto sentire.

Le persone si aspettano determinati comportamenti dalle ricche applicazioni della GUI (trascinamento della selezione, finestre e finestre di dialogo native-feeling, ecc.). È estremamente difficile ottenere un aspetto e un aspetto genuinamente nativo da un front-end web. Esiste semplicemente un flusso utente diverso in quello che ci si aspetta quando si apre un'app Web in un browser (ad esempio Gmail), a differenza di quando si utilizza un'applicazione Rich GUI (ad esempio Outlook). Nella mia esperienza, cercare di equiparare i due è chiedere guai. Se pubblichi una "app GUI" che si comporta come un'app Web, è probabile che tu sia inondata di problemi di usabilità e LAF.

TL; DR - Le app Web e le app GUI hanno un aspetto e una sensazione diversi e, in una certa misura, una diversa cultura dell'utente. Mentre è tecnicamente possibile fare qualcosa del genere, dalla mia esperienza, non vorrei andare lì (di nuovo). Nella migliore delle ipotesi è probabile che tu finisca con un orrendo mix di scripting lato client che sarà più difficile da imparare, usare e mantenere rispetto a fare il tutto come una normale app GUI in primo luogo. E la gente si lamenterà delle cose "non proprio sentite bene" per un'app nativa per la GUI. È allettante pensare che non lo faranno, ma lo faranno.

    
risposta data 05.01.2011 - 23:07
fonte
2

Questo è stato esattamente il mio approccio per trasformare il client Qt / C ++ Perforce P4V in una piattaforma per le estensioni scritte dall'utente usando HTML5, ora chiamata l'API JavaScript Perforce per Visual Tools. L'idea risale al 2007 e il primo prototipo era in esecuzione all'inizio del 2008. È particolarmente efficace combinare Qt e HTML5 (se si sta già distribuendo un'applicazione binaria).

Da questo progetto sono nate diverse importanti iniziative per la nostra azienda, incluso il Perforce Ecosystem, ora guidato da Jeff Bates, fondatore di Slashdot.

Ecco l'articolo del mio blog sulla storia e la genesi di questo progetto: link

Da allora, abbiamo intenzione di portare questa capacità HTML5 al nostro P4Eclipse, ai servizi Web e ad altri client. Ci sono anche piani per creare un client configurabile in remoto usando HTML5 come ambiente di rendering.

Quindi direi che questo è stato un progetto di grande successo, non solo per cambiare la nostra visione di un programma client one-size-fits-all, ma per portare l'idea di un ecosistema di comunità per l'innovazione nelle nostre iniziative strategiche.

In futuro, le applicazioni web stanno colmando il gap e potrebbero superare quello che otterresti da un Qt / C ++ / HTML5 ibrido come P4V e P4Admin di Perforce. Naturalmente, tutte le soluzioni che hai codificato sul tuo modello ibrido nelle tecnologie web sono facilmente trasferite a servizi Web o implementazione di applicazioni web.

    
risposta data 24.06.2011 - 01:04
fonte
1

Stiamo mixando interfacce html e interfacce WPF al momento. Ci sono alcune cose da considerare.

Come se volessi ospitare il tuo sito web in un browser embeded, potresti ancora avere problemi con diversi browser su sistemi diversi. Ad esempio, Chromeium su macchine Linux e IE su. Net.

È possibile controllare ciò incorporando il browser che si desidera utilizzare nell'applicazione. Questo è stato fatto per .Net con chromium: link

Questo è anche un punto di svolta nella comunità degli sviluppatori di dispositivi mobili. PhoneGap ha un sistema in cui si creano pagine Web che vengono poi compilate in un browser incorporato con ganci nel sistema operativo per funzionalità più avanzate. Posso immaginare che potresti ottenere più rapporti di esperienza dagli sviluppatori che l'hanno provato.

    
risposta data 05.01.2011 - 09:01
fonte
1

Una volta sono stato coinvolto nella creazione di tale applicazione. È stato scritto in Qt e C ++, ma la maggior parte delle finestre conteneva solo un singolo QWebView che è stato quindi alimentato con HTML personalizzato. Alcune note casuali:

  • E 'stato in qualche modo più facile sviluppare rispetto ai tradizionali web app, dal momento che si doveva indirizzare un solo motore HTML (uno dei più potenti, BTW).
  • E 'stato in qualche modo più difficile da sviluppare rispetto ai tradizionali web app, perché manipolare HTML in C ++ è unconvinient a dir poco.
  • HTML manca di molte funzionalità relative alla GUI, fornite prontamente dal tradizionale toolkit della GUI. Ad esempio, ho dovuto ricreare il controllo della visualizzazione ad albero in JavaScript, con molti casi speciali come navigazione da tastiera, selezione del mouse. Tale controllo è una parte standard di praticamente ogni framework della GUI.
  • Interagire con i widget è complicato. Per ottenere il testo di una voce di testo Qt, tutto ciò che devi fare è chiamare QString value = entry->text() . Per ottenere il testo di entrata HTML all'interno QWebView abbiamo dovuto emettere JavaSctipt personalizzato che recupera il valore di ingresso, quindi decomprimere i dati da QVariant restituito come risultato. O qualcosa del genere.
  • Era difficile mantenere coerenti le parti di applicazione Qt e HTML. Abbiamo terminato con tre [!] Motori a tema separati.
  • Le prestazioni non erano ottimali e quell'applicazione era una risorsa. È difficile dire se fosse colpa dell'HTML, però.
risposta data 03.02.2014 - 21:25
fonte
0

Ho visto alcune applicazioni che hanno parti grandi scritte in tecnologie web ma IMO che sconfigge molto lo scopo di un'applicazione desktop nella possibilità di avere un'interfaccia utente più ricca, anche se quella distinzione sta scomparendo con Silverlight e Flash ecc. vuoi usare la tecnologia web costruire una web app.

    
risposta data 05.01.2011 - 06:52
fonte

Leggi altre domande sui tag