Non necessariamente
Questa è la risposta più semplice che io penso. Lasciami spiegare.
Il modello di esecuzione in 4 passaggi .
Btw, il tuo " modello " mi ricorda il modello di unità di lavoro .
I wonder if we are doing something wrong in some cases?
Non necessariamente. Se supponiamo che lo scopo di sottostruttura di qualsiasi applicazione aziendale sia:
- Raccolta dati
- Elaborazione dati
- Memorizza i dati
- Fornisci dati
Veniamo alla conclusione che ci potrebbero essere diversi modi per raggiungere questo obiettivo. Tuttavia, le differenze saranno semplici dettagli di implementazione .
Il modello di esecuzione a 4 passaggi apparirebbe diverso nel sistema distribuito, dove le transazioni commerciali non sono sempre ACID.
I sistemi distribuiti sono la strada da percorrere? Diavolo, no!! Dipende dai bisogni.
La strada da percorrere è (o dovrebbe essere) il modo in cui funziona. La soluzione, ripetitiva o meno, dovrebbe soddisfare le tue esigenze e aspettative. Se hai trovato il pattern che funziona, (sei fortunato!), Cosa c'è di sbagliato in questo? Non appena è adeguato, le altre strategie (modelli) non contano.
La concorrenza
In this case, could you consider the database to effectively be global
state? Given 2 clients could access the same data at the same
time? although they would have different instances.
Non necessariamente, ma in generale sì, lo è. A meno che non si possa garantire che ci sarà un solo e unico punto di accesso al DB e nessuna concorrenza. Potresti? È possibile, ma è quello che di solito hai bisogno?
Riguardo al controllo della concorrenza . Non c'è una soluzione per proiettili d'argento. Per essere onesti, vicino al 99% dei miei progetti, la politica è LIW ( Last In Wins) . Spaventoso? Non proprio. Il controllo della concorrenza è richiesto in situazioni molto specifiche , quindi se non ne ho bisogno, perché dovrei preoccuparmi ?
Il buono, il migliore e il migliore
Are there better ways to handle a command and commit some action
because of it?
No necessariamente. Non ci sono modi migliori o peggiori. Esistono diversi approcci con risultati diversi. Quello di cui hai bisogno è quello che meglio si adatta alle tue esigenze. La parola chiave qui è adequacy .
D'altra parte, forse, potresti essere interessato a modelli di design come CQRS . Ma leggi attentamente la sua adeguatezza.