MVC: come progettare l'interfaccia per il database

1

Sono un principiante dello sviluppo web e ho sentito parlare di MVC.
Se ho ragione, è il Controllore che si occupa del recupero dei dati dal DB.
Quindi ho una domanda:
Nel pattern MVC, quanti oggetti devo interfacciare con DB dovrei usare?

Ad esempio, nel mio progetto web ci sono due controller: ControllerA e ControllerB. Ho due opzioni:
1) Genera solo un oggetto per interfacciare con DB, e i due controller useranno lo stesso oggetto.
2) Ogni controller avrà il proprio oggetto da interfacciare con DB.

    
posta Yves 29.05.2017 - 08:34
fonte

2 risposte

2

In MVC il DB non ha importanza. Non ha nemmeno bisogno di esistere.

Il modello conta. I due controller parlano con un modello se parlano allo stesso modello. Parlano con molti modelli se parlano con modelli diversi.

Qualsiasi modello può parlare con uno, molti o nessun DB. Questo è fuori dalla preoccupazione di MVC.

Il modello non è una parola in codice per il DB. È il codice responsabile della modellazione dello stato del tuo sistema. In un gioco di scacchi sa dove sono i pezzi. In un sito Web sa se l'utente ha effettuato l'accesso. Il DB non deve sapere nulla di ciò. Il DB, se esiste anche, sa cosa deve essere ricordato. È responsabilmente la persistenza. Non modellare.

Questo è particolarmente vero nel web in cui uno dei modelli è tenuto nel client web.

    
risposta data 29.05.2017 - 10:34
fonte
-1

MVC è un modello architettonico che si concentra sulla separazione delle preoccupazioni. Ciò significa che ogni componente della tua applicazione dovrebbe svolgere solo un compito e farlo bene. È questa preoccupazione che aiuta a identificare i componenti come modelli, viste e controllori.

Di solito, una risorsa (in genere un record in un DB) è rappresentata come un modello. Di ', hai una tabella per gli utenti in un sito web. Un modello corrispondente chiamato qualcosa come UserModel esporrà tutte le API pertinenti per creare, recuperare, aggiornare ed eliminare un utente dal DB.

Il controller sarà in genere il gateway per la tua applicazione. La logica della delega risiederà qui. Ad esempio, se fosse necessario modificare gli utenti in modo massivo, una richiesta a un controller (forse denominato come) BulkUserController esporrà un'API per modificare più utenti. A sua volta, questo controllore delegherebbe l'attività di modifica per ogni utente in richiesta a UserModel . Si noti che il controller gestisce solo la delega qui.

Ora, tornando alla domanda sull'interfacciamento con il DB. Poiché i modelli rappresentano la risorsa, sono quelli che interagiscono con il DB. Ciò significa che controller come BulkUserController e SingleUserController (per mancanza di immaginazione) interagirebbero con UserModel che a sua volta interagisce con l'istanza sottostante dell'interfaccia DB. In genere l'istanza dell'interfaccia DB gestiva un pool di connessioni al DB per l'esecuzione di interrogazioni parallele sul DB.

    
risposta data 29.05.2017 - 11:04
fonte

Leggi altre domande sui tag