c80k / capnproto-dotnetcore

A Cap'n Proto implementation for .NET Standard and .NET Core
Other
145 stars 27 forks source link

capnproto-dotnetcore Build status Coverage Status

A Cap'n Proto implementation for .NET Standard 2.0 (credits to lostinplace) and .NET Core.

"Cap'n Proto is an insanely fast data interchange format and capability-based RPC system." Whilst the original implementation is written in C++ there are several ports to other languages. This is a C# implementation for .NET Core.

Disclaimer: Neither this project nor its author are affiliated with Cap'n Proto. This is just yet another independent implementation of the specification. The following sections assume that you are familiar with Cap'n Proto and probably its GitHub project.

Getting started: Users

The overall deployment consists of two components:

Code generator back end: Visual Studio / MSBuild integration

This is probably the most convenient option for Visual Studio development: The MSBuild integration package recognizes .capnp files in your VS project and generates their code-behind during build.

A prerequisite is that the Cap'n Proto tool suite is installed (capnp.exe must be on your PATH). The simplest way to achieve this:

choco install capnproto

Then, for the VS project which hosts your .capnp schema definitions:

Install-Package CapnpC.CSharp.MsBuild.Generation

Code generator back end: dotnet tool

The C# code generator back end is available as dotnet tool. It requires a .NET Core 3.1 (or higher) runtime or SDK (type dotnet at command line prompt to check whether you already have one). This is the recommended variant. To install it globally, type

dotnet tool install capnpc-csharp --global

Code generator back end: Windows command line

There is also a self-contained Chocolatey deployment for Windows (x86). To install, type

choco install capnpc-csharp-win-x86

This variant will also download and install the Cap'n Proto tool set Chocolatey package. Note that the author does not maintain this package and has no influence on its contents.

Runtime assembly

The Capnp.Net.Runtime assembly is available as Nuget package. E.g. within VS package manage console, type

Install-Package Capnp.Net.Runtime

Getting started: Developers

For building from scratch you will need Visual Studio ≥ 2019 (e.g. Community Edition) with suitable workloads for C# / .NET Core (currently .NET Core 2.1) development. For the test suite, you will also need the C++ native workload, vcpkg and Cap'n Proto release 0.7.0:

vcpkg install capnproto

Solution/project structure is as follows:

Features

The following Cap'n Proto features are currently implemented:

These features are not yet implemented: