Design-patterns para criação de tarefas

E aí pessoal!

Eu cheguei a colocar esta dúvida no stackexchange e numa lista de .net mas eu acho que aqui serei melhor compreendido (visto minhas limitações no inglês)

Resumidamente, neste sistema em que trabalho, (quase) toda a alteração na entidade envolve em ir na Infra e atualizar “de verdade” posteriormente.

Então quando eu ligo uma Machine, eu marco ela como ligada e crio Tasks (outras entidades) para que sejam consumidas por um windows service.

Atualmente eu uso services para isso, o que deixa meu domínio anêmico:

[code]public void createMachine(string name){
Machine machine = new Machine(name,Status.Releasing);
List tasks = new List(){
new Task(“CreateMachine”, machine.getName()), //infrastructure task
new Task(“ChangeMachineSize”, machine.getName(), machine.getFoo()), //infrastructure task
new Task(“ActivateMachine”, machine.getBar()), //infrastructure task
new Task(“SetMachineEntityStatusToReleased”, machine.getName()) //business task (go to my database)

  session.save(tasks);
  session.save(machine);
  tx.commit();
 }

}[/code]
Eu gostaria de deixar meu domínio mais rico, mas será que a criação destas tarefas não violaria o SRP?

[code]Public Class Machine{

    public Machine(string name)
    {  
     this. name = name; 
      this.status = Status.Releasing;
      //Can I Create Tasks for create machine here?
    }

    public void Install(){
      setStatus(Status.Releasing);
      //or can I create Tasks for create machine here?
    }

    public void Stop(){
      setStatus(Status.Stopped);
      //Can I create Tasks for stop machine here?
    }


    @Required
    @StringLength(50)
    private String name;

   private  Status status;

}[/code]

O código era .net, então pode não estar 100% a sintaxe.

Alguém?

Não sei se eu não me fiz entender. (não que alguém seja obrigado a responder), mas como eu coloquei esta mesma dúvida em três forum diferentes e não obtive retorno, acho que devo estar fazendo a pergunta errada.

Me foi Aconselhado Domain Events, mas achei que ficou um pouco fora do contexto a criação da tarefas em um subscribe, me parece que eu apenas movi o que estava no service para um handler.

Alguém tem usado Domains Events aqui? Acha que deixa o código mais limpo?

Caso alguém queira opnar. Ainda não descobri uma boa solução para este caso.

Nem sempre optar por um RDM é a melhor opção. Como você mesmo observou o RDM quebra o SRP.

Diria que ambos RDM e ADM são métodos possíveis de implementação que gera código limpo, mas varia de estilo e gosto do desenvolvedor, pois ambos tem vantagens e desvantagens, no RDM voce terá menos classes, tornando o projeto mais simples mas as classes serão mais complexas, no ADM você terá um projeto mais complexo com mais classes, mas classes mais simples.

De uma googada e você vera estes contrastes … qual escolher é de gosto …