Responsabilità del livello di servizio e del repository
-
29-10-2019 - |
Domanda
Ho bisogno di qualche consiglio su dove tracciare la linea con i miei servizi e repository.
public class Contact
{
public Guid Id {get;set;}
public string Username {get;set;}
public Guid? AvatarId {get;set;}
public Avatar Avatar {get;set;}
}
public class Avatar
{
public Guid Id {get;set;}
public string FullSizeImagePath {get;set;}
public string ThumbnailSizeImagePath {get;set;}
}
Supponiamo che il modello Avatar verrà utilizzato solo su un modello di contatto e che si tratti di una proprietà opzionale al contatto. Il mio repository dovrebbe essere responsabile per l'aggiunta di un avatar al contatto o il livello aziendale / servizio dovrebbe estendere tale funzionalità? Si può sostenere che è un requisito aziendale avere un avatar, ma poiché fa parte del modello, il livello dei dati dovrebbe sapere come affrontarlo.
Ho proposto di aggiungere la funzionalità per aggiungere / aggiornare e rimuovere un avatar tramite il repository. Il livello aziendale / servizio sarebbe responsabile del salvataggio dei file fisici, della convalida e del chiamata dei metodi appropriati sul repository. Tutta il repository si preoccupa è il contatto appropriato e l'aggiunta di un avatar.
Il mio processo di pensiero era che poiché un avatar viene utilizzato solo a contatto, attualmente estendiamo il repository e aggiungiamo quindi funzionalità al DAL. Questo potrebbe essere utile per un'API separata.
Nessuna soluzione corretta