IndFusion.Ember
0.1.0
dotnet add package IndFusion.Ember --version 0.1.0
NuGet\Install-Package IndFusion.Ember -Version 0.1.0
<PackageReference Include="IndFusion.Ember" Version="0.1.0" />
<PackageVersion Include="IndFusion.Ember" Version="0.1.0" />
<PackageReference Include="IndFusion.Ember" />
paket add IndFusion.Ember --version 0.1.0
#r "nuget: IndFusion.Ember, 0.1.0"
#:package IndFusion.Ember@0.1.0
#addin nuget:?package=IndFusion.Ember&version=0.1.0
#tool nuget:?package=IndFusion.Ember&version=0.1.0
๐ฅ IndFusion.Ember
The fusion point where real-time messages ignite and spread across any transport.
๐ What is Ember?
IndFusion.Ember is a transport-agnostic real-time communication abstraction that follows Clean Architecture principles. Think of it as a glowing ember spreading through your system:
- ๐ฅ Messages Ignite - Events and data start flowing
- ๐ก Propagate & Track - Health monitoring and metrics
- ๐ก Illuminate & Display - Real-time dashboards and UI updates
Like an ember that spreads warmth and light, Ember spreads real-time updates across any transport layer without coupling your application to a specific technology.
โก Three Actors Pattern
Every Ember implementation follows the Three Actors Pattern:
| Actor | Essence | Purpose |
|---|---|---|
| ๐ ExxerHub<T> | Something Moving | Messages, events, data flows |
| ๐ฉบ ServiceHealth<T> | Something Tracking | Health metrics, status monitoring |
| ๐ Dashboard<T> | Something Displaying | UI dashboards, real-time visualization |
๐ Quick Start
Installation
dotnet add package IndFusion.Ember
Basic Usage
// 1. Register Ember services
services.AddSignalRAbstractions();
// 2. Create your hub (something moving)
public class MyHub : ExxerHub<MyData>
{
public MyHub(ILogger<MyHub> logger) : base(logger) { }
}
// 3. Track health (something tracking)
public class MyService
{
private readonly IServiceHealth<MyService> _health;
public MyService(IServiceHealth<MyService> health)
{
_health = health;
await _health.UpdateHealthAsync(HealthStatus.Healthy);
}
}
// 4. Display dashboard (something displaying)
public class MyDashboard : Dashboard<MyData>
{
public MyDashboard(ILogger<MyDashboard> logger) : base(logger) { }
}
๐ Transport Fusion
Currently Implemented:
- โ SignalR (WebSockets, Server-Sent Events, Long Polling)
Designed For Universal Fusion:
- ๐ gRPC Streams
- ๐ Raw WebSockets
- ๐ Raw TCP/UDP
- โ๏ธ Azure Service Bus
- โ๏ธ AWS EventBridge
- ๐ญ OPC-UA (Industrial IoT)
- ๐ก MQTT
- ๐ฐ RabbitMQ
The abstraction layer allows easy transport swapping without changing application code.
๐๏ธ Clean Architecture
Ember follows Hexagonal Architecture principles:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Your Application Core โ
โ (Domain Logic, Use Cases) โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโผโโโโโโโโโ
โ IndFusion.Ember โ โ Abstraction Layer
โ (Interfaces) โ
โโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ โ โ
โโโโโผโโโโโ โโโโโผโโโโโ โโโโโผโโโโโ
โSignalR โ โ gRPC โ โ Azure โ โ Plug Any Transport
โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ
Benefits:
- ๐ฏ Testable: Mock IExxerHub, IServiceHealth, IDashboard
- ๐ Swappable: Change transports without touching business logic
- ๐ฆ Portable: Use across microservices, monoliths, serverless
- ๐ก๏ธ Railway-Oriented: Built-in Result<T> pattern for error handling
๐ Railway-Oriented Programming
All operations return Result<T> for elegant error handling:
var result = await hub.SendToAllAsync(data, cancellationToken);
if (result.IsSuccess)
{
// Success path
logger.LogInformation("Message sent successfully");
}
else
{
// Failure path - no exceptions thrown
logger.LogWarning("Failed to send: {Error}", result.Error);
}
No exceptions during normal flow - defensive intelligence built-in.
๐ฏ Use Cases
Perfect for:
- ๐ Real-time Dashboards - Stock tickers, IoT sensors, metrics
- ๐ฉบ Health Monitoring - Service status, heartbeat tracking
- ๐ Notifications - User alerts, system events
- ๐ Live Analytics - Real-time charts, KPI updates
- ๐ฎ Multiplayer Games - Player synchronization
- ๐ฌ Chat Applications - Real-time messaging
- ๐ญ Industrial IoT - Factory automation, sensor networks
๐ Documentation
๐ค Contributing
Contributions are welcome! Please read our Contributing Guide.
๐ License
MIT License - see LICENSE for details.
๐ฅ About the Name
Ember represents a glowing piece of fire that spreads warmth and light - just like how real-time messages spread through your distributed system, illuminating dashboards and bringing life to UI components.
IndFusion signifies the Industrial Fusion of different transport technologies into a unified abstraction.
๐ฌ Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Author: Abel Briones Ramirez
- Company: Exxerpro Solutions
- Email: abel.briones@exxerpro.com
<div align="center">
๐ฅ Let the ember ignite your real-time architecture ๐ฅ
Made with โค๏ธ by Exxerpro Solutions
</div>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- IndQuestResults (>= 1.1.0)
- Microsoft.AspNetCore.SignalR.Client (>= 10.0.0)
- MudBlazor (>= 8.11.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 153 | 11/29/2025 |