Crea un'app per desktop e Web

4

Il nostro team sta attualmente sviluppando un'applicazione ibrida. È simile a Sigma Estimates - una GUI con tabelle, moduli, una barra laterale con una struttura ad albero, ecc. Il software consente a un utente di lavorare con un database nel cloud - creare strutture di tabelle in base ai record nel database.

Se la connessione a Internet è disponibile, il software, un'app Web o un'app desktop, ha facile accesso al database inviando richieste. Ma un utente può anche fare una copia di quel database (precisamente, una copia della versione attuale del database), così che quando non c'è Internet, lui / lei può ancora accedere ai record al suo interno. Ecco perché è necessaria un'app desktop.

Penso che sia ovvio che sia l'app web che l'app desktop dovrebbero avere la stessa vista, la stessa logica dei suoi componenti, tabelle e così via.

Dovremmo sviluppare un'app Web e quindi provare a creare una versione desktop o viceversa? Quali tecnologie potrebbero essere utilizzate?

In precedenza abbiamo esaminato JavaFX, ma abbiamo visto che è troppo difficile creare un sito web da questo. Poi abbiamo visto Electron, ma non siamo sicuri se sia la scelta giusta, perché sembra che Electron sia usato solo per desktop. Siamo stati incuriositi dalla soluzione per app desktop di Slack, ma il nostro software è leggermente diverso e non richiede una connessione costante a Internet.

    
posta Justas B. 23.06.2016 - 12:06
fonte

2 risposte

6

C'è una differenza tra la codifica solo una volta e la compilazione / collegamento / creazione solo una volta. Il primo è desiderabile; il secondo (che penso tu stia suggerendo) di solito non vale la pena.

Codifica il nucleo della tua applicazione in una lingua che esiste sia sul desktop sia sul server web (e su qualsiasi dispositivo mobile puoi vederlo in futuro). Progetta un'API standard per questo.

  1. Sul lato server, crea un programma che riceve richieste, utilizza la tua API per elaborarle e presenta i risultati in qualsiasi modo sia appropriato.

  2. Sul lato desktop, crea un programma con un'interfaccia utente grafica e utilizza la tua API per eseguire il lavoro effettivo.

Anche se la logica interna può essere la stessa, i casi di utilizzo del lato server e del desktop sono sufficientemente diversi che "creare lo stesso file .exe" è donchisciottesco e non necessario.

L'ho fatto con un progetto sostanziale in cui il core è C ++ e la periferia è C ++ (server e Windows), Objective-C (Mac e iOS) e Java (Android). Correttamente partizionato, questo ha ridotto enormemente lo sforzo di sviluppo senza l'eroismo di creare un singolo file eseguibile multiuso.

    
risposta data 23.06.2016 - 12:16
fonte
0

È possibile separare la parte dell'interfaccia utente (che si tratti di web o desktop) dalla parte dell'applicazione principale (potrebbero essere diversi processi che comunicano attraverso alcuni IPC ). Il Model View Controller modello di paradigma o design è probabilmente pertinente.

Un problema specifico riguardante le interfacce Web è che molto spesso (ma non sempre, ad es. l'interfaccia web incorporata del tuo router box o forse una stampante) hai molti utenti simultanei (e sessioni web, gestite attraverso cookie ), e potresti dare un modo per cooperare (o almeno "chattare") - o sul contrariamente decide di isolare ogni sessione utente. Inoltre, le interfacce web di solito hanno qualche aspetto JavaScript (con AJAX ) per il codice in esecuzione all'interno di ciascun browser.

Se si esegue la codifica in C ++, è possibile utilizzare Qt per l'interfaccia utente della versione desktop e Wt o libonion (o altra libreria di server HTTP) per l'interfaccia web. Troverai librerie simili per altre lingue (ad es. Per Ocaml: Ocsigen per l'interfaccia utente web e LabGtk per l'interfaccia utente del desktop)

    
risposta data 23.06.2016 - 12:28
fonte

Leggi altre domande sui tag