Applicazioni web: esiste qualcosa come "semi-stato"?

2

Sono un po 'un dilettante quando si tratta di sviluppo web, ma ho bisogno di fare qualcosa di un po' più sofisticato del solito al lavoro e non sono sicuro di come sia meglio procedere.

L'installazione è la seguente. Ho una configurazione del server web che accetta alcuni input dall'utente, raccoglie una quantità ragionevolmente grande di dati da varie API Web, esegue alcune elaborazioni e invia alcuni dati elaborati all'utente. In particolare, il server è senza stato.

Quello che voglio fare è consentire all'utente di ispezionare l'output e richiedere in modo dinamico informazioni aggiuntive sui dati non elaborati. Posso pensare a due modi potenzialmente sensibili per farlo:

  1. Fornisci all'utente tutti i dati e lascia che sia lui a risolverlo.
  2. Archivia i dati non elaborati in un database e recuperali quando richiesto.

Posso escludere l'opzione 1 perché alcuni dei dati non elaborati sono proprietari: sono autorizzato solo a distribuire statistiche riassuntive. E preferirei non optare per l'opzione 2 perché sembra un calvario e non è necessario conservare i dati una volta che l'utente ha finito di fare richieste. Quello che voglio è una terza opzione che mi consente di mantenere i dati nella prima richiesta in giro per le richieste successive (fino a quando, ad esempio, l'utente non è attivo per 5 minuti o qualcosa del genere). Esiste questo tipo di sistema? O c'è una ragione per cui è una cattiva idea?

    
posta Paul Siegel 11.10.2015 - 07:05
fonte

1 risposta

3

Non c'è niente di particolarmente sbagliato nell'avere una comunicazione di stato piuttosto che stateless. Ma è più difficile da implementare dal punto di vista del client e del server.

Nel tuo caso, penso che la risposta sarà determinata dal fatto che tu sia in grado di fare la seconda richiesta "aggiuntiva" senza prima fare la prima richiesta di "elaborazione" e come gestisci questo processo.

Immagino che "l'elaborazione" sia un processo computazionalmente costoso, che non si vuole ripetere, quindi in ogni caso il caching del risultato sembra una buona idea. Cosa succede se il client invia la stessa richiesta di processo due volte, per esempio? vorresti solo restituire il risultato.

Una volta che i risultati intermedi sono fluttuanti, è possibile offrire un elenco di possibili richieste "aggiuntive" tramite una terza richiesta di "elenco di dati intermedi". questo ti permetterebbe di mantenere il servizio prettamente stateless, dato che puoi fare questa richiesta di "lista" in qualsiasi momento e poi seguire una delle sue opzioni senza dover fare la prima richiesta di "processo".

Il periodo di tempo in cui mantieni i dati intermedi è complicato. Ma forse puoi offrire al cliente un servizio "elimina i dati intermedi", in modo che possano dirti quando hanno finito.

    
risposta data 11.10.2015 - 22:36
fonte

Leggi altre domande sui tag