Radomiej / JEventBus.net

Event Bus for .NET

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JEventBus.net

Event Bus for .NET

Nuget Codacy Badge .NET Core

Fast start:

  1. Get Default EventBus:
JEventBus bus = JEventBus.GetDefault();
  1. Register Subscriber:
bus.Register(mySubscriber);
  1. Post Event:
bus.Post(myEvent);
  1. Unregister Subscriber
bus.Unregister(mySubscriber);
  1. Subscriber example:
class SubscriptionCounter
{
    public int myEventCount = 0;

    [Subscribe]
    public void counterMyEvents(MyEvent e)
    {
        myEventCount++;
    }
}

Advenced usage

Performance mode

Default false. When enabled it disable additional logic in EventBus:

  • pre- and post- interceptors are not longer work

How to enable:

JEventBus.GetDefault().PerformanceMode = true;

Register subscriber to custom handler object key

 var subscriber = new RawSubscriber<TestEvent>(myEvent => MyHandler(incoming));
 JEventBus.GetDefault().Register(this, subscriber);
 JEventBus.GetDefault().PerformanceMode = performanceMode;

Maximum performance boost | Single handler

var subscriber = new PerformanceSubscriber<TestEvent>(incoming => MyHandler(incoming));
JEventBus.GetDefault().RegisterFast(subscriber);
JEventBus.GetDefault().PerformanceMode = performanceMode;

Benchmark

Benchmark source you find in: https://github.com/Radomiej/JEventBus.net/blob/master/Javity.EventBusTest/JEventBusTest.cs look at methods start with PerformanceTest

The test are just for general perfomance insight.

Each test based on sent 100k events

Testing platform: Laptop with

  • CPU: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
  • RAM: 24 GB

PerformanceTest #1 (Classic, annotation-based)

Execution time: 869 ms | 869874500 ns | 869 ns/event & performance mode: False

Execution time: 695 ms | 695731800 ns | 695 ns/event & performance mode: True

PerformanceTest #2 (Special cases, action-based)

Execution time: 556 ms | 556563000 ns | 556 ns/event & performance mode: False

Execution time: 454 ms | 454930900 ns | 454 ns/event & performance mode: True

PerformanceTest #3 (Need for speed, action-based)

Execution time: 236 ms | 236253800 ns | 236 ns/event & performance mode: False

Execution time: 119 ms | 119565700 ns | 119 ns/event & performance mode: True

About

Event Bus for .NET

License:MIT License


Languages

Language:C# 100.0%