Reactive Distributed communication framework for .NET, Kotlin and C++ (experimental). Inspired by JetBrains Rider IDE.
The framework contains of several libraries for single process usage and cross process communication.
JetBrains Core library for graceful disposal, concurrency and reactive programming. For single process usage.
-
Kotlin
-
.NET
JetBrains Networking library for reactive distributed communication
-
Kotlin
-
.NET
Rd Generator: generates stubs (Kotlin/C#/C++) classes by Kotlin DSL models
- Sources: https://github.com/JetBrains/rd/tree/master/rd-kt/rd-gen
- Gradle: https://www.myget.org/feed/rd-snapshots/package/maven/com.jetbrains.rd/rd-gen/0.201.40
- NuGet: https://www.nuget.org/packages/JetBrains.RdGen
Firstly decide which languages will be involved in protocol. It may be Kotlin and C#, Rider uses them for instance. Or C++ only, who knows. After that prepare the environment and build needed assemblies. Choose separate or common build based on needs.
Open solution in JetBrains Rider: https://github.com/JetBrains/rd/tree/master/rd-net/Rd.sln
- .NET Framework >= 3.5
dotnet build rd-net/Rd.sln
Open solution in IntellijIDEA: https://github.com/JetBrains/rd
- Gradle 6.2.2
- Kotlin 1.3.61
gradle :build -x test
Open solution in JetBrains CLion: https://github.com/JetBrains/rd/rd-cpp
- git
- cmake
- Visual Studio 2015+ or
- clang 6.0+
cd rd-cpp
./build.cmd
or
gradle :rd-cpp:build -x test
gradle build
To build packages locally please use: rd-kt/rd-gen/pack.sh
* Right now it works only on Linux. Please use Docker for Windows or macOS.
Generate models in each language you have chosen. For this purpose project :rd-gen must be built.
See https://www.jetbrains.com/help/resharper/sdk/Products/Rider.html#protocol-extension for more details.
See com.jetbrains.rd.generator.test.cases.generator.demo.DemoModel and com.jetbrains.rd.generator.test.cases.generator.example.ExampleModel
Generally it depends on the architecture. But in standard Client-Server architecture through localhost connection framework's classes are suitable.
JetBrains.Rd.Impl.Server and *.Client respectively
com.jetbrains.rd.framework.Server and *.Client respectively
rd::SocketWire::Server and *.Client respectively
Look at cross tests
- com.jetbrains.rd.framework.test.cross at Kotlin side
- Test.RdCross at C# side
- rd::cross at C++ side