Premessa: sono un grande fan del domain model. Molti lo chiamano business layer (anche se non è proprio corretto !), altri business logic (anche qui non è del tutto corretto !) e altri ancora business logic. Si tratta sempre della stessa cosa, modelliamo un sistema complesso attraverso delle entità (oggetti) che interagiscono fra di loro.

All'opposto del domain model troviamo il transaction script. In questo caso la logica applicativa è applicata attraverso delle operazioni (metodi). Di fatto è una struttura molto piatta.

Il Domain Model è il modello di riferimento che uso solitamente nella progettazione anche se ritengo ci sia un senso anche per il transaction script. Penso agli algoritmi matematici oppure alle elaborazioni che richiedono la massima cura nella ricerca delle prestazioni e nell'uso delle risorse hardware (Memoria e CPU). Questo è un tipico ambito dove troppa astrazione può nuocere :-)