Sto creando un'applicazione web che sul lato client è composta da un'applicazione a pagina singola (con Durandal) e sul lato server un sito MVC ASP.NET con un Domain Driven Design. I due sono collegati con un API REST (Web API).
Ho una relazione tra due entità, che a livello di database è molti-a-molti. (Hotels < = > RoomTypes). Dal momento che nel DDD una best practice non è quella di avere relazioni molti-a-molti, l'ho costruita in modo che possa essere solo spostata dalla roomtype all'hotel (poiché un hotel può esistere senza roomtype, ma un roomtype dovrebbe sempre essere associato ad un Hotel). La relazione stessa ha anche attributi (disponibilità per esempio).
Il mio problema attuale è come associare un hotel a una roomtype. Seguendo le pratiche DDD, aggiungerei un metodo AddHotel
alla classe RoomType.
Il problema è che nella SPA è possibile modificare tutti gli attributi di una roomtype (immagini, descrizione, ...) e gli hotel associati in un'unica vista. Dopo aver modificato questi attributi, viene inviato un aggiornamento tramite la rest api. Ciò significa che tutto viene inviato in un'unica chiamata al server.
Come struttureresti il server e l'API basata sul resto in modo che:
- il dominio rimane al suo posto e la convalida è corretta all'interno della classe RoomType
- puoi pubblicare aggiornamenti atomici dall'applicazione di una singola pagina attraverso il resto
- non c'è la duplicazione del codice sul server e l'applicazione a pagina singola