IpcLibrary.Serialization.SystemTextJson 2.0.0

dotnet add package IpcLibrary.Serialization.SystemTextJson --version 2.0.0
                    
NuGet\Install-Package IpcLibrary.Serialization.SystemTextJson -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="IpcLibrary.Serialization.SystemTextJson" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="IpcLibrary.Serialization.SystemTextJson" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="IpcLibrary.Serialization.SystemTextJson" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add IpcLibrary.Serialization.SystemTextJson --version 2.0.0
                    
#r "nuget: IpcLibrary.Serialization.SystemTextJson, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package IpcLibrary.Serialization.SystemTextJson@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=IpcLibrary.Serialization.SystemTextJson&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=IpcLibrary.Serialization.SystemTextJson&version=2.0.0
                    
Install as a Cake Tool

๐Ÿš€ IpcLibrary - .NET Peer-to-Peer Communication Library

NuGet NuGet Downloads .NET Standard 2.1 Tests Coverage License

A production-ready .NET Standard 2.1 library for peer-to-peer inter-process communication on local networks. Enables applications to auto-discover each other and establish secure, direct connections in a mesh network topology with full bidirectional messaging.

โœจ Key Features

  • ๐Ÿ” Auto-Discovery: UDP broadcast-based peer discovery with no configuration
  • ๐Ÿ’ฌ Real-Time Messaging: Bidirectional text messaging with event-driven architecture
  • ๐Ÿ”’ Secure by Design: Pre-shared key authentication for network isolation
  • ๐ŸŒ Mesh Network: Direct peer-to-peer connections, no central server required
  • ๐Ÿ“ก Local Network: Works on localhost and LAN (192.168.x.x, 10.x.x.x)
  • ๐Ÿ”ง Flexible JSON: Choose System.Text.Json or JSON.NET (Newtonsoft.Json)
  • โšก Minimal Dependencies: Only requires a JSON serializer
  • ๐Ÿงช Production Ready: 100% test coverage (176/176 tests passing)
  • ๐ŸŽฎ Interactive Demo: Full-featured chat demo included

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   App A     โ”‚โ—„โ”€โ”€โ–บโ”‚   App B     โ”‚โ—„โ”€โ”€โ–บโ”‚   App C     โ”‚
โ”‚ (Node: A1B2)โ”‚    โ”‚ (Node: C3D4)โ”‚    โ”‚ (Node: E5F6)โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ–ฒ                   โ–ฒ                   โ–ฒ
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                           โ–ผ
                 UDP Discovery (Port 12345)
                 TCP Messaging (Dynamic Ports)

Core Components

  • ๐Ÿ” Discovery: UDP-based peer announcement and discovery
  • ๐Ÿ” Authentication: Pre-shared key validation with session keys
  • ๐Ÿ“ก TcpHandler: Reliable TCP communication with string-based messaging
  • ๐Ÿ‘ฅ PeerManager: Connection lifecycle and mesh topology management
  • ๐Ÿ†” NodeId: 8-character hex identifiers for peer identification

๐Ÿš€ Quick Start

1. Installation

Step 1: Install IpcLibrary

dotnet add package IpcLibrary

Step 2: Choose a JSON Serializer

IpcLibrary requires a JSON serialization provider. Choose one:

High-performance, modern JSON serialization:

dotnet add package IpcLibrary.Serialization.SystemTextJson
Option B: JSON.NET (Newtonsoft.Json)

For projects already using Newtonsoft.Json:

dotnet add package IpcLibrary.Serialization.Newtonsoft

Complete Installation Examples:

# Recommended: With System.Text.Json
dotnet add package IpcLibrary
dotnet add package IpcLibrary.Serialization.SystemTextJson

# Alternative: With JSON.NET
dotnet add package IpcLibrary
dotnet add package IpcLibrary.Serialization.Newtonsoft

Package Info:

2. Basic Usage

With System.Text.Json:
using IpcLibrary;
using IpcLibrary.Abstractions.Configuration;
using IpcLibrary.Serialization.SystemTextJson;

// Create JSON serializer
var serializer = new SystemTextJsonSerializer();

// Create and start an IPC node
var node = new IpcNode(serializer);
await node.StartAsync(12345, "shared-auth-key");

// Handle incoming messages
node.TextMessageReceived += (sender, e) => {
    Console.WriteLine($"Received from {e.SenderId}: {e.Text}");
};

// Handle peer connections
node.PeerConnected += (sender, e) => {
    Console.WriteLine($"Peer {e.PeerInfo.NodeId} connected!");
};

node.PeerDisconnected += (sender, e) => {
    Console.WriteLine($"Peer {e.PeerInfo.NodeId} disconnected!");
};

// Send a message to all peers
await node.BroadcastTextAsync("Hello from my application!");

// Send to a specific peer
await node.SendTextAsync("A1B2C3D4", "Direct message");

// Cleanup
await node.StopAsync();
node.Dispose();
With JSON.NET (Alternative):
using IpcLibrary;
using IpcLibrary.Serialization.Newtonsoft;

// Create JSON serializer
var serializer = new NewtonsoftJsonSerializer();

// Create and start an IPC node
var node = new IpcNode(serializer);
await node.StartAsync(12345, "shared-auth-key");

// ... rest of your code

3. 5-Minute Tutorial

Create a simple chat app in 5 minutes:

# Create new console app
dotnet new console -n MyChat
cd MyChat

# Install IpcLibrary and serializer from NuGet
dotnet add package IpcLibrary
dotnet add package IpcLibrary.Serialization.SystemTextJson

Replace Program.cs:

using IpcLibrary;
using IpcLibrary.Serialization.SystemTextJson;

var serializer = new SystemTextJsonSerializer();
var node = new IpcNode(serializer);

// Handle incoming messages
node.TextMessageReceived += (sender, e) =>
    Console.WriteLine($"[{e.SenderId}]: {e.Text}");

// Handle peer connections
node.PeerConnected += (sender, e) =>
    Console.WriteLine($"* {e.PeerInfo.NodeId} joined");

Console.WriteLine($"Starting node {node.NodeId}...");
await node.StartAsync(12345, "my-network");
Console.WriteLine("Ready! Type messages (Ctrl+C to exit)");

// Send messages
while (true)
{
    var message = Console.ReadLine();
    if (!string.IsNullOrEmpty(message))
        await node.BroadcastTextAsync(message);
}

Run multiple instances:

# Terminal 1
dotnet run

# Terminal 2
dotnet run

# They'll discover each other automatically!

That's it! You now have a working peer-to-peer chat application. ๐ŸŽ‰

4. Advanced Configuration

using IpcLibrary.Serialization.SystemTextJson;

var serializer = new SystemTextJsonSerializer();

// Using configuration builder for flexible setup
var config = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(13000)           // Custom port to avoid conflicts
    .WithConnectionTimeout(10000)       // 10 second timeout
    .WithDebugLogging(true)             // Enable debug logging
    .Build();

var node = new IpcNode(serializer);
await node.StartAsync(config, "my-secure-key");

// Network-specific configuration (useful for multiple apps)
var networkConfig = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(13000)           // Explicit port for this app
    .ForProduction()                    // Production-ready timeouts
    .Build();

// Testing configuration with dynamic ports
var testConfig = IpcConfigurationBuilder.Create()
    .ForTesting()                       // Fast timeouts, OS-assigned port
    .Build();

// Send to specific peer
await node.SendTextAsync("A1B2C3D4", "Direct message to specific peer");

// Monitor peer connections
node.PeerConnected += (sender, peerId) => 
    Console.WriteLine($"Peer {peerId} joined the network");
    
node.PeerDisconnected += (sender, peerId) => 
    Console.WriteLine($"Peer {peerId} left the network");

Multiple Applications

Network-Specific Configuration
// For running multiple IPC networks on same machine
var customerServiceConfig = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(13001)  // Customer service port
    .Build();

var inventoryConfig = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(13002)  // Inventory system port
    .Build();

var reportingConfig = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(13003)  // Reporting dashboard port
    .Build();

๐Ÿ”ง JSON Serialization

Why Choose Your Serializer?

IpcLibrary v2.0+ uses abstracted JSON serialization, giving you full control over which JSON library to use. This prevents dependency conflicts and lets you optimize for your specific needs.

Best for: Modern applications, high performance, minimal dependencies

dotnet add package IpcLibrary.Serialization.SystemTextJson

Usage:

using IpcLibrary.Serialization.SystemTextJson;

// Default options (recommended)
var serializer = new SystemTextJsonSerializer();

// Custom options
var options = new System.Text.Json.JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true,
    WriteIndented = false,
    // Add your custom settings
};
var customSerializer = new SystemTextJsonSerializer(options);

var node = new IpcNode(serializer);

Pros:

  • โœ… High performance
  • โœ… Modern .NET standard
  • โœ… Smaller package size
  • โœ… Built into .NET Core 3.0+

Option 2: JSON.NET (Newtonsoft.Json)

Best for: Projects already using Newtonsoft.Json, legacy compatibility

dotnet add package IpcLibrary.Serialization.Newtonsoft

Usage:

using IpcLibrary.Serialization.Newtonsoft;

// Default settings (recommended)
var serializer = new NewtonsoftJsonSerializer();

// Custom settings
var settings = new Newtonsoft.Json.JsonSerializerSettings
{
    NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore,
    Formatting = Newtonsoft.Json.Formatting.None,
    // Add your custom settings
};
var customSerializer = new NewtonsoftJsonSerializer(settings);

var node = new IpcNode(serializer);

Pros:

  • โœ… Mature and battle-tested
  • โœ… Rich feature set
  • โœ… Excellent compatibility
  • โœ… Familiar to many developers

Custom Serializer

You can implement your own serializer by implementing IJsonSerializer:

using IpcLibrary.Abstractions.Serialization;

public class MyCustomSerializer : IJsonSerializer
{
    public string Serialize<T>(T value)
    {
        // Your serialization logic
    }
    
    public T? Deserialize<T>(string json) where T : class
    {
        // Your deserialization logic
    }
}

var serializer = new MyCustomSerializer();
var node = new IpcNode(serializer);

๐Ÿ“ˆ Migration Guide (v1.x โ†’ v2.0)

Breaking Changes

IpcLibrary v2.0 introduces one breaking change: the IpcNode constructor now requires an IJsonSerializer parameter.

Migration Steps

Step 1: Install a serialization provider

# Choose one:
dotnet add package IpcLibrary.Serialization.SystemTextJson
# OR
dotnet add package IpcLibrary.Serialization.Newtonsoft

Step 2: Update your code

Before (v1.x):

using IpcLibrary;

var node = new IpcNode();
await node.StartAsync(12345, "my-key");

After (v2.0):

using IpcLibrary;
using IpcLibrary.Serialization.SystemTextJson;

var serializer = new SystemTextJsonSerializer();
var node = new IpcNode(serializer);
await node.StartAsync(12345, "my-key");

Compatibility

โœ… Functionality: All features work exactly the same
โœ… Performance: No performance impact
โœ… Wire Protocol: Nodes on v1.x and v2.0 can communicate
โœ… Test Coverage: 176/176 tests passing

Why This Change?

This change provides:

  • โœ… Flexibility: Choose your preferred JSON library
  • โœ… No Conflicts: Avoid dependency version conflicts
  • โœ… Better Control: Custom serialization if needed
  • โœ… Smaller Core: IpcLibrary has fewer dependencies

๐Ÿƒโ€โ™‚๏ธ Development & Testing

Project Structure

IpcLibrary/
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary.Abstractions/                 # Public interfaces and models
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary/                              # Core implementation
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary.Serialization.SystemTextJson/ # System.Text.Json provider
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary.Serialization.Newtonsoft/     # JSON.NET provider
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary.Tests/                        # Fast unit tests (~2-3s)
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary.IntegrationTests/             # Network integration tests
โ”œโ”€โ”€ ๐Ÿ“ IpcLibrary.Demo/                         # Example console application
โ””โ”€โ”€ ๐Ÿ“„ Solution Items/                          # Documentation & config

Running Tests

# Fast unit tests only (recommended during development)
dotnet test IpcLibrary.Tests
# OR use the helper script
./run-unit-tests.bat

# Integration tests (network-dependent, slower)
dotnet test IpcLibrary.IntegrationTests
# OR use the helper script
./run-integration-tests.bat

# All tests
dotnet test
# OR use the helper script
./run-all-tests.bat

Building

# Build entire solution
dotnet build

# Build specific project
dotnet build IpcLibrary/IpcLibrary.csproj

๐Ÿ”ง Configuration

Default Settings

  • Discovery Port: 12345 (UDP) - Fully configurable
  • TCP Ports: Dynamically assigned by OS
  • Node ID: Auto-generated 8-character hex (e.g., "A1B2C3D4")
  • Connection Timeout: 5 seconds (configurable)
  • Network Interface: All interfaces (localhost and LAN)
  • Discovery Method: UDP broadcast (255.255.255.255)
  • Message Format: JSON-serialized over TCP

Port Configuration Options

// 1. Simple port override
await node.StartAsync(13000, "auth-key");  // Use port 13000

// 2. Configuration builder approach
var config = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(14000)
    .Build();
await node.StartAsync(config, "auth-key");

// 3. Dynamic port assignment (testing)
var config = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(0)               // Let OS choose available port
    .Build();

// 4. Pre-built configurations
var testConfig = IpcConfiguration.CreateTestConfiguration();     // Dynamic ports
var networkConfig = IpcConfiguration.CreateNetworkConfiguration(10); // Port 12010

Security Model

  • Authentication: Pre-shared key required to join network
  • Network Isolation: Only nodes with matching pre-shared keys can communicate
  • Connection Security: HMAC-SHA256 authentication handshake
  • Message Integrity: Length-prefixed protocol prevents message corruption
  • Disconnect Detection: Automatic detection of peer disconnects

๐Ÿ“š API Reference

IpcNode Class

public class IpcNode : IDisposable
{
    // Constructor
    public IpcNode(IJsonSerializer jsonSerializer);
    
    // Properties
    string NodeId { get; }                           // 8-character hex ID
    NodeStatus Status { get; }                       // Stopped, Starting, Running
    IReadOnlyList<string> ConnectedPeers { get; }   // List of connected peer IDs
    
    // Lifecycle Methods
    Task StartAsync(int discoveryPort, string secretKey);
    Task StartAsync(IpcConfiguration configuration, string secretKey);
    Task StopAsync();
    void Dispose();
    
    // Messaging Methods
    Task SendTextAsync(string targetId, string message);
    Task BroadcastTextAsync(string message);
    
    // Events
    event EventHandler<PeerConnectedEventArgs> PeerConnected;
    event EventHandler<PeerDisconnectedEventArgs> PeerDisconnected;
    event EventHandler<TextMessageReceivedEventArgs> TextMessageReceived;
    event EventHandler<NodeStatusChangedEventArgs> StatusChanged;
}

Event Arguments

public class PeerConnectedEventArgs : EventArgs
{
    public PeerInfo PeerInfo { get; }
}

public class PeerDisconnectedEventArgs : EventArgs
{
    public PeerInfo PeerInfo { get; }
    public string Reason { get; }
}

public class TextMessageReceivedEventArgs : EventArgs
{
    public Message Message { get; }
    public string SenderId { get; }
    public string Text { get; }
    public DateTime Timestamp { get; }
}

Configuration Builder

var config = IpcConfigurationBuilder.Create()
    .WithDiscoveryPort(12345)
    .WithConnectionTimeout(5000)
    .Build();

๐Ÿงช Testing

Test Coverage: 100% (176/176 passing) โœ…

Unit Tests (Fast โšก)

  • Location: IpcLibrary.Tests/
  • Runtime: ~3 seconds
  • Count: 34 tests
  • Coverage: Core logic, models, authentication, serialization
  • Usage: Run during development for fast feedback

Integration Tests (Comprehensive ๐Ÿ”)

  • Location: IpcLibrary.IntegrationTests/
  • Runtime: ~17 seconds
  • Count: 38 tests
  • Coverage:
    • Peer discovery and connection
    • Message sending and receiving
    • Disconnect detection
    • Multi-node mesh networks
    • Authentication scenarios
  • Usage: Run before commits and releases

Test Results

โœ… All connection establishment tests passing
โœ… All disconnect detection tests passing
โœ… All message sending/receiving tests passing
โœ… All authentication tests passing
โœ… All multi-node mesh tests passing

๐Ÿ” Troubleshooting

Common Issues

Port Already in Use

# Check what's using port 12345
netstat -an | findstr :12345

Authentication Failures

  • Ensure all applications use the same authKey
  • Check for typos in pre-shared keys

Connection Timeouts

  • Verify Windows Firewall isn't blocking localhost connections
  • Check if antivirus is interfering with local TCP connections

Debug Logging

Enable detailed logging by setting environment variable:

set IPCLIB_DEBUG=true

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Run tests (./run-all-tests.bat)
  4. Commit changes (git commit -m 'Add amazing feature')
  5. Push to branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Development Guidelines

  • โœ… Maintain .NET Standard 2.1 compatibility
  • โœ… Add unit tests for new features
  • โœ… Add integration tests for network features
  • โœ… Follow existing code style and patterns
  • โœ… Update documentation for API changes

๐ŸŽฎ Demo Application

Quick Start

Run 3 nodes instantly with one command:

.\run-3-nodes.bat

Or start nodes manually:

# Terminal 1 - Alice
dotnet run --project IpcLibrary.Demo -- --name Alice --port 12345 --key mynetwork

# Terminal 2 - Bob
dotnet run --project IpcLibrary.Demo -- --name Bob --port 12345 --key mynetwork

# Terminal 3 - Charlie
dotnet run --project IpcLibrary.Demo -- --name Charlie --port 12345 --key mynetwork

Demo Features

  • โœ… Auto-discovery: Nodes find each other automatically
  • โœ… Real-time chat: Send messages between nodes
  • โœ… Peer management: See who's online
  • โœ… Command interface: Full-featured CLI
  • โœ… Color-coded output: Easy to read
  • โœ… Connection events: See joins/leaves in real-time

Available Commands

/help                          Show command list
/peers                         List connected peers
/send [nodeId] [message]      Send to specific peer
/broadcast [message]          Send to all peers
[message]                     Shortcut to broadcast
/history                      Show message history
/clear                        Clear screen
/quit                         Exit application

Demo Example Session

Node-MC-GAMING> /peers
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘      Connected Peers (2)        โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โ— Peer1    (5E4423AF)
โ— Peer2    (776F5DF3)

Node-MC-GAMING> /broadcast Hello everyone!
โžค Broadcast to 2 peer(s): Hello everyone!

Node-MC-GAMING> 
[20:45:32] Peer1: Hi there!
[20:45:35] Peer2: Hello!

See docs/DEMO-GUIDE.md for detailed examples and screenshots.


๐Ÿ“ฆ NuGet Packages

Published & Available Now!

IpcLibrary - Main Library

NuGet Version NuGet Downloads

dotnet add package IpcLibrary

Includes:

  • Complete IPC functionality
  • Auto-discovery and mesh networking
  • Message sending and receiving
  • Event-driven architecture
  • Full XML documentation
  • Debug symbols (.snupkg)
  • Requires: A JSON serialization provider (see below)
IpcLibrary.Abstractions - Interfaces & Models

NuGet Version

dotnet add package IpcLibrary.Abstractions

Includes:

  • Public interfaces (IIpcNode, IJsonSerializer)
  • Event argument classes
  • Configuration models
  • Message types
  • Zero dependencies

NuGet Version

dotnet add package IpcLibrary.Serialization.SystemTextJson

Includes:

  • High-performance System.Text.Json implementation
  • Configurable serialization options
  • Full XML documentation
  • Debug symbols (.snupkg)
IpcLibrary.Serialization.Newtonsoft - JSON.NET Provider

NuGet Version

dotnet add package IpcLibrary.Serialization.Newtonsoft

Includes:

  • JSON.NET (Newtonsoft.Json) implementation
  • Configurable serialization settings
  • Full XML documentation
  • Debug symbols (.snupkg)

๐Ÿ” Debugging Support

Both packages include:

  • Symbol packages (.snupkg) for step-through debugging
  • Source link integration to view code on GitHub
  • XML documentation for IntelliSense in your IDE

๐Ÿ“Š Package Stats

Core Library:

  • License: MIT
  • Target: .NET Standard 2.1
  • Dependencies: IpcLibrary.Abstractions only
  • Size: ~50 KB (main) + ~20 KB (abstractions)
  • Test Coverage: 100% (176/176 tests passing)

Serialization Providers:

  • SystemTextJson: Depends on System.Text.Json (โ‰ฅ4.7.2)
  • Newtonsoft: Depends on Newtonsoft.Json (โ‰ฅ13.0.3)
  • Size: ~10-15 KB each

๐Ÿ“‹ Roadmap

โœ… Phase 1 - Core Features (Complete & Published!)

  • โœ… Peer-to-peer mesh networking
  • โœ… UDP auto-discovery with broadcast
  • โœ… TCP reliable messaging
  • โœ… Pre-shared key authentication
  • โœ… Bidirectional text messaging
  • โœ… Disconnect detection
  • โœ… Interactive demo application
  • โœ… 100% test coverage (176/176 tests)
  • โœ… Published to NuGet.org ๐ŸŽ‰

โœ… Phase 2 - JSON Abstraction (Complete!)

  • โœ… Pluggable JSON serialization
  • โœ… System.Text.Json provider
  • โœ… JSON.NET (Newtonsoft) provider
  • โœ… Custom serializer support
  • โœ… Zero breaking changes to functionality
  • โœ… All tests updated and passing

๐Ÿ”ฎ Phase 3 - Future Enhancements

  • Binary message support (for files/data)
  • Message compression for large payloads
  • Heartbeat/keep-alive messages
  • Message acknowledgment and delivery confirmation
  • Performance metrics and monitoring
  • Configuration file support
  • Message persistence options
  • Connection quality metrics

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™‹โ€โ™‚๏ธ Support & Documentation

Documentation Files

Getting Help

  • ๐Ÿ› Issues: Report bugs via GitHub Issues
  • ๐Ÿ’ฌ Discussions: Use GitHub Discussions for questions
  • ๐Ÿ“ง Contact: Open an issue for support

๐ŸŽ‰ Project Status: v2.0 Published & Production Ready!

๐Ÿ“ฆ Available on NuGet โ€ข 100% test coverage โ€ข Flexible JSON โ€ข Full feature set โ€ข Comprehensive docs โ€ข Working demo

# Install IpcLibrary
dotnet add package IpcLibrary

# Choose your JSON serializer
dotnet add package IpcLibrary.Serialization.SystemTextJson
# OR
dotnet add package IpcLibrary.Serialization.Newtonsoft

What's New in v2.0

  • โœจ Choose your JSON library - System.Text.Json or JSON.NET
  • ๐Ÿ”ง No dependency conflicts - Use the JSON library your project needs
  • ๐Ÿš€ Same great features - All functionality preserved
  • โœ… 100% tested - All 176 tests passing

๐ŸŒŸ Star on GitHub if you find this useful!
๐Ÿ’ฌ Share feedback via GitHub Issues or Discussions

Built with โค๏ธ for the .NET community

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
2.0.0 208 11/14/2025

v2.0.0 - Initial Release
โ€ข System.Text.Json implementation of IJsonSerializer
โ€ข High-performance JSON serialization
โ€ข Configurable JsonSerializerOptions
โ€ข Full support for IpcLibrary 2.0.0