Иногда вам не нужно чрезмерно проектировать вещи или навязывать шаблоны, когда они вам не нужны.
DAL сам по себе является специальным сервисом для доступа к данным.
Как правило, ваш сервисный уровень будет делать вещи, не связанные напрямую с вашими данными. Подумайте о таких вещах, как PaymentService , AnalyticsService и т. Д. И т. П., Которые можно разделить на компонент многократного использования.
Допустим, вам нужно было поделиться сообщением со всеми социальными сетями, вы могли бы поместить это в службу, которая выполняет работу по входу в нужные социальные сети и публикации:
MySocialBlastService : ISocialService
{
void ShareToTwitter() { }
void ShareToFacebook(){ }
}
Теперь с вашего контроллера / докладчика вы можете позвонить в эту службу.
public ActionResult ShareLink(string link..) //asp.net-mvc method as an example
{// maybe you could use dependency injection here to get ISocialService
ISocialService _service;
_service.ShareToTwitter(link);
}
Точно так же вы понимаете, что такое бизнес-логика:
MathService
{
int Add(a,b) { ..} //this is business logic
}
Это кое-что, что вам нужно сделать, и вы можете сделать это, не касаясь интерфейса, это нужно заключить в капсулу. Более реальными примерами являются SecurityService.ResetPassword()
Когда вы вызываете это из контроллера:
Вы можете использовать бизнес-логику добавления в веб-приложении или в приложении Windows и получать входные данные от пользователя через некоторый интерфейс. Как вы делаете это логика контроллера.
public ActionResult Calculate(int a, int b)//comes from webpage
{
//this is controller logic
int ret = MathService.Add(a,b);
//logic to send ret back
//to some other page to display to user.
}