Come implementare DDD in un'applicazione distribuita con NHibernate?

2

Ho un sito Web MVC ASP.NET che funziona in questo modo:

(Nel controller)

var user = _applicationService.GetUserById(1);
user.ChangeEmail("[email protected]");
user.ChangeAddress("my new street", "21");

(In un HttpModule)

void EndRequest(){
    if (HttpContext.Error is null){
        _sessionFactory.GetCurrentSession.Transaction.Commit();
     }

In questo modo è possibile perché la factory di sessione è costruita nell'avvio dell'applicazione del sito web. È possibile chiamare più metodi di dominio e richiamare il commit una volta alla fine della richiesta.
Ma in un'applicazione distribuita, non è possibile utilizzare direttamente oggetti di dominio, invece un servizio WCF deve ricevere un DTO.
Ora la mia domanda è: come si progettano i metodi ChangeEmail e ChangeAddress per uno scenario distribuito? Ognuno deve essere un'operazione distinta nel servizio Web? Se è così, allora quando un utente cambia la sua email E il suo indirizzo deve essere necessario per chiamare due volte al servizio. O invece devo modellare un servizio web come questo:

var userDTO = _wcfService.GetUserDTOById(1);
userDTO.Email = "[email protected]";
userDTO.Street = "My new street";
userDTO.StreetNumber = "21";
_wcfService.PersistChanges(userDTO);
    
posta Apocatastasis 07.02.2014 - 18:58
fonte

0 risposte

Leggi altre domande sui tag