2009-09-17 15 views
45

Qual è la differenza tra un repository e un servizio? Non riesco a coglierlo.Differenza tra repository e servizio?

Sto parlando di accesso ai dati attraverso un livello di accesso ai dati, in genere con linq a sql.

Molto spesso vedo repository con metodi CRUD semplici e servizi con metodi più specifici del business.

Possiamo prendere il post del blog this come esempio. Se guardi le interfacce in basso (immagini), ha due repository e due servizi. Come si fa a sapere cosa mettere dove?

Come ho detto, i repository sembrano essere più per operazioni simili a CRUD e Servizi più orientati al business.

Grazie

+0

Potete chiarire? In quale contesto? Come la maggior parte delle parole, il contesto in cui queste parole vengono usate aiuta a definire il significato. – David

+2

Nota: non sto parlando di servizi Web o di qualcosa qui. Sto parlando dell'accesso ai dati attraverso un livello dati. – alexn

risposta

45

un repository è essenzialmente una facciata per persistenza che utilizza la semantica Style Collection (Aggiungi, Aggiorna, Rimuovi) per fornire accesso a dati/oggetti. È un modo per disaccoppiare il modo in cui memorizzi dati/oggetti dal resto dell'applicazione.

Un servizio fornisce il coordinamento o altri "servizi" necessari per il funzionamento dell'applicazione. Sono molto diversi in quanto i Servizi in genere non sanno come accedere ai dati dalla persistenza, e gli archivi tipicamente solo accedere a dati/oggetti per tutti i servizi che si possono avere.

+5

Direi che un repository è un tipo di servizio che viene utilizzato per l'accesso ai dati. –

+1

Questa è una definizione precisa, nel senso che quasi tutto ciò che scriviamo è un "servizio" a un certo livello, ma perde l'intento di base che un repository dovrebbe essere una * collezione * di oggetti. – jlembke

+2

Se si esegue il test dell'unità, potrebbe essere più chiaro pensare agli archivi come all'astrazione minima per ridurre al minimo il mocking necessario per evitare il database. –

9

direi come un primo tentativo, in senso generale (finché non si darà più contesto se ne avete uno):

  • un repositoryè dove si posiziona alcuni oggetti globali , da utilizzare in seguito.
  • un servizio di è un codice logica di business, reso esplicito (e idealmente separato dal livello di presentazione, e il database strato?)
70

Il repository è il luogo in cui sono archiviati i dati. Il servizio è ciò che manipola i dati.

In un confronto situazione reale, se il denaro è memorizzato in un deposito in una banca, il deposito è il deposito. Il cassiere che deposita, ritira, ecc. È il servizio.

+2

Grazie per questa risposta! Semplice e conciso. – alexn

+0

concordato con il commento di cui sopra! Adoro la spiegazione del mondo reale! – Kleigh

Problemi correlati