Skip to content

Commit 5bdf92a

Browse files
committed
- release planning
1 parent df46105 commit 5bdf92a

5 files changed

Lines changed: 38 additions & 68 deletions

File tree

License.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2025 Code Shayk
3+
Copyright (c) 2026 Code Shayk
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

RELEASE.md

Lines changed: 26 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,56 @@
11
# Release Notes - v5.0.0
22

33
## New Architecture
4-
54
```
6-
Aggregate -> Interceptor -> Middleware -> Dispatcher -> Queue <- Listener -> Middleware -> Resolver -> Handler
5+
Aggregate Interceptor Middleware Dispatcher Queue Listener Resolver Handler
76
```
87

9-
### Components:
10-
11-
1. **IEventMiddleware** - Custom plugins that run before/after dispatch and handling
12-
2. **IEventQueue** - In-flight non-persistent queue for events
13-
3. **IEventListener** - Listens to queue and triggers handling
14-
158
## New Features
169

17-
### 1. Event Middleware
18-
19-
Custom plugins that run at various points in the event pipeline:
20-
10+
### 1. ISubscribes<TEvent>
11+
Aggregates can handle their own events:
2112
```csharp
22-
public class MyMiddleware : IEventMiddleware
13+
public class OrderAggregate : Aggregate, ISubscribes<OrderPlaced>
2314
{
24-
public Task<bool> OnDispatchingAsync(EventContext context) { ... }
25-
public Task OnDispatchedAsync(EventContext context) { ... }
26-
public Task<bool> OnHandlingAsync(EventContext context) { ... }
27-
public Task OnHandledAsync(EventContext context) { ... }
15+
public Task HandleAsync(OrderPlaced @event) => ...;
16+
public void PlaceOrder(decimal amount) => Raise(new OrderPlaced());
2817
}
2918
```
3019

31-
**Registration:**
20+
### 2. AggregateFactory
21+
Multiple methods to create proxied aggregates:
3222
```csharp
33-
services.AddDomainEvents(assembly);
34-
services.AddSingleton<IEventMiddleware, MyMiddleware>();
35-
```
23+
// Default constructor
24+
var order = await factory.CreateAsync<OrderAggregate>();
3625

37-
### 2. Event Queue
26+
// With constructor arguments
27+
var order = await factory.CreateAsync<OrderAggregate>(logger);
3828

39-
In-flight non-persistent queue for events:
40-
41-
```csharp
42-
// Use default in-memory queue
43-
services.AddDomainEvents(assembly);
29+
// From service provider (auto-resolves deps)
30+
var order = await factory.CreateFromServiceProviderAsync<OrderAggregate>();
4431

45-
// Or use custom queue
46-
services.AddSingleton<IEventQueue, MyCustomQueue>();
47-
48-
// Process queue
49-
var dispatcher = serviceProvider.GetRequiredService<IEventDispatcher>();
50-
await dispatcher.ProcessQueueAsync();
32+
// Wrap existing instance
33+
var order = await factory.CreateFromInstanceAsync(existingOrder);
5134
```
5235

53-
### 3. Custom Dispatcher
54-
55-
```csharp
56-
services.AddDomainEventsWithDispatcher<MyCustomDispatcher>(assembly);
57-
```
36+
### 3. Event Middleware (IEventMiddleware)
37+
Pipeline hooks: `OnDispatchingAsync`, `OnDispatchedAsync`, `OnHandlingAsync`, `OnHandledAsync`
5838

59-
### 4. Standard EventInterceptor with Telemetry
60-
The `EventInterceptor` remains standard with OpenTelemetry and logging.
39+
### 4. Event Queue (IEventQueue)
40+
In-flight non-persistent queue with subscription support
6141

62-
### 5. Async Handler Interface (IHandler<T>)
63-
Changed from `IHandle<T>` to `IHandler<T>` with async `HandleAsync()`.
42+
### 5. Event Listener (IEventListener)
43+
Processes queued events asynchronously
6444

6545
## Breaking Changes
46+
- `IHandle<T>``IHandler<T>`
47+
- `Handle()``HandleAsync()` returning `Task`
6648

67-
1. `IHandle<T>` -> `IHandler<T>`
68-
2. `Handle()` -> `HandleAsync()` returning `Task`
69-
3. `EventInterceptor` requires `IEventDispatcher`
70-
71-
## Migration Guide
72-
49+
## Migration
7350
```csharp
7451
// Before
7552
public class Handler : IHandle<Event> { void Handle(Event e) { } }
7653

7754
// After
78-
public class Handler : IHandler<Event>
79-
{
80-
Task HandleAsync(Event e) => Task.CompletedTask;
81-
}
55+
public class Handler : IHandler<Event> { Task HandleAsync(Event e) => Task.CompletedTask; }
8256
```

src/DomainEvents/DomainEvents.csproj

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<PackageLicenseFile>License.md</PackageLicenseFile>
1717
<PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
1818
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
19-
<Title>DomainEvents</Title>
19+
<Title>Domain Events</Title>
2020
<Authors>CodeShayk</Authors>
2121
<Company>CodeShayk</Company>
2222
<Product>DomainEvents</Product>
@@ -26,21 +26,17 @@
2626
<RepositoryUrl>https://github.com/CodeShayk/DomainEvents</RepositoryUrl>
2727
<RepositoryType>git</RepositoryType>
2828
<PackageTags>domain-events; domain-model, events; event-handling; c#; transactional-events; domain-pub/sub; event-pub-sub; ddd; aggregates; castle-dynamicproxy</PackageTags>
29-
<Version>4.1.0</Version>
29+
<Version>5.0.0</Version>
3030
<PackageIcon>pub-sub-icon.png</PackageIcon>
3131
<GenerateDocumentationFile>True</GenerateDocumentationFile>
3232
<PackageProjectUrl>https://github.com/CodeShayk/DomainEvents/wiki</PackageProjectUrl>
3333
<PackageReleaseNotes>
34-
Release v4.2.0 - Updated all dependencies to latest stable versions
35-
- OpenTelemetry.Api 1.11.2 -&gt; 1.15.0 (security fix for CVE-2025-27513)
36-
- Castle.Core 5.1.1 -&gt; 5.2.1
37-
- Microsoft.Extensions 9.0.0 -&gt; 10.0.5
38-
- Targets .Net 10.0
39-
- Target .Net 9.0
40-
- Target .Net 8.0
41-
- Target .Net Standard 2.1
42-
- Target .Net Standard 2.0
34+
Release v5.0.0 - Major update with new features, improvements, and bug fixes.
35+
This release includes enhanced aggregate support, improved event handling performance, and better integration with Castle DynamicProxy.
36+
For more details, see the release notes on GitHub: https://github.com/CodeShayk/DomainEvents/releases/tag/v5.0.0
4337
</PackageReleaseNotes>
38+
<FileVersion>5.0.0</FileVersion>
39+
<AssemblyVersion>5.0.0</AssemblyVersion>
4440
</PropertyGroup>
4541

4642
<ItemGroup>

src/DomainEvents/assemblyinfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
1616
[assembly: System.Reflection.AssemblyCopyrightAttribute("2026")]
1717
[assembly: System.Reflection.AssemblyDescriptionAttribute(".Net Library to implement transactional events in domain model.")]
18-
[assembly: System.Reflection.AssemblyFileVersionAttribute("4.1.0")]
19-
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("4.1.0")]
18+
[assembly: System.Reflection.AssemblyFileVersionAttribute("5.0.0")]
19+
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("5.0.0")]
2020
[assembly: System.Reflection.AssemblyProductAttribute("Dormito")]
2121
[assembly: System.Reflection.AssemblyTitleAttribute("DomainEvents")]
22-
[assembly: System.Reflection.AssemblyVersionAttribute("4.1.0")]
22+
[assembly: System.Reflection.AssemblyVersionAttribute("5.0.0")]
2323
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Codeshayk/DomainEvents")]
2424

2525
// Generated by the MSBuild WriteCodeFragment class.

version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
},
1818
"inherit": false,
1919
"publicReleaseRefSpec": [ "^refs/heads/master$" ],
20-
"version": "4.1.0"
20+
"version": "5.0.0"
2121
}

0 commit comments

Comments
 (0)