Comprensione degli invarianti di stile di tubi e filtri

4

Sto sviluppando un'applicazione in cui legge i dati da diverse origini dati. E poi quei dati dovrebbero essere pre-elaborati e quindi passare attraverso una serie di passaggi (filtri?) In cui tali dati verranno elaborati e aumentati. Infine, questi dati dovrebbero essere scritti in un database comune.

Sto pensando a un tipo di stile Pipe and Filter per implementarlo. Mentre sto imparando su questo, mi sono imbattuto in questi invarianti di questo stile [qui] .

Independent entities
---- Do not share state
---- Have no knowledge of other filters

Transformation
---- Incremental
---- Not dependent on order in the chain

E ho problemi a capirli. Perché quelli sono considerati come invarianti. ?

Che succede se condividono lo stato.
cosa succede se hanno una conoscenza di altri filtri.
Cosa succede se hanno bisogno di dipendere da altri filtri (nel mio caso un pre-processo è d'obbligo) e cosa è incrementale.

Poiché so che violare gli invarianti potrebbe erodere il codice con il tempo. Quindi, se uso lo stile Pipe e Filter nella mia app, che tipo di cose violerà questi invarianti o quali sono le cose che posso fare per violare questi invarianti?

Qualcuno può aiutarmi su questo.

    
posta prime 26.12.2017 - 19:50
fonte

1 risposta

4

Why those are considered as invariants. ?

Perché sono le cose intrinseche che definiscono questo tipo di architettura. Se consenti lo stato o la conoscenza condivisa dei filtri, non stai più facendo Pipe e filtro, stai facendo qualcos'altro.

L'intero punto di questa architettura è creare flussi di lavoro indipendenti, componibili e parallelizzabili. Ciò consente di ottimizzare l'elaborazione tramite il riordino dei filtri. Ciò ti consente una grande scala, dal momento che l'elaborazione dell'entità può essere estesa a molte macchine. Consente un facile sviluppo poiché ciascun filtro può essere implementato (e testato e distribuito) in isolamento. E poiché queste regole sono uniformi per tutte le entità e tutti i filtri, ti permettono di creare strumenti di alta qualità per usarle.

Non appena inizi a fare eccezioni a queste regole, inizi a perdere i vantaggi di averle. Se condividi lo stato, le tue entità non possono essere banalmente parallele. Se i tuoi filtri dipendono dall'ordine, non puoi ottimizzarli e puoi causare errori impercettibili a causa della dipendenza implicita.

    
risposta data 26.12.2017 - 20:23
fonte

Leggi altre domande sui tag