Description
The enhanced communication abstraction layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network. The design is inspired by known Data Distribution Service for Real-Time Systems (see Data distribution service on wikipedia). The current eCAL implementation realizes a subset of such a DDS system, there is only a basic support for Quality of Service (QoS) driven data transport (best effort and reliable).
eCAL is designed for typical cloud computing scenarios where different processes exchange their I/O’s using a publisher/subscriber pattern. The data exchange is based on so called topics. A topic wraps the payload that should be exchanged with additional informations like a unique name, a type and a description. A topic can be connected to more than one publisher and/or subscriber. These are the basic elements of the eCAL API.
eCAL alternatives and similar libraries
Based on the "Inter-process communication" category.
Alternatively, view eCAL alternatives based on common mentions on social networks and blogs.
-
Apache Thrift
Efficient cross-language IPC/RPC, works between C++, Java, Python, PHP, C#, and many more other languages. Originally developed by Facebook. [Apache2] -
WAMP
Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of eCAL or a related project?
Popular Comparisons
README
eCAL - enhanced Communication Abstraction Layer
Copyright (c) 2020, Continental Corporation.
License
[](LICENSE.txt)
Build States
Preface
The enhanced Communication Abstraction Layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network. eCAL uses a publish / subscribe pattern to automatically connect different nodes in the network. It's choosing the best available data transport mechanisms - UDP for network communication and High Performance Shared Memory for local communication.
eCAL
- is fast (1 - 10 GB/s depends on payload size - check measured performance here)
- provides publish / subscribe and client / server patterns
- is designed brokerless
- provides a C++ and C interface for easy integration into other languages (like python or csharp)
- supports intel and arm platforms
- has powerful tools for recording, replay and monitoring all your data flows - decentralized
- integrates gently into your ROS2 environement with the brand new eCAL RMW
eCAL runs on
- Windows (stable)
- Linux (stable)
- QNX (stable)
- MacOS (experimental)
- FreeBSD (experimental)
Really ?? Just another pub/sub middleware ? Why ? What is the different to my beloved fully featured DDS ?
- it's stupid simple - no complex configuration effort for all kind of communication details or QOS settings
- it's message protocol agnostic - choose the message protocol that fits to your needs like Google Protobuf, CapnProto, Flatbuffers ..
- it's using the standardized recording format HDF5
What is on the roadmap ?
- more language bindings (rust, go-lang)
- and ?? tell us about your use case :-)
[email protected] using eCAL
Links
- eCAL Documentation: https://continental.github.io/ecal
- Getting Started Tutorial: https://continental.github.io/ecal/getting_started/introduction
- Downloads & Releases: https://github.com/continental/ecal/releases
*Note that all licence references and agreements mentioned in the eCAL README section above
are relevant to that project's source code only.