Scegliere il paradigma giusto quando si costruisce una GUI per un'applicazione

2

Sto costruendo una GUI per un programma CL e ho la seguente domanda

È meglio

  1. Fai in modo che la GUI invochi il programma dietro le quinte usando una shell con alcune opzioni, ad esempio: Se fossi in fase di scrittura di un frontend git, avrei semplicemente fatto in modo che ogni clic del pulsante corrispondesse a un comando git foo bar eseguito nella sua shell
  2. Oppure bypassa la CLI del programma e collegala direttamente al livello sottostante

Avvertenza: non ho creato l'app in questione, ma ho accesso alla fonte. Sto chiedendo se entrambi sono schemi di sviluppo accettabili e quali sono alcune cose di cui dovrei essere a conoscenza quando scelgo entrambi?

Comprendo che la programmazione sulla CLI fornisce un'interfaccia statica e non mutevole a cui posso programmare e che le interiora possono cambiare fintanto che l'interfaccia rimane la stessa, ma non si aggancia direttamente al codice sotto la CLI per consentire maggior portata del debug e messaggi di errore più ricchi?

    
posta Srini 26.02.2018 - 18:42
fonte

2 risposte

5

Ho visto un programma di un fornitore fornito con due interfacce utente, ad esempio una GUI e un programma di console. Sono implementati come due EXE che chiamano una DLL comune.

E usando l'API della DLL (ignorando entrambi gli UI / EXE esistenti) posso includere le funzionalità del programma nella mia applicazione.

quali sono alcune cose di cui dovrei essere a conoscenza quando scelgo

La CLI potrebbe essere meglio documentata (e più stabile, meglio supportata) rispetto all'API esposta dalla DLL (che può essere nota solo al fornitore e che può cambiare da versione a versione).

Potrebbe anche valere la pena notare che guidare la CLI di un EXE significa eseguirlo "fuori processo"; mentre usare l'API di una DLL significa usarlo "in-process". Ciò potrebbe influire sulla stabilità / affidabilità e prestazioni.

    
risposta data 26.02.2018 - 19:07
fonte
3

Secondo la mia esperienza è insolito, ma non è raro che un gui invochi un cli. vale a dire che il pulsante preme su un'interfaccia grafica per lanciare una linea di comando dietro le quinte.

L'argomento principale contro di esso è che hai una portata limitata per gestire errori e più errori che possono verificarsi. in particolare gli errori di autorizzazione.

diciamo che il mio gui esegue "format c:" quando clicco sul pulsante "check for virus". Il sistema operativo è abbastanza intelligente da attivare un popup che dice "ha bisogno di autorizzazioni di amministratore" quando viene eseguito il comando, ma come può la mia app riprenderlo e automaticamente fare clic su Sì?

Non è impossibile, ma è esattamente il tipo di cosa che il sistema cerca di impedirti di fare.

Ovviamente questo è un esempio estremo, ma se è giusto che il cli restituisca "sovrascrivi il file y / n" o "nessun permesso per c:" Devo analizzare la stringa e capire cosa sta succedendo. Mentre una API mi darebbe una bella eccezione

    
risposta data 26.02.2018 - 19:00
fonte

Leggi altre domande sui tag