In un certo senso capisco cosa significa, ma non abbastanza da spiegarlo da solo. È un concetto chiave quando si parla del pattern MVC e mi stanno dando problemi per spiegare anche questo concetto.
In un certo senso capisco cosa significa, ma non abbastanza da spiegarlo da solo. È un concetto chiave quando si parla del pattern MVC e mi stanno dando problemi per spiegare anche questo concetto.
In parole povere:
Immagina questo: negli anni Ottanta hai scritto un software che consentiva alle persone di monitorare le proprie finanze personali. Quel software mostrava i report in modalità solo testo in uno schermo al fosforo e salvava i dati sui file del dischetto.
Più tardi negli anni novanta hai riscritto il programma per lavorare nell'ambiente grafico di Windows. Dovevi creare finestre e finestre di dialogo interessanti e accettare l'input del mouse e salvare le informazioni nei file MS Access. Quella parte che fa il monitoraggio finanziario non è cambiata molto, hai dovuto riscrivere in un'altra lingua, aggiunto alcuni aggiustamenti ma la maggior parte non è cambiata molto.
Poi nel 2010 hai riscritto l'app per essere basata sul Web e i dati sono stati archiviati in un database MySQL in alcuni cloud. La parte di monitoraggio finanziario del software non è cambiata in modo drammatico, è migliorata, forse è stato necessario tradurla in un dialetto più moderno, ma avendo cura di non romperlo. Continua a basarsi sulle cose che tuo nonno ti ha insegnato prima che i computer diventassero mainstream. Tuo nonno era un contabile e sapeva come fare tutte le cose finanziarie con solo penna, carta e calcolatrice da tavolo. La conoscenza di tuo nonno è ciò che inserisci nel tuo software per cominciare sotto forma di regole, ordinanze giuridiche, flusso di lavoro, algoritmi, condizioni ecc.
Bene, la parte del software che ha cambiato il minimo in tutta questa evoluzione è ciò che chiamiamo logica aziendale. La parte che tuo nonno sapeva come fare manualmente. Lo chiamavamo sapere come, le regole aziendali, ecc. Ora, nel mondo del software, la parte del codice sorgente di un programma che esegue i calcoli e applica condizioni e trasformazioni, se chiamato logica aziendale .
La logica aziendale è indipendente dalla presentazione e persistente-agnostica. Significa che non importa se un report viene mostrato sullo schermo di un iPhone o stampato su una stampante a matrice di punti, e inoltre non importa se i dati vengono salvati su file, nel cloud o devono essere digitati ogni volta da un operatore.
"Business Logic" * è la parte della tua applicazione che si occupa esclusivamente delle regole, dei processi e degli algoritmi necessari per risolvere il problema in questione (in altre parole, affinché l'applicazione soddisfi i suoi ragion d'essere ) senza alcuna preoccupazione per le problematiche periferiche come precisamente come ricevere input dall'utente, precisamente come presentare all'utente, precisamente come persistere nel database, e in generale, senza qualsiasi preoccupazione per i dettagli tecnici della nitidezza di come convincere la macchina a eseguire le operazioni di basso livello necessarie per risolvere il problema.
* Preferisco i termini "Application Logic" o "Domain Logic".
La logica aziendale è la parte del software in cui si implementano algoritmi per risolvere il problema che si sta tentando di risolvere con il proprio programma. È la parte in cui avvengono i calcoli reali. Le altre parti sono per l'accesso al database, l'esportazione in diversi formati di file, rappresentazioni visive.
In MVC, i controller sono molto specifici dell'applicazione. Quindi la Business Logic deve stare all'interno del MODELLO per essere riutilizzata.
MVC potrebbe anche significare che i "Controllori" incapsulano la logica aziendale per le "Visualizzazioni". I punti di vista in questo senso sono magri, i modelli possono essere magri o magri (in base alle convalide e ai calcoli specifici dei dati necessari) e i controller gestiscono il contenitore delle funzionalità in base alle viste (quando / dove / come).
Leggi altre domande sui tag terminology business-logic mvc