Combinazione di applicazione per pagina singola e DDD con un'API REST

1

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
posta Kenneth 16.07.2013 - 01:12
fonte

1 risposta

3

Sembra che tu suggerisca la tua risposta: non inviare tutto in una volta. Se ci pensi, che tipo di azioni vorresti essere in grado di fare nella tua visualizzazione? Uno di questi sembra assegnare hotel a tipi di camere. Quindi per ogni azione che si desidera eseguire nella propria vista si ha un metodo che si chiama su un controller endpoint, o se si desidera lavorare con i comandi, si formerà un AssignHotelToRoomTypeCommand con tutti i dati necessari per l'esecuzione di tale procedura, e inviare quel comando a un endpoint.
Più ci penso, però assegnare un hotel a un tipo di camera mi sembra un po 'strano / a ritroso ... C'è un motivo per cui stai modellando un tipo di camera come entità e non come oggetto di valore?

    
risposta data 16.07.2013 - 08:44
fonte

Leggi altre domande sui tag