Click here to Skip to main content
Click here to Skip to main content

Tagged as

Eneter Messaging Framework 3.0

, 26 Oct 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
The third version of the messaging framework for the interprocess communication.

Introduction

Eneter Messaging Framework is a lightweight framework for the interprocess communication based on messages.
Although the framework is lightweight (the assembly has about 300Kb), it provides quite comprehensive functionality allowing to implement advanced communication scenarios too.
(E.g. Service listening to HTTP and TCP at the same time, Communication across unstable network, Load Balancing, etc.)

The framework is free for non-comercial use (License) and runs in .NET 3.5, .NET 4.0, Windows Phone 7, Silverlight 3, Silverlight 4 and MONO 2.6.4.
Therefore, you can easily implement e.g. the communication between Windows Phone 7 and a standalone desktop application.
The framework can be downloaded from http://www.eneter.net.
EneterComponents.gif

Interprocess Communication

The communication between applications can be realized by various protocols or mechanisms. The right one depends on particular requirements. E.g. Are communicating applications on one machine? Are there any restrictions (e.g. Silverlight)?
The framework allows to implement the communication via:

  • Shared Memory - for the very fast communication between processes running on the same machine (faster than Named Pipes)
  • Named Pipes - for the communication between processes running on the same machine
  • TCP - for the communication between processes running on different machines.
  • HTTP - for the communication between processes running on different machines.
  • Silverlight Messaging - for the communication between Silverlight applications.

Encoding

Messages can be encoded with using:

  • XML Serializer - for simple serialization of messages into XML.
  • XML Data Contract Serializer - for the serialization of messages into XML using DataContract and DataMember attributes
  • Binary Serializer - for the fast serialization of messages into the binary format.
  • AES Serializer - for encrypting messages using Advanced Encryption Standard.
  • Rijndael Serializer - for encrypting messages using Rijndael encryption.
  • GZip Serializer - for compressing big messages before sending across the network.

The communication API is not bound to a particular protocol or encoding format, therefore your implementation stays same, does not matter what you use.

Routing Messages

The routing functionality provides components that can be placed on the communication path to control the sending behavior. E.g. forwarding messages to subscribed receivers, forwarding messages to a different address, load balancing, etc.

  • Broker - for sending notification messages to subscribed clients (i.e. publish-subscribe scenarios).
  • Router - for re-routing messages to a different address.
  • Dispatcher - for routing messages to multiple receivers (the same request processed by more services in parallel).
  • Load Balancer - for distributing workload across more computers (or processes, or threads).
  • Channel Wrapper/Unwrapper - for receiving various types of messages on one address (no need for long "if ... then" statements to recognize the type of received messages.)

Reliability

The communication across the network is typically less reliable as a local call performed inside the application. The network connection can be interrupted, or the receiving application can be temporarily unavailable. If your communication scenario requires to overcome these issues, the framework provides the following functionality:

  • Monitoring of the connection availability - for early detection of a disconnection.
  • Buffering of sent messages in case of a disconnection and automatic reconnect - for overcoming short disconnections e.g. caused by an unstable network.
  • Acknowledged messages - for confirmation if the message was delivered or not.

Security

The communication across the network is very easy to be observed and confidential data can be acquired by unauthorized persons. Therefore you may want to protect your data during the communication.

  • HTTPS, SSL and fast symetric encryption by using AES or Rijndael serializers.
If you are interested in more technical details about the framework, you can visit Eneter Online Info.

Enjoy the third version.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Ondrej_Uzovic
Architect
Slovakia Slovakia
My programming path started in 1987 when I got my first computer Sharp MZ-800.
It came with 8 bit CPU Z80, 64Kb RAM and the tape recorder. It was a great machine. I think I still have it somewhere.
I was fascinated and I started to write first programs. Eventually I became developer and software architect. I like innovations and clean nice solutions.

Comments and Discussions

 
QuestionMy vote of 5 Pinmemberdxk2419-Aug-12 9:34 
AnswerRe: My vote of 5 PinmemberOndrej_Uzovic9-Aug-12 21:27 
Generalgood job Pinmembergalaxy869115-Dec-11 0:02 
GeneralRe: good job PinmemberOndrej_Uzovic15-Dec-11 6:54 
GeneralMy vote of 5 [modified] Pinmemberchristoph braendle26-Oct-11 21:48 
GeneralRe: My vote of 5 PinmemberOndrej_Uzovic27-Oct-11 10:58 
GeneralMy vote of 1 PinmvpSacha Barber26-Oct-11 11:25 
GeneralRe: My vote of 1 [modified] PinmemberOndrej_Uzovic26-Oct-11 12:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.141220.1 | Last Updated 26 Oct 2011
Article Copyright 2011 by Ondrej_Uzovic
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid