Qualche consiglio per quanto riguarda un'architettura esagonale con la serializzazione come metafora primaria?

StackOverflow https://stackoverflow.com/questions/2142868

Domanda

Ho avuto l'opportunità di riscrivere il nucleo di un'applicazione sviluppata internamente che il mio datore di lavoro utilizza per il controllo dei documenti. Il mio elenco dei requisiti "core" più o meno così:

  • Rendere più facile per importare / esportare in vari formati (raccolta di file + abbastanza estesa metadati essere il fattore comune)
  • Rendere più facile aggiungere nuovi campi (la cui presenza è data-driven piuttosto che globale) a più livelli
  • Introdurre diversi nuovi pezzi di funzionalità che violano la premessa fondamentale del vecchio sistema (in pratica, la struttura dei documenti di metadati che circonda sta subendo un cambiamento radicale)
  • mantenere la capacità di rapporti strettamente documento di controllo e di metadati e le convenzioni

Ho giocato in giro con un'architettura che utilizza la serializzazione come mezzo principale di comunicazione con il mondo, e finora sono soddisfatto dei risultati - posso serializzare a & deserialize da un'interfaccia utente, un negozio di XML , e un database con facilità senza modificare le classi di base per soddisfare le varie sorgenti e pozzi. Ritengo questo sia fondamentalmente un architettura esagonale - si tratta ogni serializzazione destinazione nello stesso modo (come una dipendenza iniettabile per il metodo Serialize).

Questa è la mia prima andare in giro con questo approccio, tuttavia, e mi chiedo se qualcuno ha qualche esperienza con esso, ed eventuali approfondimenti o consigli in caso affermativo.

È stato utile?

Soluzione

Il mio primo istinto è che tutto ciò che dipende in larga misura la serializzazione delle classi di base rischia di incorrere in problemi di controllo delle versioni pelose - modifiche al vostro core stanno andando a richiedere la modifica simultanea di tutti i fornitori di serializzazione e consumatori (e probabilmente tutti vostri negozi persistenti), piuttosto che un / approccio basato sui contratti di servizio che consentirebbe l'interfaccia di rimanere statica, ove possibile.

Tuttavia, è davvero difficile dare qualsiasi tipo di opinione senza fare un grande insieme di ipotesi su come il sistema sta per essere utilizzato e si evolvono nel corso del tempo - se sei felice con l'approccio, continuare con esso e fateci sapere come va.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top