In che modo lo schema di UnitOfWork è correlato alla programmazione Monadic?

0

Esaminando la definizione del modello dell'Unità di lavoro sembra molto simile a quello che otterrebbe un programmatore se implementasse un Monade come un IO o una Moneta di Transazione. Ciò che rende il concetto di unità di lavoro fondamentalmente diverso dall'uso di una Monade? Supponiamo che stiamo lavorando in un linguaggio che ha abbastanza potere per implementare la maggior parte delle Monade comuni e può implementare un modello di unità di lavoro simile a quello che puoi trovare in Java o C #, specialmente uno con un sistema di tipi come Scala o Haskell.

Se uno può essere scelto dall'altro quali sono i pro e i contro di ciascun approccio?

    
posta Kevin 14.03.2015 - 07:28
fonte

1 risposta

4

La tua domanda è un po 'strana, un po' come chiedere perché hai bisogno del modello dell'unità di lavoro quando puoi semplicemente usare gli oggetti. Le Monade sono più fondamentali di quanto implica la tua domanda. Puoi utilizzare una monade come parte dell'implementazione dell'unità di lavoro, ma questa non è una descrizione sufficiente della soluzione. Dovresti anche descrivere quale monad da usare, i parametri di tipo usati, come inizializzarlo, come implementare un passo e cosa fare con il risultato.

Una monade di transazione sembra davvero che potrebbe essere un blocco relativamente valido per implementare questo schema, ma forse una nuova monade creata appositamente e adattata per implementare l'unità di lavoro sarebbe più pulita.

Tuttavia, parte del beneficio del modello di unità di lavoro è che aiuta a raccogliere gli aggiornamenti del database da punti sparsi nel codice. Le monadi hanno la fastidiosa proprietà che vogliono essere già raccolte. Se devi raccogliere il codice di aggiornamento del database in un posto comunque, potrebbe esserci un modo più semplice per aggregarlo.

    
risposta data 14.03.2015 - 15:07
fonte

Leggi altre domande sui tag