/openddsharp

OpenDDS wrapper for .NET languages

Primary LanguageC#GNU Lesser General Public License v3.0LGPL-3.0

Continuous Integration Coverage Status

OpenDDSharp

OpenDDS wrapper for .NET languages.

OpenDDS is an open source implementation of the Object Management Group (OMG) Data Distribution Service (DDS), developed and copyrighted by Object Computing Incorporated (OCI). The OMG DDS specification is intended to be suitable for systems whose requirements include real-time, high volume, robustness, failure tolerant data distribution utilizing a publish and subscribe model.

OpenDDS Website: https://www.opendds.org
OpenDDS Repository: https://github.com/OpenDDS/OpenDDS
OpenDDS Documentation: https://opendds.readthedocs.io

OpenDDSharp has been compiled with OpenDDS v3.29.1

Package NuGet
OpenDDSharp OpenDDSharpShield
OpenDDSharp.IdlGenerator OpenDDSharpIdlGeneratorShield
OpenDDSharp.Native OpenDDSharpNativeShield
OpenDDSharp.Templates OpenDDSharpTemplatesShield

Getting Started

The quickest way to start using OpenDDSharp is to follow the OpenDDSharp Getting Started article. It will give you the first hints on how to work with the API and how to organize your dotnet projects.

A detailed API Documentation is available online. Navigate through the namespaces to get information about the implemented OpenDDSharp APIs.

As OpenDDSharp is a wrapper of OpenDDS, the OpenDDS Developer's Guide is also a valuable resource that you can use but keep in mind that not everything is implemented yet.

Roadmap Overview

OpenDDSharp started as a proof of concept during a distributed system technology selection based on the following OpenDDS articles:

The first versions of OpenDDSharp were using a similar C++/CLI wrapper than the articles explain but that solution ties the API to .NET Framework and Windows operating systems. In order to avoid the restrictions, the wrapper has been re-implemented using PInvoke and compiled for NET Standard 2.0.

The Data-Centric Publish-Subscribe (DCPS) model described in the main DDS Specification v1.4 is already implemented and ready to be used.

The IDL code generator is based on the IDL4 to C# Language Mapping Specification. Visit https://www.openddsharp.com/articles/idl.html to check the current status of the implementation.

As OpenDDSharp is based on native OpenDDS libraries, it needs a different compilation for each Framework/Runtime that support.

The following table shows the Target Frameworks that are already implemented and tested ( ✅ ) and the ones that are planned for next versions ( ❌ ):

Target Framework Status
net462 (or above)
net6.0
net6.0-android
net6.0-ios
net7.0
net7.0-android
net7.0-ios
net8.0
net8.0-android
net8.0-ios

The following table shows the Runtimes Identifiers that are already implemented and tested ( ✅ ) and the ones that are planned for next versions ( ❌ ):

Runtime ID Status
win-x86
win-x64
linux-x64
linux-arm64
osx-x64
osx-arm64

Once the core API is stable and working for all the planned Frameworks/Runtimes, the development will be focus to provide other advanced DDS features

How to Collaborate

OpenDDSharp is developed and maintained as a hobby during my free time but as (almost) all human beens I have kids, wife, family, friends or other hobbies that I like to enjoy with.

You should understand that I'm not 100% dedicated to the project and the only way to make it grow is collaborating together.

Use it, test it and report it

Just using OpenDDSharp you are already collaborating with the project.

Share your thoughts with the community by creating new Discussions and report bugs or improvement requests on the Issues section.

In addition, the online documentation contains one advertisement per page. I'm sorry for that but... please consider to whitelist www.openddsharp.com in your favorite adsblock software if you are using one.

Implement it yourself

As in almost all open sources projects, pull request are welcome. If you find bugs or your project requires a not implemented feature, feel free to code it yourself and create a pull request.

Try to structure your code nicely and follow the OpenDDSharp coding guidelines (OpenDDSharp.ruleset). All pull requests will be reviewed and merged when approved.

Sponsor it

If you are using OpenDDSharp successfully in your projects or just want an open source alternative for your DDS systems in C#, you should consider to sponsor it to ensure the future development of the project.

Check the monthly and one-time tiers in the GitHub Sponsor section for more information.

GitHub Sponsor