Sono d'accordo con Robert Munteanu.
Fondamentalmente si imposta la logica aziendale che non è inerente al modello in un livello intermedio. Il livello intermedio è il livello aziendale/oggetti business/livello logico aziendale/ecc., Ma viene semplicemente definito livello di servizio. Non deve essere un servizio web, è un ampio uso del termine servizio in quanto aggrega funzionalità di un'area applicativa specifica.
Si dispone fondamentalmente di una classe CustomerService che contiene il riferimento del repository. Il tuo livello di presentazione farebbe riferimento alla classe del livello di servizio.
C'è un'ulteriore distinzione che può essere fatta come ipotesi dal nome che si sta usando .net, e probabilmente usando LINQ to SQL come repository come delineato in NerdDinner.
Il repository restituisce in genere IQueryable al livello di servizio, consentendo al livello di servizio di concatenare più query per creare set di risultati diversi. Il servizio valuta quindi l'espressione utilizzando ToList o un altro metodo simile e lo restituisce al livello di presentazione.
MVC Storefront di Rob Conery è ciò che mi ha trasformato nel modello di repository, ma sfortunatamente ha rifattorizzato il livello di servizio senza spiegare veramente quella decisione nei video. Quindi ero preoccupato che forse non era il modo migliore. –
Mi sono trovato di fronte a un problema simile, è questa la migliore architettura? Ho smesso di preoccuparmi delle interfacce con i contratti di livello superiore con le fabbriche e mi sono concentrato sul farlo funzionare. Trovo troppo spesso che le persone siano in grado di superare le soluzioni di architetti. Lo scopo è costruire questo momento di un codice base, un tributo alla propria potenza e alla perfezione di livelli e livelli? Penso che finché conservi i tuoi dati nel tuo repository, la tua "logica di business" nei tuoi servizi aziendali e la tua interfaccia utente nelle tue Views sei a posto. Realizzare ciò che il software dovrebbe fare, refactoring come si va – blu
e realizzare l'obiettivo del software. – blu