IEvent, ICommand, IMessage – część VIII

W poprzednich wpisach używałem dwóch sposobów deklaracji wiadomości:

public class PersonAdded : IEvent
{
   public Guid PersonId { get; set; }
}
public class AddPerson:IMessage
{
   public Guid PersonId { get; set; }
   public string FirstName { get; set; }        
   public string LastName { get; set; }
}

Istnieje jeszcze trzeci interfejs, ICommand:

public class AddPerson:ICommand
{
   public Guid PersonId { get; set; }
   public string FirstName { get; set; }        
   public string LastName { get; set; }
}

Wszystkie one służą do definicji wiadomości. Jaka jest więc różnica? IMessage jest najbardziej ogólny. Wiadomość zdefiniowana za pomocą IMessage może być zarówno zdarzeniem jak i komendą.

Komendy nie mogą być publikowane (Publish) i subskrybowane (Subscribe). Mogą z kolei być wysłane za pomocą Bus.Send jak to widzieliśmy w jednym z pierwszych wpisów.

Z kolei IEvent (zdarzenia), analogicznie mogą być publikowane i subskrybowane, ale nie można ich wysyłać za pomocą Bus.Send.

IMessage jest przydatny dla Bus.Reply, gdzie zwrotna wiadomość może być zarówno komendą jak i zdarzeniem.

2 thoughts on “IEvent, ICommand, IMessage – część VIII”

Leave a Reply

Your email address will not be published.