GrpcDotNetNamedPipes 1.4.4
Install-Package GrpcDotNetNamedPipes -Version 1.4.4
dotnet add package GrpcDotNetNamedPipes --version 1.4.4
<PackageReference Include="GrpcDotNetNamedPipes" Version="1.4.4" />
paket add GrpcDotNetNamedPipes --version 1.4.4
#r "nuget: GrpcDotNetNamedPipes, 1.4.4"
// Install GrpcDotNetNamedPipes as a Cake Addin
#addin nuget:?package=GrpcDotNetNamedPipes&version=1.4.4
// Install GrpcDotNetNamedPipes as a Cake Tool
#tool nuget:?package=GrpcDotNetNamedPipes&version=1.4.4
GrpcDotNetNamedPipes
Windows named pipe transport for gRPC in C#/.NET.
This is not an official Google product.
Supported platforms
- .NET Framework 4.6+ (Windows)
- .NET Core 2.1+ (Windows)
Usage
Suppose you have a Greeter service as described in the gRPC on .NET Core intro.
Server:
var server = new NamedPipeServer("MY_PIPE_NAME");
Greeter.BindService(server.ServiceBinder, new GreeterService());
server.Start();
Client:
var channel = new NamedPipeChannel(".", "MY_PIPE_NAME");
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(
new HelloRequest { Name = "World" });
Console.WriteLine(response.Message);
Why named pipes?
Named pipes are suitable for inter-process communication (IPC).
Compared with gRPC over HTTP (using grpc or grpc-dotnet), you get:
- Better access controls (e.g. current user only)
- Lightweight pure .NET library (instead of 3MB+ native DLL or ASP.NET Core dependency)
- Much faster startup time
- 2x-3x faster large message throughput
- No firewall warnings
- No network adapter required
Caveats
This implementation currently uses a custom wire protocol so it won't be compatible with other gRPC named pipe implementations.
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net5.0-windows7.0 net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows |
.NET Core | netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard2.0 netstandard2.1 |
.NET Framework | net46 net461 net462 net463 net47 net471 net472 net48 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen40 tizen60 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETCoreApp 2.1
- Google.Protobuf (>= 3.14.0)
- Grpc.Core.Api (>= 2.33.1)
- System.Memory (>= 4.5.4)
-
.NETFramework 4.6
- Google.Protobuf (>= 3.14.0)
- Grpc.Core.Api (>= 2.33.1)
- System.Memory (>= 4.5.4)
-
.NETStandard 2.0
- Google.Protobuf (>= 3.14.0)
- Grpc.Core.Api (>= 2.33.1)
- System.Memory (>= 4.5.4)
-
.NETStandard 2.1
- Google.Protobuf (>= 3.14.0)
- Grpc.Core.Api (>= 2.33.1)
- System.Memory (>= 4.5.4)
-
net5.0-windows7.0
- Google.Protobuf (>= 3.14.0)
- Grpc.Core.Api (>= 2.33.1)
- System.IO.Pipes.AccessControl (>= 5.0.0)
- System.Memory (>= 4.5.4)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on GrpcDotNetNamedPipes:
Package | Downloads |
---|---|
XAMLTest
A library that allows unit tests to be written against WPF XAML. |
|
NINA.Equipment
This assembly contains the Equipment components of N.I.N.A. to interact and connect to various types of astronomy equipment. |
|
VertiGIS.Roo.Client
Package for implementing the communication to Integrator 2021 server (inter process communication) |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on GrpcDotNetNamedPipes:
Repository | Stars |
---|---|
rocksdanister/lively
Free and open-source software that allows users to set animated desktop wallpapers and screensavers.
|
|
LAB02-Research/HASS.Agent
Windows-based client for Home Assistant. Provides notifications, quick actions, commands, sensors and more.
|