You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* No reflection/linq path in handler dispatch�strongly-typed wrappers are used.
28
+
* Weak references to delegates to avoid leaks.
29
+
* Timeout support via RequestAsync parameter (default 5s).
30
+
* Length-prefixed framing across pipe/tcp; EventWaitHandle for MMF.
31
+
* DI-friendly + hosted service to start transport automatically.
32
+
* Unit tests for local, timeout, and each transport.
33
+
* Portable across .NET 7/8.
34
+
35
+
### v0.8.0
36
+
37
+
Evolved the Event Aggregator to support **async**, **bidirectional** request/response, and **pluggable IPC transports** via Named Pipes, Memory-Mapped Files, and TCP/IP Sockets.
38
+
This design preserves your weak-reference handlers, remains DI-friendly, and keeps publishers decoupled from subscribers and transport mechanics.
39
+
40
+
> **Note:**
41
+
> 1. The implementation intentionally straightforward. Not for production at this time as it needs robust error handling, retries, backpressure, queueing, auth/ACLs, and schema versioning.
42
+
> 2. Consider bringing back `SendAsync<TEvent>(..)` and `StartAsync<TEvent>(..)` along side the new `IEventTransport` bi-directional sender/receivers.
*`ReplyAddress { get; }`_(used by aggregator to populate ReplyTo for requests)_
53
+
***Transports:**
54
+
*`NamedPipeTransport`_(duplex via named server/client pipes + length-prefix framing)_
55
+
*`MemoryMappedTransport`_(two MMFs + named EventWaitHandles for request/response signals)_
56
+
*`TcpTransport`_(two ports�one for requests, one for responses�with length-prefix framing)_
57
+
58
+
#### Future Improvements
59
+
60
+
***Reliability:** Durable queues, consider MSMQ/Service Bus/RabbitMQ/Kafka depending on needs. (Out of scope for this lightweight first-pass.)
61
+
***Security:** Named Pipes can use ACLs; TCP needs TLS + auth; MMFs need OS ACLs. Add validation and schema versioning (i.e., `EventEnvelope`).
62
+
***Backpressure & Flow Control:** Implement bounded queues, retry, and exponential backoff where applicable.
63
+
***Type Resolution:**`AssemblyQualifiedName` assumes shared assemblies across processes. Consider a type registry or message contracts package shared by both sides.
64
+
***Framing:** Length-prefix framing prevents stream-boundary issues; keep consistent across transports.
65
+
***Concurrency:** The Memory-Mapped example is single-slot; for multiple writers/readers, implement a ring buffer or per-message files + directory watcher.
66
+
* Add cancellation-aware timeouts and retry policies.
67
+
* Provide a full two-process demo (client & server) for each transport so you can run them separately and see request/response in action.
68
+
69
+
### v0.7.0
70
+
71
+
Adds optional (one-way) IPC transport mechanisms for inter-process communication (IPC) with **JSON serialization**. IPC can be integrated with the `IEventTransport` interface.
72
+
73
+
***Named Pipe** Transport
74
+
***Memory-Mapped File** Transport (_Windows OS only_)
75
+
***TCP/IP** Transport
76
+
77
+
### v0.6.0
78
+
79
+
* Uses **weak references** to avoid memory leaks
80
+
* Cleans up dead references during `Publish`.
81
+
* Prevents memory leaks when subscribers are no longer needed.
* No reflection/linq path in handler dispatch�strongly-typed wrappers are used.
76
-
* Weak references to delegates to avoid leaks.
77
-
* Timeout support via RequestAsync parameter (default 5s).
78
-
* Length-prefixed framing across pipe/tcp; EventWaitHandle for MMF.
79
-
* DI-friendly + hosted service to start transport automatically.
80
-
* Unit tests for local, timeout, and each transport.
81
-
* Portable across .NET 7/8.
82
-
83
-
### v0.8.0
84
-
85
-
Evolved the Event Aggregator to support **async**, **bidirectional** request/response, and **pluggable IPC transports** via Named Pipes, Memory-Mapped Files, and TCP/IP Sockets.
86
-
This design preserves your weak-reference handlers, remains DI-friendly, and keeps publishers decoupled from subscribers and transport mechanics.
87
-
88
-
> **Note:**
89
-
> 1. The implementation intentionally straightforward. Not for production at this time as it needs robust error handling, retries, backpressure, queueing, auth/ACLs, and schema versioning.
90
-
> 2. Consider bringing back `SendAsync<TEvent>(..)` and `StartAsync<TEvent>(..)` along side the new `IEventTransport` bi-directional sender/receivers.
*`ReplyAddress { get; }`_(used by aggregator to populate ReplyTo for requests)_
101
-
***Transports:**
102
-
*`NamedPipeTransport`_(duplex via named server/client pipes + length-prefix framing)_
103
-
*`MemoryMappedTransport`_(two MMFs + named EventWaitHandles for request/response signals)_
104
-
*`TcpTransport`_(two ports�one for requests, one for responses�with length-prefix framing)_
105
-
106
-
#### Future Improvements
107
-
108
-
***Reliability:** Durable queues, consider MSMQ/Service Bus/RabbitMQ/Kafka depending on needs. (Out of scope for this lightweight first-pass.)
109
-
***Security:** Named Pipes can use ACLs; TCP needs TLS + auth; MMFs need OS ACLs. Add validation and schema versioning (i.e., `EventEnvelope`).
110
-
***Backpressure & Flow Control:** Implement bounded queues, retry, and exponential backoff where applicable.
111
-
***Type Resolution:**`AssemblyQualifiedName` assumes shared assemblies across processes. Consider a type registry or message contracts package shared by both sides.
112
-
***Framing:** Length-prefix framing prevents stream-boundary issues; keep consistent across transports.
113
-
***Concurrency:** The Memory-Mapped example is single-slot; for multiple writers/readers, implement a ring buffer or per-message files + directory watcher.
114
-
* Add cancellation-aware timeouts and retry policies.
115
-
* Provide a full two-process demo (client & server) for each transport so you can run them separately and see request/response in action.
116
-
117
-
### v0.7.0
118
-
119
-
Adds optional (one-way) IPC transport mechanisms for inter-process communication (IPC) with **JSON serialization**. IPC can be integrated with the `IEventTransport` interface.
120
-
121
-
***Named Pipe** Transport
122
-
***Memory-Mapped File** Transport (_Windows OS only_)
123
-
***TCP/IP** Transport
124
-
125
-
### v0.6.0
55
+
### v1.1.0
126
56
127
-
* Uses **weak references** to avoid memory leaks
128
-
* Cleans up dead references during `Publish`.
129
-
* Prevents memory leaks when subscribers are no longer needed.
130
-
131
-
### v0.5.0
132
-
133
-
* Simple and thread-safe
134
-
* Added example unit test for usage
57
+
* Option to include `Microsoft.Extensions.Logger` for deep-logging
0 commit comments