In qualità di sviluppatore di Ruby on Rails, durante la progettazione/implementazione di un'applicazione Web, prendo concetti essenziali/entità dal dominio del problema e li implemento come modelli. Tipicamente, quelle sono classi derivate da una classe ORM di base (ad esempio ActiveRecord::Base
), esse mappano i record da una tabella di database e aggiungono metodi aggiuntivi che implementano la logica di business relativa al modello.Modelli MVC in Clojure
Il vantaggio di questo approccio è che è possibile trovare rapidamente tutte le logiche di business relative all'oggetto dal dominio del problema, in modo che se la classe del modello non è grande, è possibile comprendere in modo efficiente come funziona quella parte dell'applicazione. Si è anche separato da tutte le logiche di presentazione. Inoltre, grazie a ORM i metodi di business logic contengono pochi codici specifici per DB e quindi abbastanza chiari e facili da leggere.
Lo svantaggio è che tali classi spesso raggiungono dimensioni enormi e quindi difficili da comprendere nel loro complesso.
Quindi le mie domande sono:
- Do Clojure ecosistema fornire alcune librerie che soddisfano una funzione simile a ORM di OOP?
- Qual è la "modalità Clojure" per organizzare tale codice?
- Quali sono i vantaggi e gli svantaggi dell'approccio?
- Alcuni articoli/libri/discorsi che spiegano e giustificano l'approccio?
- Esistono alcune applicazioni open source (esempio) che mostrano l'approccio?