Disclaimer: Dit zijn notities van de .Net minor die gevolgd is in het tweede semester van 2017. Deze minor is gegeven door Marco Pil van Info Support.
Een applicatie die gebruik maakt van 1 laag waarin alles gedaan wordt

Wanneer de logica complex wordt, wordt de logica laag heel groot. Daarnaast ben je afhankelijk van de laag eronder
Wanneer de taal dichter bij het domein gaat liggen heb je het niet meer over data access e.d.

Services die niet tot het domein behoren, maar technische toepassingen hebben
Domain objects, die voorheen POCO’s waren, bevatten nu ook logica
public class Klant
{
public long Id { get; set; }
public string Naam { get; set; }
public string Adres { get; set; }
public void Verhuis(...) { ... }
}
KlantService met daarin een Execute methode voor het afhandelen van commands
public class KlantService
{
// Constructor die private members zet
private readonly IKlantRepository _klantRepository;
private readonly IEventPublished _eventPublisher;
public void Execute(VerhuisKlantCommand command)
{
Klant klant = _klantRepository.FindKlant(command.KlantId);
klant.Verhuis(command.NiewAdres);
_klantRepository.SaveKlant(klant);
_eventPublisher.Publish(new KlantVerhuisdEvent(...));
}
}
Een API controller met daarin een Verhuis methode die de service aanroept
public class KlantController : Controller
{
// Constructor die private member zet
private readonly KlantService _klantService;
[HttpPatch]
public IActionResult Verhuis([FromBody]VerhuisKlantCommand command)
{
try
{
_klantService.Execute(command);
return Ok();
}
catch (Exception)
{
return BadRequest(...);
}
}
}
Voor kleine simpele applicaties
Voor niet te complexe domeinen en niet te grote applicaties
Wanneer domain logica complex wordt