VoltRpc.Proxy.Generator 2.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package VoltRpc.Proxy.Generator --version 2.1.0                
NuGet\Install-Package VoltRpc.Proxy.Generator -Version 2.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VoltRpc.Proxy.Generator" Version="2.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add VoltRpc.Proxy.Generator --version 2.1.0                
#r "nuget: VoltRpc.Proxy.Generator, 2.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install VoltRpc.Proxy.Generator as a Cake Addin
#addin nuget:?package=VoltRpc.Proxy.Generator&version=2.1.0

// Install VoltRpc.Proxy.Generator as a Cake Tool
#tool nuget:?package=VoltRpc.Proxy.Generator&version=2.1.0                

VoltRpc

License NuGet NuGet Download Count Build Status Docs Status Discord

VoltRpc - An RPC library which is designed to be both simple to use and fast.

Features

  • Its fast (See the benchmarks)
  • Supports all built-in C# value types, including:
    • Bool
    • Byte
    • Char
    • Decimal
    • Double
    • Float
    • Int
    • Long
    • SByte
    • Short
    • UInt
    • ULong
    • UShort
  • Supports these built-in .NET types: (More to be added)
    • String
    • DateTime
    • TimeSpan
    • Uri
    • Guid
  • Supports arrays for any type
  • Easily support custom types by implementing a TypeReadWriter<T>
  • Proxy generated by using a .NET Source Generator
  • Simple to use

Getting Started

Installation

VoltRpc can be installed from NuGet. You will also need the proxy generator (also on NuGet).

<ItemGroup>
    <PackageReference Include="VoltRpc" Version="3.0.0" />
    <PackageReference Include="VoltRpc.Proxy.Generator" Version="2.1.0" />
</ItemGroup>

Example

For a more in-depth example, see the Overview or Setup.

There is also a demo project included.

[GenerateProxy(GeneratedName = "TestProxy")]
public interface ITestInterface
{
  public void DoSomethingCool();
  public int GetTheCoolValue();
}

public class TestInterface : ITestInterface
{
  public void DoSomethingCool()
  {
    Console.WriteLine("Something Cool!");
  }

  public int GetTheCoolValue()
  {
    return 69;
  }
}

public class Program
{
  IPEndPoint ip = new(IPAddress.Loopback, 7767);

  TestInterface test = new();

  //Host
  Host host = new TCPHost(ip);
  host.AddService<ITestInterface>(test);
  host.StartListening().ConfigureAwait(false);

  //Client
  Client client = new TCPClient(ip);
  client.AddService<ITestInterface>();
  client.Connect();

  //Now we can call to method like it was normal C#
  TestProxy proxy = new(client);
  proxy.DoSomethingCool();
}

Benchmarks

BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19044.1826 (21H2)
Intel Core i5-10600KF CPU 4.10GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK=6.0.302
  [Host]     : .NET 6.0.7 (6.0.722.32202), X64 RyuJIT
  Job-TDLHXN : .NET 6.0.7 (6.0.722.32202), X64 RyuJIT

Jit=Default  Platform=AnyCpu  Runtime=.NET 6.0  

Pipes Non-Array

Pipes Non-Array

(Currently, the in-built arrays are quite a lot slower, we are looking into fixing this in a later release)

Method message array Mean Error StdDev
BasicVoid ? ? 6.311 μs 0.0517 μs 0.0432 μs
BasicReturn ? ? 7.444 μs 0.0589 μs 0.0551 μs
ArrayReturn ? ? 21.389 μs 0.3943 μs 0.6695 μs
ArrayFast ? ? 1,579.432 μs 10.1223 μs 9.4684 μs
BasicParameterVoid Hello World! ? 7.128 μs 0.0390 μs 0.0346 μs
BasicParameterReturn Hello World! ? 8.287 μs 0.0364 μs 0.0304 μs
ArrayParameterVoid ? Byte[25] 18.423 μs 0.3675 μs 0.6140 μs
ArrayParameterReturn ? Byte[25] 28.647 μs 0.5643 μs 0.9112 μs
ArrayParameterVoid ? Byte[8294400] 2,705,942.687 μs 11,965.3253 μs 11,192.3727 μs
ArrayParameterReturn ? Byte[8294400] 5,416,337.679 μs 21,036.1040 μs 18,647.9583 μs

For more info on these benchmarks see Benchmarks.

Authors

Voltstro - Initial work - Voltstro

License

This project is licensed under the MIT license – see the LICENSE.md file for details.

Credits

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

  • .NETStandard 2.0

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on VoltRpc.Proxy.Generator:

Repository Stars
Voltstro-Studios/UnityWebBrowser
Unity Web Browser (UWB) is a Unity package that allows displaying and interacting with the web from within Unity.
Version Downloads Last updated
2.3.0 703 1/24/2024
2.2.0 1,062 9/20/2022
2.1.0 471 8/5/2022
2.0.1 436 1/6/2022
1.1.1 447 11/13/2021
1.0.0 488 8/1/2021