Sto sviluppando un software in cui ogni azione delle mie entità ha bisogno di creare attività che verranno eseguite nella mia infrastruttura. Quando creo un'attività, sono solo i record nel database. Successivamente, verrà eseguito da un servizio Windows.
In realtà, utilizzo un servizio e le mie entità sono anemiche, quindi quando cambio lo stato della mia entità creo anche i miei compiti sull'infrastruttura.
public void CreateMachine(string name){
var machine = new Machine(){
Name = name,
Status = Status.Releasing;
};
var tasks = new List<Task>(){
new Task("CreateMachine", machine.Name), //infrastructure task
new Task("ChangeMachineSize", machine.Name, machine.Foo), //infrastructure task
new Task("ActivateMachine", machine.Bar), //infrastructure task
new Task("SetMachineEntityStatusToReleased", machine.Name) //business task (go to my database)
_db.Task.Add(tasks);
_db.Msachine.Update(machine);
_db.SaveChanges();
}
}
Ma voglio usare un dominio ricco, perché i miei servizi stanno diventando troppo complessi.
Public Class Machine{
public Machine(string name)
{
Name = name;
Status = Status.Releasing;
//Can I Create Tasks for create machine here?
}
public void Stop(){
Status = Status.Releasing
//Can I create Tasks for stop machine here?
}
[Required]
[StringLength(50)]
public string Name { get; set; }
public Status Status { get; protected set; }
}
Esiste un modello di progettazione o una procedura ottimale per questo progetto? Sto violando il principio di responsabilità unica se aggiungo la creazione dell'attività all'interno della mia entità?