Come implementare in modo efficiente questa catena di elaborazione in background?

3

Sto lavorando a un software audio che utilizza il servizio web The EchoNest per identificare e recuperare i metadati relativi alle canzoni audio e vorrei avere qualche consiglio sull'implementazione di una catena di elaborazione in background.

(per ottenere l'immagine completa, ti mostrerò cosa ho già fatto)

Ho implementato la seguente catena che è obbligatoria prima di interrogare il servizio sui dettagli di un brano:

Nonc'èmoltodadiretrannecheprimadipoterinterrogareidatideibrani,abbiamobisognodellasuaimprontadigitaleediunIDdicanzonerestituitodalprocessosecondarioIdentifica.Dituttiquestipassaggi,accadonotuttilocalmentemal'ultimo(Identifica).

Orasullapartedelsistemachestocercandopericonsigli:

Qui sopra ci sono i diversi tipi di query che possono essere richiesti per una canzone, non sono interdipendenti poiché abbiamo già l'unica cosa necessaria, l'ID della canzone (diagramma 1). Nota che ne ho solo aggiunti alcuni, ma ce ne sono quasi 30 (vedi qui ).

Requisiti / architettura:

  1. l'utente può rilasciare i file in qualsiasi momento, vengono accodati per l'identificazione
  2. Le query
  3. possono essere eseguite parallelamente al passaggio 1 e facoltativamente contemporaneamente

Idealmente, il sistema dovrebbe essere:

  • facilmente estendibile quando, ad esempio, implemento un nuovo tipo di query.
  • facile da usare, accodico solo una query alla catena e aspetto una risposta

Ambiente:

Sto usando C # con Dataflow (Task Parallel Library) , al momento ho avuto un buon successo implementando il diagramma 1 utilizzando questo approccio .

La mia domanda:

Esiste un modello particolare / noto per affrontare questo problema?

    
posta Aybe 14.10.2014 - 21:23
fonte

1 risposta

2

Utilizza una macchina a stati finiti per la "catena", in cui ogni fase della catena è un sotto-stato. Ad esempio, gli stati possono essere:

  • Inizio
  • Elaborazione iniziale
  • Aggiunta alla raccolta
  • Fingerprinting
  • Interrogazione
  • Pronto

Le macchine a stati finiti sono buone per coordinare operazioni asincrone. Aggiungerei anche traccia o registrazione per indicare quando si verifica una transizione di stato.

    
risposta data 05.11.2014 - 22:34
fonte

Leggi altre domande sui tag