Diciamo che ho un modello seguente repo:Motivo di progettazione MVC, scopo del livello di servizio?
interface IGenericRepo<T> where T : class
{
IEnumerable<T> GetAll();
T GetById(object id);
void Insert(T obj);
void Update(T obj);
void Delete(T obj);
void Save();
}
interface ICustRepo : IGenericRepo<Cust>
{
IEnumerable<Cust> GetBadCust();
IEnumerable<Cust> GetGoodCust();
}
public class CustRepo : ICustRepo<Cust>
{
//implement method here
}
poi nel mio controller:
public class CustController
{
private ICustRepo _custRepo;
public CustController(ICustRepo custRepo)
{
_custRepo = custRepo;
}
public ActionResult Index()
{
var model = _custRepo.GetAll();
return View(model);
}
public ActionResult BadCust()
{
var model = _custRepo.GetBadCust();
return View(model);
}
}
Fondamentalmente il mio modello è qualcosa di simile a
View <-> Controller -> Repo -> EF -> SQL Server
ma ho visto un sacco di persone che lo fanno
View <-> Controller -> Service -> Repo -> EF -> SQL Server
Quindi la mia domanda è:
Perché e quando ho bisogno
service layer
? Non è che aggiungere un altro livello non necessario perché ogni metodo non generico è già implementato inICustRepo
?Se il livello di servizio restituisce
DTO
o il mioViewModel
?Il livello di servizio deve mappare 1: 1 con il mio repository?
Ho guardato in giro per qualche giorno ma non sono soddisfatto delle risposte.
Qualsiasi aiuto sarà apprezzato e si scuserà per il cattivo inglese.
Grazie.
UPDATE:
Difference between Repository and Service Layer?
ho già letto questo. Conosco già la differenza tra questi 2, ma voglio sapere perché e lo scopo. In modo che non risponda alla mia domanda
possibile duplicato di [Differenza tra repository e livello di servizio?] (Http://stackoverflow.com/questions/5049363/difference-between-repository-and-service- layer) –