Una macchina di stato o un motore di elaborazione dovrebbero essere estratti dall'interfaccia utente?

3

Sto lavorando su una suite di micro-servizi, con una GUI basata sul web. Stiamo utilizzando una macchina a stati di terze parti tramite chiamate REST. A volte otteniamo / impostiamo lo stato da uno dei nostri micro-servizi, mentre altre volte passiamo direttamente dalla GUI direttamente alla macchina a stati ignorando completamente i nostri micro-servizi.

Sono dell'opinione che l'interfaccia utente non dovrebbe farlo per alcuni motivi:

  • Preferisco che le GUI siano stupide; non avendo conoscenza di componenti come database, macchina di stato, memorizzazione nella cache, ecc.
  • Credo che la GUI sia solo un componente dell'applicazione, non l'applicazione stessa.
  • Credo che i micro-servizi dovrebbero essere in grado di funzionare in modo indipendente senza un severo requisito nell'interfaccia utente

Alcuni argomenti contro questo sono stati:

  • Il proxy di una chiamata REST tramite un micro-servizio aggiunge complessità al micro-servizio
  • È più rapido ed efficiente chiamare direttamente dall'interfaccia utente
  • Le nostre chiamate ai micro-servizi utilizzano anche REST, quindi non vi è alcuna differenza negli strumenti

Vorrei sapere se esistono raccomandazioni sulle migliori pratiche?

    
posta Ben Harrison 08.09.2016 - 23:05
fonte

1 risposta

6

Ho lavorato con l'interfaccia utente per molti anni e la mia esperienza dice che dovresti sempre astrarre tutte le funzionalità del programma dall'interfaccia utente come puoi .

Le interfacce utente sono abbastanza complicate da ragionare da sole. Incorporare qualsiasi tipo di logica che non sia direttamente correlata all'interfaccia utente porta infine a un'applicazione non mantenibile che non consente il riutilizzo del codice. In altre parole, un Big Ball of Mud .

D'altro canto, avere un focus particolare sull'interfaccia utente produce in genere un'interfaccia utente migliore (e una logica del programma migliore, su cui ci si concentrerà separatamente).

Tutto ciò che è stato detto, è impossibile creare un'interfaccia utente con la conoscenza zero del sistema sottostante. Il mio consiglio è quello di sequestrare tale conoscenza in View Models.

    
risposta data 09.09.2016 - 00:26
fonte

Leggi altre domande sui tag