Nella mia applicazione web che utilizza un framework MVC che ha diversi moduli per modelli, viste e controller, parlo con diversi database e API. Questi sono implementati come modelli individuali.
Numerosi dati vengono immessi dall'utente in diverse schermate. Questi dati entrano nella sessione. Alcuni di questi dati sono metainformazioni che convalidano il successo del processo, e alcune sono cose che voglio mantenere. Questi dati dovrebbero essere scritti su un file nel file system e il percorso di quel file con alcune meta-informazioni è memorizzato in un database. Successivamente, verrà visualizzata una pagina di conferma per l'utente.
Ora sto cercando di capire dove inserire la scrittura del sottoinsieme dei dati accumulati nella sessione nel file nel mio formato specifico.
Ci sono diversi pensieri che ho in merito. Non sono sicuro quale sia il più giusto .
-
Dovrebbe essere una vista perché prende i dati che sono già presenti nella sessione dell'utente e la presenta in un modo specifico: il formato del file (che è XML, ma non è rilevante). La formattazione e la scrittura del file sono implementate lì.
Ragionamento: la vista HTML predefinita che esegue il rendering dei dati come sito Web nel browser dell'utente ha l'interfaccia del server web impostata come canale STDOUT. Allo stesso modo, una vista JSON presenta elementi nel caso in cui venga effettuata una chiamata API. Se scriviamo su un file, lo STDOUT della vista che formatta il file è impostato su un handle locale e noi lo scriviamo.
-
Ci dovrebbe essere una vista per portare i dati nel mio formato XML, ma un modello per scrivere i dati nel file.
Ragionamento: perché dopo aver scritto il file, verrà visualizzato un altro sito web. Solo una vista può essere alla fine della catena di cose che fanno cose nel corso della vita di una gestione delle richieste. Ma poiché i dati vengono formattati, una vista è appropriata. Semplicemente restituisce i dati formattati invece di scriverli su un sink (STDOUT).
-
Dovrebbe essere un modello , perché tratta i dati.
Ragionamento: i modelli sono origini dati e sink di dati. Anche se la parte sorgente è assente qui c'è ancora un sink di dati. Anche il fatto che debba essere formattato è neglegabile perché se dovessimo parlare ad es. una API RESTful di qualche tipo dovremmo anche prima formattare i dati come parte di una richiesta GET (che è molto semplice) o forse una rappresentazione JSON come corpo di una richiesta POST / PUT.
Il codice che formatta i dati in XML è già stato creato come classe autonoma che non è ancora legata alla webapp.
La mia domanda è questa: Dove nell'applicazione dovrei usare quella classe e scrivere il file su disco in modo da non rompere il pattern MVC?
Casi esemplificativi dove si verificherà questo processo specifico includono:
- un modulo di feedback / sondaggio utente con più pagine, come il sondaggio utente di Overflow dello stack,
- una canalizzazione di ordini di e-commerce,
- inserimento dati di back-office che comunica con terze parti tramite un'API basata su file dove l'invio avviene in modo asincrono in un momento successivo non correlato