All Projects → steamcore → Tinyipc

steamcore / Tinyipc

Licence: mit
.NET inter process broadcast message bus with supporting classes

Projects that are alternatives of or similar to Tinyipc

Plumber
A swiss army knife CLI tool for interacting with Kafka, RabbitMQ and other messaging systems.
Stars: ✭ 514 (+834.55%)
Mutual labels:  message-bus
Raftlib
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators
Stars: ✭ 717 (+1203.64%)
Mutual labels:  ipc
Gollum
An n:m message multiplexer written in Go
Stars: ✭ 883 (+1505.45%)
Mutual labels:  message-bus
Mappedbus
Mappedbus is a low latency message bus for Java microservices utilizing shared memory. http://mappedbus.io
Stars: ✭ 613 (+1014.55%)
Mutual labels:  ipc
Rawrabbit
A modern .NET framework for communication over RabbitMq
Stars: ✭ 682 (+1140%)
Mutual labels:  message-bus
Scalecube Services
v2.0 - ScaleCube Services provides a low latency Reactive Microservices library for serverless service registry and discovery based on gossip protocol and without single point-of-failure or bottlenecks.
Stars: ✭ 23 (-58.18%)
Mutual labels:  ipc
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+776.36%)
Mutual labels:  ipc
Redux Electron Ipc
Redux Electron IPC Middleware
Stars: ✭ 54 (-1.82%)
Mutual labels:  ipc
K8cscan
K8Cscan大型内网渗透自定义插件化扫描神器,包含信息收集、网络资产、漏洞扫描、密码爆破、漏洞利用,程序采用多线程批量扫描大型内网多个IP段C段主机,目前插件包含: C段旁注扫描、子域名扫描、Ftp密码爆破、Mysql密码爆破、Oracle密码爆破、MSSQL密码爆破、Windows/Linux系统密码爆破、存活主机扫描、端口扫描、Web信息探测、操作系统版本探测、Cisco思科设备扫描等,支持调用任意外部程序或脚本,支持Cobalt Strike联动
Stars: ✭ 693 (+1160%)
Mutual labels:  ipc
Broadcast Channel
📡 BroadcastChannel to send data between different browser-tabs or nodejs-processes 📡
Stars: ✭ 843 (+1432.73%)
Mutual labels:  ipc
Aeron
Efficient reliable UDP unicast, UDP multicast, and IPC message transport
Stars: ✭ 5,782 (+10412.73%)
Mutual labels:  ipc
Vue Notifications
Vue.js agnostic library for non-blocking notifications
Stars: ✭ 644 (+1070.91%)
Mutual labels:  message-bus
Easymessenger
一款Android平台上基于Binder的IPC进程间通信库
Stars: ✭ 24 (-56.36%)
Mutual labels:  ipc
Event bus
🏄 Traceable, extendable and minimalist **event bus** implementation for Elixir with built-in **event store** and **event watcher** based on ETS.
Stars: ✭ 563 (+923.64%)
Mutual labels:  message-bus
Veza
IPC/TCP Networking Utility to connect several processes with great concurrency.
Stars: ✭ 45 (-18.18%)
Mutual labels:  ipc
Binaryprefs
Rapidly fast and lightweight re-implementation of SharedPreferences which stores each preference in files separately, performs disk operations via NIO with memory mapped byte buffers and works IPC (between processes). Written from scratch.
Stars: ✭ 484 (+780%)
Mutual labels:  ipc
Rpc Thunderdome
A comparison between Proteus RPC and other commonly used RPC frameworks
Stars: ✭ 22 (-60%)
Mutual labels:  ipc
Electron Promise Ipc
Promise-flavored IPC calls in Electron. 100% test coverage.
Stars: ✭ 55 (+0%)
Mutual labels:  ipc
Microservices Using Rabbitmq
Python & Go microservices on Docker, using RabbitMQ for asynchronous IPC
Stars: ✭ 51 (-7.27%)
Mutual labels:  ipc
Ipcservicemanager
Android进程间通信框架
Stars: ✭ 24 (-56.36%)
Mutual labels:  ipc

TinyIpc

NuGet Build

.NET inter process broadcast message bus.

Intended for quick broadcast messaging in Windows desktop applications, it just works.

Quick introduction

  • Designed to be serverless
  • Clients may drop in and out at any time
  • Messages expire after a specified timeout, default 500 milliseconds
  • The log is kept small for performance, default max log size is 1 MB
  • Reads are queued and should be received in the same order as they were published

Benefits and drawbacks

It's easy to use and there is no complicated setup. It is suited for small messages, so big messages probably need some other transport mechanism. With high enough throughput messages may be lost if receivers are not able to get a read lock before the message timeout is reached.

Performance

Every publish operation reads and writes the entire contents of a shared memory mapped file and every read operation which is triggered by writes also reads the entire file so if performance is important then batch publish several messages at once to reduce the amount of reads and writes.

OS Support

Unfortunately TinyIpc only works on Windows because the named primitives that are core to this entire solution only works on Windows and throws PlatformNotSupportedException on other operating systems by design.

See https://github.com/dotnet/runtime/issues/4370 for more information.

Compared to other solutions

This comparison was made in 2014.

TinyIPC XDMessaging NVents IpcChannel Named Pipes
Broadcasting to all listeners ✓ (1)
No master process
Insensitive to process privilege level
Entirely in memory

1 Via SSDP network discovery

Simple example

One message bus listening to the other.

using (var messagebus1 = new TinyMessageBus("ExampleChannel"))
using (var messagebus2 = new TinyMessageBus("ExampleChannel"))
{
	messagebus2.MessageReceived +=
		(sender, e) => Console.WriteLine(Encoding.UTF8.GetString(e.Message));

	while (true)
	{
		var message = Console.ReadLine();
		await messagebus1.PublishAsync(Encoding.UTF8.GetBytes(message));
	}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].