ben şu şekilde ayrılmak C# MVC uygulama var: -> Kontrolör -> Servis - Görünüm> Depo ben geri verdikten benzersiz görünümü modeli olan her görünüm ile ince denetleyici uygulamasını kullanmakBaşka bir hizmet katmanı kötü uygulamasına bir hizmet başvurusu iletiliyor mu?
ilgili hizmetten.
Hızlı Örnek: Görünüm:/NewAppointment/Adım1
Onun Kontrolcü şu şekilde görünecektir:
public ActionResult Step1()
{
return View(_appointmentService.Step1GetModel());
}
Ve randevu hizmeti katmanı şu şekilde görünecektir:
public Step1Model Step1GetModel()
{
return new Step1Model();
}
Böylece Uygulamamı kullanarak her biri farklı bir arayüz uygulayan birkaç farklı hizmet katmanım var.
Sorularım, bir hizmet katmanının başka bir hizmet katmanıyla etkileşime girmesi gerektiğinde ortaya çıkar. Bu durumda, servis çağrısına bir arayüz referansı iletmek daha iyi bir uygulama mıdır, yoksa kontrolörün tüm verileri toplamasına ve ardından ilgili sonuçları tekrar servise iletmesine izin vermem gerekir mi?
Örnek:
Ben varsayılan olarak müşterinin bilgileriyle benim bakış modeli doldurmak istediğini farz edelim. Bunu yapmanın bakın iki yolu vardır:
randevu servisine bir müşteri arayüz referansı geçirin ve sonra randevu hizmeti çağrı müşteri hizmetleri uygun GetCustomer yöntemi izin ... Code
:
private ICustomerService _customerService;
private IAppointmentService _appointmentService;
public ActionResult Step1()
{
var viewModel = _appointmentService.Step1GetModel(_customerService);
return View(viewModel);
}
VEYA
kontrolör müşteri almanın mantığını halletsin, sonra randevu hizmeti ile bu sonucu geçmektedir. Code: Daha iyi bir uygulama olacağını hangileri olduğu
private ICustomerService _customerService;
private IAppointmentService _appointmentService;
public ActionResult Step1()
{
var customer = _customerService.GetCustomer();
var viewModel = _appointmentService.Step1GetModel(customer);
return View(viewModel);
}
Ben ayrılıyorum. Birincisi, denetleyiciyi güzel ve ince tutar ancak randevu hizmeti ile müşteri hizmetleri arasında bir hizmet arası bağımlılık oluşturur. İkincisi kontrolöre daha fazla mantık getirir, ancak hizmetleri tamamen bağımsız tutar.
Daha iyi uygulamaların hangisi olacağına dair bir fikri olan var mı?
Teşekkür ~
Yorumları takdir edin. – TheRightChoyce
whoops, anahtar hataya gir. "Aptal" görüş modellerinin prensiplerini takip ediyorum. Çoğu, bir kurucunun bile bulunmadığını ve bunların hiçbir yönteminin bulunmadığını. Ancak bu şekilde sunulduğunda, bunlara kurucu ekleme mantığını ve daha sonra AutoMapper'ı veya ilgili alan katmanı bilgisini almak için böyle bir mantığı görüyorum. Etki alanı haritalama işinin nereye gittiği ve aptal bir görüş modeli ve şey denetleyicisinin fikrine sadık kalarak içsel bir tartışma geçirdim ... – TheRightChoyce
Bu tam olarak automapper'ın yapıldığı senaryo. İyi ki yardım edebilirim. – jonnii