{"id":20632608,"url":"https://github.com/cyanfish/grpc-dotnet-namedpipes","last_synced_at":"2025-05-15T04:07:39.934Z","repository":{"id":42972817,"uuid":"236086216","full_name":"cyanfish/grpc-dotnet-namedpipes","owner":"cyanfish","description":"Named pipe transport for gRPC in C#/.NET","archived":false,"fork":false,"pushed_at":"2025-02-14T01:07:38.000Z","size":186,"stargazers_count":195,"open_issues_count":12,"forks_count":48,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-14T05:56:18.447Z","etag":null,"topics":["csharp","dotnet","grpc","ipc","named-pipes"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cyanfish.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-24T21:25:14.000Z","updated_at":"2025-04-12T14:09:20.000Z","dependencies_parsed_at":"2023-01-21T11:10:29.111Z","dependency_job_id":"8bc1f088-a77f-4767-b619-5c5e80871a90","html_url":"https://github.com/cyanfish/grpc-dotnet-namedpipes","commit_stats":{"total_commits":61,"total_committers":7,"mean_commits":8.714285714285714,"dds":"0.21311475409836067","last_synced_commit":"1b14461247d9d0eda6fe857b097f6c654235a04f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyanfish%2Fgrpc-dotnet-namedpipes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyanfish%2Fgrpc-dotnet-namedpipes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyanfish%2Fgrpc-dotnet-namedpipes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyanfish%2Fgrpc-dotnet-namedpipes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyanfish","download_url":"https://codeload.github.com/cyanfish/grpc-dotnet-namedpipes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254270646,"owners_count":22042859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","grpc","ipc","named-pipes"],"created_at":"2024-11-16T14:16:49.428Z","updated_at":"2025-05-15T04:07:34.923Z","avatar_url":"https://github.com/cyanfish.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GrpcDotNetNamedPipes\n\n[![NuGet](https://img.shields.io/nuget/v/GrpcDotNetNamedPipes)](https://www.nuget.org/packages/GrpcDotNetNamedPipes/)\n\nNamed pipe transport for [gRPC](https://grpc.io/) in C#/.NET.\n\n**This is not an official Google product.**\n\n## Supported platforms\n\n- .NET Framework 4.6.2+ (Windows)\n- .NET 6+ (Windows, macOS, Linux)\n\n## Usage\n\nSuppose you have a Greeter service as described in\nthe [gRPC on .NET Core](https://docs.microsoft.com/en-us/aspnet/core/grpc/) intro.\n\nServer:\n\n```\nvar server = new NamedPipeServer(\"MY_PIPE_NAME\");\nGreeter.BindService(server.ServiceBinder, new GreeterService());\nserver.Start();\n```\n\nClient:\n\n```\nvar channel = new NamedPipeChannel(\".\", \"MY_PIPE_NAME\");\nvar client = new Greeter.GreeterClient(channel);\n\nvar response = await client.SayHelloAsync(\n\tnew HelloRequest { Name = \"World\" });\n\nConsole.WriteLine(response.Message);\n```\n\n## Why named pipes?\n\nNamed pipes are suitable for inter-process communication (IPC).\n\nSince the introduction of this project, ASP.NET Core has added support for gRPC\nover [Unix Domain Sockets](https://learn.microsoft.com/en-us/aspnet/core/grpc/interprocess-uds?view=aspnetcore-8.0) and\nover [Named Pipes](https://learn.microsoft.com/en-us/aspnet/core/grpc/interprocess-namedpipes?view=aspnetcore-8.0). Here\nis a handy matrix to help you decide what's right for you:\n\n|                            | GrpcDotNetNamedPipes           | ASP.NET UDS                | ASP.NET Named Pipes                | ASP.NET HTTP              |\n|----------------------------|--------------------------------|----------------------------|------------------------------------|---------------------------|\n| .NET Platform              | .NET Framework 4.6.2\u003cbr\u003e.NET 5 | .NET 5                     | .NET 8 (server)\u003cbr\u003e.NET 5 (client) | .NET 5                    |\n| OS                         | Windows 7\u003cbr\u003eMac\u003cbr\u003eLinux      | Windows 10\u003cbr\u003eMac\u003cbr\u003eLinux | Windows 7                          | Windows 7\u003cbr\u003eMac\u003cbr\u003eLinux |\n| No firewall warnings       | :heavy_check_mark:             | :heavy_check_mark:         | :heavy_check_mark:                 | :x:                       |\n| No network adapter         | :heavy_check_mark:             | :heavy_check_mark:         | :heavy_check_mark:                 | :x:                       |\n| Access controls            | :heavy_check_mark:             | :x:                        | :heavy_check_mark:                 | :x:                       |\n| Binary size (trimmed)      | **\\~ 300 KB**                  | ~ 7 MB                     | **\\~ 7 MB**                        | ~ 7 MB                    |\n| Startup time               | \u003c 25ms                         | \u003c 25ms                     | \u003c 25ms                             | ~ 250ms                   |\n| Large message throughput   | **\\~ 500MB/s**                 | ~ 400MB/s                  | **\\~ 100MB/s**                     | ~ 100MB/s                 |\n| Streaming messages         | ~ 400k/s                       | ~ 500k/s                   | ~ 500k/s                           | ~ 400k/s                  |\n| Method calls               | ~ 8000/s                       | ~ 4000/s                   | ~ 5000/s                           | ~ 2500/s                  |\n| Compatible with gRPC-Go    | :x:                            | :heavy_check_mark:         | :heavy_check_mark:                 | :heavy_check_mark:        |\n| Official Microsoft support | :x:                            | :heavy_check_mark:         | :heavy_check_mark:                 | :heavy_check_mark:        |\n\nPerformance numbers are based\non [tests](https://github.com/cyanfish/grpc-dotnet-namedpipes/blob/master/GrpcDotNetNamedPipes.PerfTests/GrpcPerformanceTests.cs)\nrunning on Windows 11 with .NET 8.\n\n## Caveats\n\nThis implementation currently uses a custom wire protocol so it won't be compatible with other gRPC named pipe\nimplementations.\n\nLinux and macOS support is provided for universal compatibility but may not be as optimized as Windows.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyanfish%2Fgrpc-dotnet-namedpipes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyanfish%2Fgrpc-dotnet-namedpipes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyanfish%2Fgrpc-dotnet-namedpipes/lists"}