Affected by CQRS, wrote a eventbus, can implement the Publish subscription mode execution event, in the DDD model, you can use the following code to trigger the event:
Eventbus bus = Eventbus.instance ();
Bus. Publish (New Orderaddedevent ());
The solution structure is as follows, which is simple and understandable:
The XML Event configuration code sample is as follows (1 event can define multiple subscribers, such as the following):
<?xml version= "1.0" encoding= "Utf-8"?> <Events> <Event> <publishevent>consoleapplication 2.code. events.orderaddedevent</publishevent> <SubscribedEvents> <subscribedevent>consoleapplicati On2.code.EventHandlers.OrderAdde deventhandler_cacheprepare</subscribedevent> <subscribedevent>cons OleApplication2.code.EventHandlers.OrderAdde deventhandler_pdfgenerate</subscribedevent> </ subscribedevents> </Event> <Event> <publishevent>consoleapplication2.code.events.orderdelet Edevent&l t;/publishevent> <SubscribedEvents> <subscribedevent>consoleapplication2.code.ev Enthandlers.orderdele tedeventhandler_notifyclient</subscribedevent> <subscribedevent>consoleapplica Tion2.code.EventHandlers.OrderDele tedeventhandler_removcache</subscribedevent> </SubscribedEvents> & Lt;/event> </Events>
Let's start by defining the event:
public class BaseEvent //empty, no need to implement other methods
{
} public
class Orderaddedevent:baseevent //order has been added, triggering
Event
{
} public
class Orderdeletedevent:baseevent //order deleted, triggered
event {public
Guid OrderId { Get Set
orderdeletedevent (Guid orderId) {This
. OrderId = OrderId;
}
To define handlers for an event:
public interface ieventhandler<t>
where t:baseevent
{
void Handle (T evt);
}
public class Orderdeletedeventhandler_notifyclient:
ieventhandler<orderdeletedevent>
{
public void Handle (orderdeletedevent evt)
{
Console.WriteLine ("[Order deleted] notified.");
}