I would like to announce Eneter 5.0 is released.
Eneter is a lightweight library for the interprocess communication. It is easy to use and it works across various platforms.
The idea of the framework is to provide components that can be combined to create desired communication scenarios.
The framework is free for non-commercial use and can be downloaded from:
Here is a brief overview about Eneter Messaging Framework 5.0.
- Java 6
- Android 2.1 (or later)
- .NET 3.5, .NET 4.0, .NET 4.5
- Windows Phone 7, Windows Phone 7.1
- Silverlight 3, Silverlight 4, Silverlight 5
- Mono 2.6.4
Online help for .NET platforms and Mono.
Protocols and Transportation Mechanisms
- TCP - for communication between processes running on different machines.
- WebSocket - for communication between processes running on different machines. It provides bi-directional, full-duplex communication in environments which block non-standard Internet connections using a firewall.
- HTTP - for communication between processes running on different machines. It works in environments blocking non-standard Internet connections using a firewall.
- Shared Memory - for very fast communication between processes running on the same machine.
- Named Pipes - for communication between processes running on the same machine.
- Silverlight Messaging - for communication between Silverlight applications.
- Android USB Cable - for communication between computer and Android device connected via the USB cable.Eneter.
- Thread Messaging - for communication between threads running in the same process
- XmlStringSerializer - serialization to XML (works for the communication between .NET and Java).
- DataContractXmlStringSerializer - serialization to XML using DataContract and DataMember attributes.
- DataContractJsonStringSerializer - serialization to JSON using DataContract and DataMember attributes.
- BinarySerializer - for fast serialization using the binary format (does not work for the communication between .NET and Java).
- AesSerializer - for encrypting using Advanced Encryption Standard (works for the communication between .NET and Java).
- RijndaelSerializer - for encrypting using Rijndael algorithm.
- GZipSerializer - for compressing big messages before sending across the network (works for the communication between .NET and Java).
- RsaSerializer - for encrypting messages by RSA algorithm using public and private keys (works for the communication between .NET and Java).
- RsaDigitalSignatureSerializer - for using digital signature to verify who sent the message and that the message was not changed (works for the communication between .NET and Java).
The communication API is not bound to a particular protocol or serialization mechanism. Therefore your implementation is same, does not matter what you use.
Sending-Receiving MessagesTo implement the communication between applications, the framework provides functionality to send and receive messages. Communication can be one-way or request-response and messages can be:
- String Messages - for sending and receiving text messages.
- Typed Messages - for sending and receiving data structures of specified types (strongly typed messages)
Routing MessagesIt provides components that can be placed on the communication path to control the routing behavior.
- Broker - for publish-subscribe scenarios (publisher sends messages to the broker and the broker notifies all subscribers).
- Dispatcher - for routing messages to all connected receivers (e.g. for a service listening to TCP and HTTP at the same time).
- Router - for routing messages to preconfigured addresses.
- Channel Wrapper/Unwrapper - for a server application providing multiple services on one address.
- Load Balancer - for distributing workload across more computers (or processes).
ReliabilityThe communication across the network is typically less reliable as a local call inside a process. The network connection can be interrupted or a receiving application can be temporarily unavailable. If your communication scenario requires overcome these issues, the framework provides:
- Monitoring of connection availability - for early detection of a disconnection.
- Buffered messaging and automatic reconnect - for overcoming short disconnections (e.g. in case of unstable network).
- Acknowledged messaging - to be notified whether a message was delivered or not.
SecurityThe communication across the network is easy to observe and confidential data can be acquired by unauthorized persons. Therefore, you may want to protect your data and verify the identity:
- Communication via SSL.
- Encrypting your messages using symetric AES with AesSerializer.
- Encrypting your messages using RSA (public-private key encryption) with RsaSerializer.
- Digitally signing of messages with RsaDigitalSignatureSerializer.