在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → gRPC在.NET平台的应用全解

gRPC在.NET平台的应用全解

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:2.91M
  • 下载次数:4
  • 浏览次数:78
  • 发布时间:2024-02-07
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】
gRPC是一个现代化的开源高性能远程过程调用(RPC)框架,可以在任何地方运行。它让客户端和服务器应用程序能够透明地通信,并简化了连接系统的构建。

对于.NET Core 3.0或更高版本,gRPC提供的功能包括:
  • Grpc.AspNetCore - 一个用于托管gRPC服务的ASP.NET Core框架。gRPC在ASP.NET Core上的集成包括日志记录、依赖注入(DI)、身份验证和授权等标准ASP.NET Core功能。
  • Grpc.Net.Client - 一个基于熟悉的HttpClient构建的.NET Core gRPC客户端。该客户端使用.NET Core中的新HTTP/2功能。
  • Grpc.Net.ClientFactory - gRPC客户端与HttpClientFactory的集成。客户端工厂允许gRPC客户端被集中配置并通过DI注入到您的应用程序中。

从2021年5月开始,gRPC for .NET成为C#上推荐的gRPC实现方式。原有的C#实现(作为Grpc.Core nuget包分发)现已进入维护模式,并将在未来被弃用。

开始使用gRPC for .NET的最佳地点是.NET Core 3.0或更高版本附带的gRPC模板。使用该模板可以创建gRPC服务网站和客户端。

官方版本的gRPC发布到NuGet.org,这是大多数开发者获取gRPC包的推荐地点。对于使用.NET Core的夜间版本的用户,建议使用gRPC的夜间包,以避免版本间的不兼容问题。

要开发ASP.NET Core的gRPC,首先需要安装.NET Core SDK,然后设置开发环境以使用已安装的.NET Core SDK。此外,还需要通过命令行构建项目和运行测试。
【实例截图】
【核心代码】
文件清单
└── grpc-dotnet-6d1ea08ce3b4a22f8600a4e6bd2adbdaef652c82
    ├── AUTHORS
    ├── CODE-OF-CONDUCT.md
    ├── CONTRIBUTING.md
    ├── Directory.Build.props
    ├── Directory.Build.targets
    ├── Directory.Packages.props
    ├── GOVERNANCE.md
    ├── Grpc.DotNet.ruleset
    ├── Grpc.DotNet.sln
    ├── LICENSE
    ├── MAINTAINERS.md
    ├── README.md
    ├── TROUBLESHOOTING.md
    ├── activate.ps1
    ├── activate.sh
    ├── build
    │   ├── expand_dev_version.sh
    │   ├── get-dotnet.ps1
    │   ├── get-dotnet.sh
    │   ├── update_grpc_core_api_version.sh
    │   └── version.props
    ├── build_and_test.sh
    ├── doc
    │   ├── images
    │   │   └── packages.png
    │   ├── implementation_comparison.md
    │   ├── packages.md
    │   ├── planning.md
    │   ├── release_process.md
    │   └── versioning.md
    ├── docfx
    │   ├── README.md
    │   ├── docfx.json
    │   ├── generate_reference_docs.sh
    │   └── toc.yml
    ├── docker-compose.yml
    ├── examples
    │   ├── Aggregator
    │   │   ├── Aggregator.sln
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   ├── aggregate.proto
    │   │   │   ├── count.proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── IncrementingCounter.cs
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   ├── AggregatorService.cs
    │   │       │   ├── CounterService.cs
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Blazor
    │   │   ├── Blazor.sln
    │   │   ├── Client
    │   │   │   ├── App.razor
    │   │   │   ├── Client.csproj
    │   │   │   ├── Messages
    │   │   │   │   └── WeatherForecast.cs
    │   │   │   ├── Pages
    │   │   │   │   ├── Counter.razor
    │   │   │   │   ├── FetchData.razor
    │   │   │   │   └── Index.razor
    │   │   │   ├── Program.cs
    │   │   │   ├── Shared
    │   │   │   │   ├── MainLayout.razor
    │   │   │   │   ├── NavMenu.razor
    │   │   │   │   └── SurveyPrompt.razor
    │   │   │   ├── _Imports.razor
    │   │   │   └── wwwroot
    │   │   │       ├── appsettings.json
    │   │   │       ├── css
    │   │   │       │   ├── bootstrap
    │   │   │       │   │   ├── bootstrap.min.css
    │   │   │       │   │   └── bootstrap.min.css.map
    │   │   │       │   ├── open-iconic
    │   │   │       │   │   ├── FONT-LICENSE
    │   │   │       │   │   ├── ICON-LICENSE
    │   │   │       │   │   ├── README.md
    │   │   │       │   │   └── font
    │   │   │       │   │       ├── css
    │   │   │       │   │       │   └── open-iconic-bootstrap.min.css
    │   │   │       │   │       └── fonts
    │   │   │       │   │           ├── open-iconic.eot
    │   │   │       │   │           ├── open-iconic.otf
    │   │   │       │   │           ├── open-iconic.svg
    │   │   │       │   │           ├── open-iconic.ttf
    │   │   │       │   │           └── open-iconic.woff
    │   │   │       │   └── site.css
    │   │   │       ├── grpc-logo.png
    │   │   │       └── index.html
    │   │   ├── Proto
    │   │   │   ├── count.proto
    │   │   │   └── weather.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   ├── CounterService.cs
    │   │       │   └── WeatherService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Browser
    │   │   ├── Browser.sln
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       ├── appsettings.json
    │   │       └── wwwroot
    │   │           ├── Scripts
    │   │           │   ├── README.md
    │   │           │   ├── greet_grpc_web_pb.js
    │   │           │   ├── greet_pb.js
    │   │           │   └── index.js
    │   │           ├── favicon.ico
    │   │           ├── index.html
    │   │           ├── package-lock.json
    │   │           └── package.json
    │   ├── Certifier
    │   │   ├── Certifier.sln
    │   │   ├── Client
    │   │   │   ├── Certs
    │   │   │   │   └── client.pfx
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   └── certify.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── CertifierService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Channeler
    │   │   ├── Channeler.sln
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   └── data_channel.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── DataChannelerService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Coder
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Coder.sln
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties
    │   │   │   │   └── launchSettings.json
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   └── GreeterService.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   └── Shared
    │   │       ├── HelloReply.cs
    │   │       ├── HelloRequest.cs
    │   │       ├── IGreeterService.cs
    │   │       └── Shared.csproj
    │   ├── Compressor
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Compressor.sln
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── Startup.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Container
    │   │   ├── Backend
    │   │   │   ├── Backend.csproj
    │   │   │   ├── Dockerfile
    │   │   │   ├── Program.cs
    │   │   │   ├── Services
    │   │   │   │   └── WeatherService.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   ├── Container.sln
    │   │   ├── Frontend
    │   │   │   ├── App.razor
    │   │   │   ├── Balancer
    │   │   │   │   ├── BalancerConfiguration.cs
    │   │   │   │   ├── ConfigurableResolverFactory.cs
    │   │   │   │   ├── ReportingChannelControlHelper.cs
    │   │   │   │   ├── ReportingLoadBalancerFactory.cs
    │   │   │   │   ├── ReportingSetup.cs
    │   │   │   │   └── SubchannelReporter.cs
    │   │   │   ├── Dockerfile
    │   │   │   ├── Frontend.csproj
    │   │   │   ├── Messages
    │   │   │   │   └── WeatherForecast.cs
    │   │   │   ├── Pages
    │   │   │   │   ├── Error.cshtml
    │   │   │   │   ├── Error.cshtml.cs
    │   │   │   │   ├── FetchData.razor
    │   │   │   │   ├── Index.razor
    │   │   │   │   └── _Host.cshtml
    │   │   │   ├── Program.cs
    │   │   │   ├── Shared
    │   │   │   │   ├── BalancerDialog.razor
    │   │   │   │   ├── MainLayout.razor
    │   │   │   │   ├── MainLayout.razor.css
    │   │   │   │   ├── NavMenu.razor
    │   │   │   │   ├── NavMenu.razor.css
    │   │   │   │   └── SurveyPrompt.razor
    │   │   │   ├── _Imports.razor
    │   │   │   ├── appsettings.Development.json
    │   │   │   ├── appsettings.json
    │   │   │   └── wwwroot
    │   │   │       ├── css
    │   │   │       │   ├── bootstrap
    │   │   │       │   │   ├── bootstrap.min.css
    │   │   │       │   │   └── bootstrap.min.css.map
    │   │   │       │   ├── open-iconic
    │   │   │       │   │   ├── FONT-LICENSE
    │   │   │       │   │   ├── ICON-LICENSE
    │   │   │       │   │   ├── README.md
    │   │   │       │   │   └── font
    │   │   │       │   │       ├── css
    │   │   │       │   │       │   └── open-iconic-bootstrap.min.css
    │   │   │       │   │       └── fonts
    │   │   │       │   │           ├── open-iconic.eot
    │   │   │       │   │           ├── open-iconic.otf
    │   │   │       │   │           ├── open-iconic.svg
    │   │   │       │   │           ├── open-iconic.ttf
    │   │   │       │   │           └── open-iconic.woff
    │   │   │       │   └── site.css
    │   │   │       ├── favicon.ico
    │   │   │       └── grpc-logo.png
    │   │   ├── Kubernetes
    │   │   │   ├── deploy-backend.yml
    │   │   │   └── deploy-frontend.yml
    │   │   ├── Proto
    │   │   │   └── weather.proto
    │   │   ├── deploy.ps1
    │   │   └── docker-compose.yml
    │   ├── Counter
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Counter.sln
    │   │   ├── Proto
    │   │   │   └── count.proto
    │   │   └── Server
    │   │       ├── IncrementingCounter.cs
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── CounterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Downloader
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Downloader.sln
    │   │   ├── Proto
    │   │   │   └── download.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── DownloaderService.cs
    │   │       ├── appsettings.Development.json
    │   │       ├── appsettings.json
    │   │       ├── pancakes.jpg
    │   │       └── pancakes4.png
    │   ├── Error
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Error.sln
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── GrpcValidation.cs
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Frameworker
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Frameworker.sln
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── Startup.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Greeter
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Greeter.sln
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Interceptor
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   ├── ClientLoggerInterceptor.cs
    │   │   │   └── Program.cs
    │   │   ├── Interceptor.sln
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── ServerLoggerInterceptor.cs
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Liber
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Common
    │   │   │   ├── Common.csproj
    │   │   │   └── Name.cs
    │   │   ├── Liber.sln
    │   │   ├── Proto
    │   │   │   ├── common.proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Locator
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Locator.sln
    │   │   ├── Proto
    │   │   │   ├── external.proto
    │   │   │   └── internal.proto
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   ├── ExternalService.cs
    │   │       │   └── InternalService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Mailer
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Mailer.sln
    │   │   ├── Proto
    │   │   │   └── mail.proto
    │   │   └── Server
    │   │       ├── MailQueue.cs
    │   │       ├── MailQueueRepository.cs
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── MailerService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Progressor
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   ├── HistoryResponse.cs
    │   │   │   ├── Program.cs
    │   │   │   └── ResponseProgress
    │   │   │       ├── IProgressMessage.cs
    │   │   │       └── ResponseProgress.cs
    │   │   ├── Progressor.sln
    │   │   ├── Proto
    │   │   │   └── progress.proto
    │   │   └── Server
    │   │       ├── Monarchs-of-England.txt
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── ProgressorService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── README.md
    │   ├── Racer
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   └── race.proto
    │   │   ├── Racer.sln
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── RacerService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Reflector
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   ├── Reflector.sln
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── GreeterService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Retrier
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   └── retry.proto
    │   │   ├── Retrier.sln
    │   │   └── Server
    │   │       ├── Program.cs
    │   │       ├── Properties
    │   │       │   └── launchSettings.json
    │   │       ├── Server.csproj
    │   │       ├── Services
    │   │       │   └── RetrierService.cs
    │   │       ├── appsettings.Development.json
    │   │       └── appsettings.json
    │   ├── Spar
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   ├── Server
    │   │   │   ├── ClientApp
    │   │   │   │   ├── README.md
    │   │   │   │   ├── package-lock.json
    │   │   │   │   ├── package.json
    │   │   │   │   ├── src
    │   │   │   │   │   ├── App.vue
    │   │   │   │   │   ├── custom.d.ts
    │   │   │   │   │   ├── generated
    │   │   │   │   │   │   ├── greet_grpc_web_pb.js
    │   │   │   │   │   │   └── greet_pb.js
    │   │   │   │   │   ├── index.html
    │   │   │   │   │   └── index.ts
    │   │   │   │   └── tsconfig.json
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties
    │   │   │   │   └── launchSettings.json
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   └── GreeterService.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   ├── appsettings.json
    │   │   │   └── wwwroot
    │   │   │       └── favicon.ico
    │   │   └── Spar.sln
    │   ├── Tester
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   ├── GreetRepository.cs
    │   │   │   ├── IGreetRepository.cs
    │   │   │   ├── Program.cs
    │   │   │   ├── Worker.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   ├── Common
    │   │   │   └── Common.csproj
    │   │   ├── Proto
    │   │   │   └── test.proto
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties
    │   │   │   │   └── launchSettings.json
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   ├── Greeter.cs
    │   │   │   │   ├── IGreeter.cs
    │   │   │   │   └── TesterService.cs
    │   │   │   ├── Startup.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   ├── Tester.sln
    │   │   └── Tests
    │   │       ├── Client
    │   │       │   ├── Helpers
    │   │       │   │   └── CallHelpers.cs
    │   │       │   └── WorkerTests.cs
    │   │       ├── Server
    │   │       │   ├── IntegrationTests
    │   │       │   │   ├── GreeterServiceTests.cs
    │   │       │   │   ├── Helpers
    │   │       │   │   │   ├── ForwardingLoggerProvider.cs
    │   │       │   │   │   ├── GrpcTestContext.cs
    │   │       │   │   │   └── GrpcTestFixture.cs
    │   │       │   │   ├── IntegrationTestBase.cs
    │   │       │   │   └── MockedGreeterServiceTests.cs
    │   │       │   └── UnitTests
    │   │       │       ├── GreeterServiceTests.cs
    │   │       │       └── Helpers
    │   │       │           ├── TestAsyncStreamReader.cs
    │   │       │           ├── TestServerCallContext.cs
    │   │       │           └── TestServerStreamWriter.cs
    │   │       └── Tests.csproj
    │   ├── Ticketer
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Proto
    │   │   │   └── ticket.proto
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties
    │   │   │   │   └── launchSettings.json
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   └── TicketerService.cs
    │   │   │   ├── TicketRepository.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   └── Ticketer.sln
    │   ├── Transcoder
    │   │   ├── Proto
    │   │   │   ├── google
    │   │   │   │   └── api
    │   │   │   │       ├── annotations.proto
    │   │   │   │       └── http.proto
    │   │   │   └── greet.proto
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   └── GreeterService.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   ├── appsettings.json
    │   │   │   └── wwwroot
    │   │   │       ├── favicon.ico
    │   │   │       ├── images
    │   │   │       │   └── grpc-rest-logo.png
    │   │   │       ├── index.html
    │   │   │       └── lib
    │   │   │           └── bootstrap
    │   │   │               └── dist
    │   │   │                   ├── bootstrap.bundle.min.js
    │   │   │                   └── bootstrap.min.css
    │   │   └── Transcoder.sln
    │   ├── Transporter
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   ├── Program.cs
    │   │   │   └── UnixDomainSocketConnectionFactory.cs
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   └── GreeterService.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   └── Transporter.sln
    │   ├── Uploader
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   ├── Program.cs
    │   │   │   └── pancakes.jpg
    │   │   ├── Proto
    │   │   │   └── upload.proto
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties
    │   │   │   │   └── launchSettings.json
    │   │   │   ├── Server.csproj
    │   │   │   ├── Services
    │   │   │   │   └── UploaderService.cs
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   └── Uploader.sln
    │   ├── Vigor
    │   │   ├── Client
    │   │   │   ├── Client.csproj
    │   │   │   └── Program.cs
    │   │   ├── Server
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties
    │   │   │   │   └── launchSettings.json
    │   │   │   ├── Server.csproj
    │   │   │   ├── appsettings.Development.json
    │   │   │   └── appsettings.json
    │   │   └── Vigor.sln
    │   └── Worker
    │       ├── Client
    │       │   ├── Client.csproj
    │       │   ├── Program.cs
    │       │   ├── Worker.cs
    │       │   ├── appsettings.Development.json
    │       │   └── appsettings.json
    │       ├── Proto
    │       │   └── count.proto
    │       ├── Server
    │       │   ├── IncrementingCounter.cs
    │       │   ├── Program.cs
    │       │   ├── Properties
    │       │   │   └── launchSettings.json
    │       │   ├── Server.csproj
    │       │   ├── Services
    │       │   │   └── CounterService.cs
    │       │   ├── appsettings.Development.json
    │       │   └── appsettings.json
    │       └── Worker.sln
    ├── global.json
    ├── grpcweb_interoptests.sh
    ├── keys
    │   ├── Grpc.public.snk
    │   ├── Grpc.snk
    │   └── README.md
    ├── kokoro
    │   ├── README.md
    │   ├── build_nuget.cfg
    │   ├── build_nuget.sh
    │   ├── interop.cfg
    │   ├── interop.sh
    │   ├── linux.cfg
    │   ├── publish_nuget.cfg
    │   └── publish_nuget.sh
    ├── microsoft-support.md
    ├── nuget.config
    ├── packageIcon.png
    ├── perf
    │   ├── Grpc.AspNetCore.Microbenchmarks
    │   │   ├── Client
    │   │   │   ├── CompressedUnaryClientBenchmark.cs
    │   │   │   ├── UnaryClientBenchmark.cs
    │   │   │   └── UnaryClientBenchmarkBase.cs
    │   │   ├── DefaultCoreConfig.cs
    │   │   ├── DefaultCoreConfigAttribute.cs
    │   │   ├── Grpc.AspNetCore.Microbenchmarks.csproj
    │   │   ├── Internal
    │   │   │   ├── ForceAsyncAwaiter.cs
    │   │   │   ├── MessageHelpers.cs
    │   │   │   ├── TestCompressionProvider.cs
    │   │   │   ├── TestGrpcInterceptorActivator.cs
    │   │   │   ├── TestGrpcServiceActivator.cs
    │   │   │   ├── TestHttpResposneTrailersFeature.cs
    │   │   │   ├── TestPipeReader.cs
    │   │   │   ├── TestPipeWriter.cs
    │   │   │   ├── TestService.cs
    │   │   │   └── UnaryAwaitInterceptor.cs
    │   │   ├── Program.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── Proto
    │   │   │   ├── chat.proto
    │   │   │   └── greet.proto
    │   │   └── Server
    │   │       ├── CompressedUnaryServerCallHandlerBenchmark.cs
    │   │       ├── DeadlineUnaryServerCallHandlerBenchmark.cs
    │   │       ├── FailureStatusUnaryServerCallHandlerBenchmark.cs
    │   │       ├── InterceptedUnaryServerCallHandlerBenchmark.cs
    │   │       ├── PipelinesUnaryServerCallHandlerBenchmark.cs
    │   │       ├── UnaryServerCallHandlerBenchmark.cs
    │   │       └── UnaryServerCallHandlerBenchmarkBase.cs
    │   └── benchmarkapps
    │       ├── GrpcAspNetCoreServer
    │       │   ├── Controllers
    │       │   │   └── BenchmarkController.cs
    │       │   ├── GrpcAspNetCoreServer.csproj
    │       │   ├── Program.cs
    │       │   ├── RunGrpcServer.ps1
    │       │   ├── Startup.cs
    │       │   ├── grpc-aspnetcore-server.yml
    │       │   └── hosting.json
    │       ├── GrpcClient
    │       │   ├── Certs
    │       │   │   ├── README.md
    │       │   │   ├── ca.crt
    │       │   │   ├── ca.key
    │       │   │   ├── client.crt
    │       │   │   ├── client.key
    │       │   │   ├── server.crt
    │       │   │   └── server.key
    │       │   ├── ClientOptions.cs
    │       │   ├── GrpcClient.csproj
    │       │   ├── GrpcClientType.cs
    │       │   ├── NamedPipeConnectionFactory.cs
    │       │   ├── Program.cs
    │       │   ├── RunGrpcClient.ps1
    │       │   ├── UnixDomainSocketConnectionFactory.cs
    │       │   └── grpc-client.yml
    │       ├── GrpcCoreServer
    │       │   ├── GrpcCoreServer.csproj
    │       │   ├── Program.cs
    │       │   ├── grpc-core-server.yml
    │       │   └── hosting.json
    │       ├── QpsWorker
    │       │   ├── Infrastructure
    │       │   │   ├── AtomicCounter.cs
    │       │   │   ├── ClientRunner.cs
    │       │   │   ├── ConfigHelpers.cs
    │       │   │   ├── GenericService.cs
    │       │   │   ├── GenericServiceMethodProvider.cs
    │       │   │   ├── Histogram.cs
    │       │   │   ├── InterarrivalTimers.cs
    │       │   │   ├── ServerRunner.cs
    │       │   │   └── TimeStats.cs
    │       │   ├── Program.cs
    │       │   ├── Protos
    │       │   │   ├── README.md
    │       │   │   ├── core
    │       │   │   │   └── stats.proto
    │       │   │   └── testing
    │       │   │       ├── benchmark_service.proto
    │       │   │       ├── control.proto
    │       │   │       ├── messages.proto
    │       │   │       ├── payloads.proto
    │       │   │       ├── stats.proto
    │       │   │       └── worker_service.proto
    │       │   ├── QpsWorker.csproj
    │       │   ├── Services
    │       │   │   └── WorkerServiceImpl.cs
    │       │   ├── appsettings.Development.json
    │       │   ├── appsettings.json
    │       │   ├── worker-start-client.ps1
    │       │   └── worker-start-server.ps1
    │       ├── README.md
    │       └── Shared
    │           ├── BenchmarkConfigurationHelpers.cs
    │           ├── BenchmarkServiceImpl.cs
    │           ├── Certs
    │           │   ├── README.md
    │           │   ├── ca.pem
    │           │   ├── client.pfx
    │           │   ├── server1.key
    │           │   ├── server1.pem
    │           │   └── server1.pfx
    │           ├── ServiceProvidersMiddleware.cs
    │           ├── benchmark_service.proto
    │           └── messages.proto
    ├── src
    │   ├── Grpc.AspNetCore
    │   │   ├── Grpc.AspNetCore.csproj
    │   │   ├── README.md
    │   │   └── lib
    │   │       ├── net6.0
    │   │       │   └── _._
    │   │       ├── net7.0
    │   │       │   └── _._
    │   │       └── net8.0
    │   │           └── _._
    │   ├── Grpc.AspNetCore.HealthChecks
    │   │   ├── Grpc.AspNetCore.HealthChecks.csproj
    │   │   ├── GrpcHealthChecksEndpointRouteBuilderExtensions.cs
    │   │   ├── GrpcHealthChecksOptions.cs
    │   │   ├── GrpcHealthChecksPublisher.cs
    │   │   ├── GrpcHealthChecksServiceExtensions.cs
    │   │   ├── HealthCheckMapContext.cs
    │   │   ├── HealthResult.cs
    │   │   ├── Internal
    │   │   │   ├── HealthChecksStatusHelpers.cs
    │   │   │   └── HealthServiceIntegration.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── README.md
    │   │   ├── ServiceMapping.cs
    │   │   └── ServiceMappingCollection.cs
    │   ├── Grpc.AspNetCore.Server
    │   │   ├── Grpc.AspNetCore.Server.csproj
    │   │   ├── GrpcActivatorHandle.cs
    │   │   ├── GrpcEndpointRouteBuilderExtensions.cs
    │   │   ├── GrpcMethodMetadata.cs
    │   │   ├── GrpcServiceEndpointConventionBuilder.cs
    │   │   ├── GrpcServiceExtensions.cs
    │   │   ├── GrpcServiceOptions.cs
    │   │   ├── IGrpcInterceptorActivator.T.cs
    │   │   ├── IGrpcInterceptorActivator.cs
    │   │   ├── IGrpcServerBuilder.cs
    │   │   ├── IGrpcServiceActivator.cs
    │   │   ├── IServerCallContextFeature.cs
    │   │   ├── InterceptorCollection.cs
    │   │   ├── InterceptorRegistration.cs
    │   │   ├── Internal
    │   │   │   ├── CallHandlers
    │   │   │   │   ├── ClientStreamingServerCallHandler.cs
    │   │   │   │   ├── DuplexStreamingServerCallHandler.cs
    │   │   │   │   ├── ServerCallHandlerBase.cs
    │   │   │   │   ├── ServerStreamingServerCallHandler.cs
    │   │   │   │   └── UnaryServerCallHandler.cs
    │   │   │   ├── DefaultGrpcInterceptorActivator.cs
    │   │   │   ├── DefaultGrpcServiceActivator.cs
    │   │   │   ├── ErrorMessageHelper.cs
    │   │   │   ├── GrpcEventSource.cs
    │   │   │   ├── GrpcMarkerService.cs
    │   │   │   ├── GrpcProtocolConstants.cs
    │   │   │   ├── GrpcProtocolHelpers.cs
    │   │   │   ├── GrpcServerBuilder.cs
    │   │   │   ├── GrpcServerConstants.cs
    │   │   │   ├── GrpcServerLog.cs
    │   │   │   ├── GrpcServiceOptionsSetup.cs
    │   │   │   ├── HttpContextSerializationContext.cs
    │   │   │   ├── HttpContextServerCallContext.cs
    │   │   │   ├── HttpContextStreamReader.cs
    │   │   │   ├── HttpContextStreamWriter.cs
    │   │   │   ├── HttpResponseExtensions.cs
    │   │   │   ├── ISystemClock.cs
    │   │   │   ├── PercentEncodingHelpers.cs
    │   │   │   ├── PipeExtensions.cs
    │   │   │   ├── ReadOnlySequenceStream.cs
    │   │   │   ├── ServerCallDeadlineManager.cs
    │   │   │   ├── ServerCallHandlerFactory.cs
    │   │   │   ├── StatusCodeExtensions.cs
    │   │   │   ├── SystemClock.cs
    │   │   │   ├── ValueTaskExtensions.cs
    │   │   │   └── X509CertificateHelpers.cs
    │   │   ├── Model
    │   │   │   ├── IServiceMethodProvider.cs
    │   │   │   ├── Internal
    │   │   │   │   ├── BinderServiceModelProvider.cs
    │   │   │   │   ├── GrpcUnimplementedConstraint.cs
    │   │   │   │   ├── MethodModel.cs
    │   │   │   │   ├── ProviderServiceBinder.cs
    │   │   │   │   ├── ServiceMethodsRegistry.cs
    │   │   │   │   └── ServiceRouteBuilder.cs
    │   │   │   ├── ServerMethods.cs
    │   │   │   └── ServiceMethodProviderContext.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── README.md
    │   │   └── ServerCallContextExtensions.cs
    │   ├── Grpc.AspNetCore.Server.ClientFactory
    │   │   ├── ContextPropagationInterceptor.cs
    │   │   ├── Grpc.AspNetCore.Server.ClientFactory.csproj
    │   │   ├── GrpcContextPropagationOptions.cs
    │   │   ├── GrpcServerHttpClientBuilderExtensions.cs
    │   │   └── Properties
    │   │       └── AssemblyInfo.cs
    │   ├── Grpc.AspNetCore.Server.Reflection
    │   │   ├── Grpc.AspNetCore.Server.Reflection.csproj
    │   │   ├── GrpcReflectionEndpointRouteBuilderExtensions.cs
    │   │   ├── GrpcReflectionMarkerService.cs
    │   │   ├── GrpcReflectionServiceExtensions.cs
    │   │   └── Properties
    │   │       └── AssemblyInfo.cs
    │   ├── Grpc.AspNetCore.Web
    │   │   ├── DisableGrpcWebAttribute.cs
    │   │   ├── EnableGrpcWebAttribute.cs
    │   │   ├── Grpc.AspNetCore.Web.csproj
    │   │   ├── GrpcWebApplicationBuilderExtensions.cs
    │   │   ├── GrpcWebEndpointConventionBuilderExtensions.cs
    │   │   ├── GrpcWebOptions.cs
    │   │   ├── IGrpcWebEnabledMetadata.cs
    │   │   ├── Internal
    │   │   │   ├── Base64PipeReader.cs
    │   │   │   ├── Base64PipeWriter.cs
    │   │   │   ├── GrpcWebFeature.cs
    │   │   │   ├── GrpcWebMiddleware.cs
    │   │   │   ├── GrpcWebProtocolConstants.cs
    │   │   │   ├── GrpcWebProtocolHelpers.cs
    │   │   │   ├── HttpCharacters.cs
    │   │   │   ├── MemorySegment.cs
    │   │   │   └── ServerGrpcWebMode.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   └── README.md
    │   ├── Grpc.Auth
    │   │   ├── GoogleAuthInterceptors.cs
    │   │   ├── GoogleGrpcCredentials.cs
    │   │   ├── Grpc.Auth.csproj
    │   │   └── README.md
    │   ├── Grpc.Core.Api
    │   │   ├── AsyncAuthInterceptor.cs
    │   │   ├── AsyncCallState.cs
    │   │   ├── AsyncClientStreamingCall.cs
    │   │   ├── AsyncDuplexStreamingCall.cs
    │   │   ├── AsyncServerStreamingCall.cs
    │   │   ├── AsyncStreamReaderExtensions.cs
    │   │   ├── AsyncUnaryCall.cs
    │   │   ├── AuthContext.cs
    │   │   ├── AuthProperty.cs
    │   │   ├── BindServiceMethodAttribute.cs
    │   │   ├── CallCredentials.cs
    │   │   ├── CallCredentialsConfiguratorBase.cs
    │   │   ├── CallFlags.cs
    │   │   ├── CallInvoker.cs
    │   │   ├── CallOptions.cs
    │   │   ├── ChannelBase.cs
    │   │   ├── ChannelCredentials.cs
    │   │   ├── ChannelCredentialsConfiguratorBase.cs
    │   │   ├── ClientBase.cs
    │   │   ├── ContextPropagationOptions.cs
    │   │   ├── ContextPropagationToken.cs
    │   │   ├── DeserializationContext.cs
    │   │   ├── Grpc.Core.Api.csproj
    │   │   ├── IAsyncStreamReader.cs
    │   │   ├── IAsyncStreamWriter.cs
    │   │   ├── IClientStreamWriter.cs
    │   │   ├── IServerStreamWriter.cs
    │   │   ├── Interceptors
    │   │   │   ├── CallInvokerExtensions.cs
    │   │   │   ├── ChannelExtensions.cs
    │   │   │   ├── ClientInterceptorContext.cs
    │   │   │   ├── InterceptingCallInvoker.cs
    │   │   │   └── Interceptor.cs
    │   │   ├── Internal
    │   │   │   ├── CallDebuggerHelpers.cs
    │   │   │   ├── ClientDebuggerHelpers.cs
    │   │   │   └── UnimplementedCallInvoker.cs
    │   │   ├── KeyCertificatePair.cs
    │   │   ├── Marshaller.cs
    │   │   ├── Metadata.cs
    │   │   ├── Method.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   ├── README.md
    │   │   ├── RpcException.cs
    │   │   ├── SerializationContext.cs
    │   │   ├── ServerCallContext.cs
    │   │   ├── ServerMethods.cs
    │   │   ├── ServerServiceDefinition.cs
    │   │   ├── ServiceBinderBase.cs
    │   │   ├── SslCredentials.cs
    │   │   ├── Status.cs
    │   │   ├── StatusCode.cs
    │   │   ├── Utils
    │   │   │   ├── EncodingExtensions.cs
    │   │   │   └── GrpcPreconditions.cs
    │   │   ├── VerifyPeerContext.cs
    │   │   ├── VersionInfo.cs
    │   │   └── WriteOptions.cs
    │   ├── Grpc.HealthCheck
    │   │   ├── Grpc.HealthCheck.csproj
    │   │   ├── Health.cs
    │   │   ├── HealthGrpc.cs
    │   │   ├── HealthServiceImpl.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   └── README.md
    │   ├── Grpc.Net.Client
    │   │   ├── Balancer
    │   │   │   ├── BalancerAddress.cs
    │   │   │   ├── BalancerAttributes.cs
    │   │   │   ├── BalancerAttributesKey.cs
    │   │   │   ├── BalancerState.cs
    │   │   │   ├── ChannelState.cs
    │   │   │   ├── CompletionContext.cs
    │   │   │   ├── DnsResolver.cs
    │   │   │   ├── IBackoffPolicy.cs
    │   │   │   ├── IChannelControlHelper.cs
    │   │   │   ├── ISubchannelCallTracker.cs
    │   │   │   ├── Internal
    │   │   │   │   ├── BalancerAddressEqualityComparer.cs
    │   │   │   │   ├── BalancerHttpHandler.cs
    │   │   │   │   ├── ChannelIdProvider.cs
    │   │   │   │   ├── ChildHandlerLoadBalancer.cs
    │   │   │   │   ├── ConnectionManager.cs
    │   │   │   │   ├── EmptyPicker.cs
    │   │   │   │   ├── ErrorPicker.cs
    │   │   │   │   ├── ExponentialBackoffPolicy.cs
    │   │   │   │   ├── ISubchannelTransport.cs
    │   │   │   │   ├── PassiveSubchannelTransport.cs
    │   │   │   │   ├── SocketConnectivitySubchannelTransport.cs
    │   │   │   │   └── StreamWrapper.cs
    │   │   │   ├── LoadBalancer.cs
    │   │   │   ├── LoadBalancerOptions.cs
    │   │   │   ├── PickContext.cs
    │   │   │   ├── PickFirstBalancer.cs
    │   │   │   ├── PickResult.cs
    │   │   │   ├── PollingResolver.cs
    │   │   │   ├── Resolver.cs
    │   │   │   ├── ResolverFactory.cs
    │   │   │   ├── ResolverOptions.cs
    │   │   │   ├── RoundRobinBalancer.cs
    │   │   │   ├── StaticResolver.cs
    │   │   │   ├── Subchannel.cs
    │   │   │   ├── SubchannelOptions.cs
    │   │   │   ├── SubchannelPicker.cs
    │   │   │   ├── SubchannelState.cs
    │   │   │   └── SubchannelsLoadBalancer.cs
    │   │   ├── Configuration
    │   │   │   ├── ConfigObject.cs
    │   │   │   ├── HedgingPolicy.cs
    │   │   │   ├── LoadBalancingConfig.cs
    │   │   │   ├── MethodConfig.cs
    │   │   │   ├── MethodName.cs
    │   │   │   ├── PickFirstConfig.cs
    │   │   │   ├── RetryPolicy.cs
    │   │   │   ├── RetryThrottlingPolicy.cs
    │   │   │   ├── RoundRobinConfig.cs
    │   │   │   └── ServiceConfig.cs
    │   │   ├── Grpc.Net.Client.csproj
    │   │   ├── GrpcChannel.cs
    │   │   ├── GrpcChannelOptions.cs
    │   │   ├── Internal
    │   │   │   ├── ArrayBufferWriter.cs
    │   │   │   ├── CachedDebugger.cs
    │   │   │   ├── ClientStreamWriterBase.cs
    │   │   │   ├── Configuration
    │   │   │   │   ├── ConfigProperty.cs
    │   │   │   │   ├── ConvertHelpers.cs
    │   │   │   │   ├── IConfigValue.cs
    │   │   │   │   └── Values.cs
    │   │   │   ├── DefaultCallCredentialsConfigurator.cs
    │   │   │   ├── DefaultChannelCredentialsConfigurator.cs
    │   │   │   ├── GrpcCall.NonGeneric.cs
    │   │   │   ├── GrpcCall.cs
    │   │   │   ├── GrpcCallLog.cs
    │   │   │   ├── GrpcCallScope.cs
    │   │   │   ├── GrpcCallSerializationContext.cs
    │   │   │   ├── GrpcDiagnostics.cs
    │   │   │   ├── GrpcEventSource.cs
    │   │   │   ├── GrpcMethodInfo.cs
    │   │   │   ├── GrpcProtocolConstants.cs
    │   │   │   ├── GrpcProtocolHelpers.cs
    │   │   │   ├── Http
    │   │   │   │   ├── PushStreamContent.cs
    │   │   │   │   ├── PushUnaryContent.cs
    │   │   │   │   └── WinHttpUnaryContent.cs
    │   │   │   ├── HttpClientCallInvoker.cs
    │   │   │   ├── HttpContentClientStreamReader.cs
    │   │   │   ├── HttpContentClientStreamWriter.cs
    │   │   │   ├── IDebugger.cs
    │   │   │   ├── IGrpcCall.cs
    │   │   │   ├── ISystemClock.cs
    │   │   │   ├── IsExternalInit.cs
    │   │   │   ├── NtDll.cs
    │   │   │   ├── OperatingSystem.cs
    │   │   │   ├── RandomGenerator.cs
    │   │   │   ├── Retry
    │   │   │   │   ├── ChannelRetryThrottling.cs
    │   │   │   │   ├── CommitReason.cs
    │   │   │   │   ├── HedgingCall.cs
    │   │   │   │   ├── RetryCall.cs
    │   │   │   │   ├── RetryCallBase.cs
    │   │   │   │   ├── RetryCallBaseClientStreamReader.cs
    │   │   │   │   ├── RetryCallBaseClientStreamWriter.cs
    │   │   │   │   ├── RetryCallBaseLog.cs
    │   │   │   │   └── StatusGrpcCall.cs
    │   │   │   ├── RuntimeHelpers.cs
    │   │   │   ├── StreamExtensions.cs
    │   │   │   ├── SystemClock.cs
    │   │   │   ├── TaskExtensions.cs
    │   │   │   └── UserAgentGenerator.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   └── README.md
    │   ├── Grpc.Net.Client.Web
    │   │   ├── Grpc.Net.Client.Web.csproj
    │   │   ├── GrpcWebHandler.cs
    │   │   ├── GrpcWebMode.cs
    │   │   ├── Internal
    │   │   │   ├── Base64RequestStream.cs
    │   │   │   ├── Base64ResponseStream.cs
    │   │   │   ├── GrpcWebProtocolConstants.cs
    │   │   │   ├── GrpcWebRequestContent.cs
    │   │   │   ├── GrpcWebResponseContent.cs
    │   │   │   ├── GrpcWebResponseStream.cs
    │   │   │   ├── OperatingSystem.cs
    │   │   │   └── StreamHelpers.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   └── README.md
    │   ├── Grpc.Net.ClientFactory
    │   │   ├── CallOptionsContext.cs
    │   │   ├── Grpc.Net.ClientFactory.csproj
    │   │   ├── GrpcClientFactory.cs
    │   │   ├── GrpcClientFactoryOptions.cs
    │   │   ├── GrpcClientServiceExtensions.cs
    │   │   ├── GrpcHttpClientBuilderExtensions.cs
    │   │   ├── InterceptorRegistration.cs
    │   │   ├── InterceptorScope.cs
    │   │   ├── Internal
    │   │   │   ├── CallOptionsConfigurationInvoker.cs
    │   │   │   ├── DefaultClientActivator.cs
    │   │   │   ├── DefaultGrpcClientFactory.cs
    │   │   │   ├── GrpcCallInvokerFactory.cs
    │   │   │   ├── GrpcClientMappingRegistry.cs
    │   │   │   └── TypeNameHelper.cs
    │   │   ├── Properties
    │   │   │   └── AssemblyInfo.cs
    │   │   └── README.md
    │   ├── Grpc.Net.Common
    │   │   ├── AsyncStreamReaderExtensions.cs
    │   │   ├── Compression
    │   │   │   ├── DeflateCompressionProvider.cs
    │   │   │   ├── GzipCompressionProvider.cs
    │   │   │   └── ICompressionProvider.cs
    │   │   ├── ConnectivityState.cs
    │   │   └── Grpc.Net.Common.csproj
    │   ├── Grpc.Reflection
    │   │   ├── Grpc.Reflection.csproj
    │   │   ├── README.md
    │   │   ├── Reflection.cs
    │   │   ├── ReflectionGrpc.cs
    │   │   ├── ReflectionServiceImpl.cs
    │   │   └── SymbolRegistry.cs
    │   ├── Grpc.StatusProto
    │   │   ├── ExceptionExtensions.cs
    │   │   ├── Grpc.StatusProto.csproj
    │   │   ├── MetadataExtensions.cs
    │   │   ├── README.md
    │   │   ├── RpcExceptionExtensions.cs
    │   │   └── RpcStatusExtensions.cs
    │   ├── Shared
    │   │   ├── CallerArgumentExpressionAttribute.cs
    │   │   ├── CodeAnalysisAttributes.cs
    │   │   ├── CommonGrpcProtocolHelpers.cs
    │   │   ├── CompatibilityHelpers.cs
    │   │   ├── DefaultDeserializationContext.cs
    │   │   ├── Http2ErrorCode.cs
    │   │   ├── Http3ErrorCode.cs
    │   │   ├── HttpHandlerFactory.cs
    │   │   ├── HttpRequestHelpers.cs
    │   │   ├── IsExternalInit.cs
    │   │   ├── NonCapturingTimer.cs
    │   │   ├── NonDisposableMemoryStream.cs
    │   │   ├── NullableAttributes.cs
    │   │   ├── Server
    │   │   │   ├── BindMethodFinder.cs
    │   │   │   ├── ClientStreamingServerMethodInvoker.cs
    │   │   │   ├── DuplexStreamingServerMethodInvoker.cs
    │   │   │   ├── InterceptorPipelineBuilder.cs
    │   │   │   ├── MethodOptions.cs
    │   │   │   ├── ServerMethodInvokerBase.cs
    │   │   │   ├── ServerStreamingServerMethodInvoker.cs
    │   │   │   └── UnaryServerMethodInvoker.cs
    │   │   ├── ThrowHelpers
    │   │   │   ├── ArgumentNullThrowHelper.cs
    │   │   │   ├── ArgumentOutOfRangeThrowHelper.cs
    │   │   │   └── ObjectDisposedThrowHelper.cs
    │   │   └── TrailingHeadersHelpers.cs
    │   └── dotnet-grpc
    │       ├── Commands
    │       │   ├── AddFileCommand.cs
    │       │   ├── AddUrlCommand.cs
    │       │   ├── CommandBase.cs
    │       │   ├── ListCommand.cs
    │       │   ├── RefreshCommand.cs
    │       │   └── RemoveCommand.cs
    │       ├── Internal
    │       │   ├── CLIToolException.cs
    │       │   ├── ConsoleExtensions.cs
    │       │   └── GrpcDependencyAttribute.cs
    │       ├── Options
    │       │   ├── Access.cs
    │       │   ├── CommonOptions.cs
    │       │   └── Services.cs
    │       ├── Program.cs
    │       ├── Properties
    │       │   ├── AssemblyInfo.cs
    │       │   ├── CoreStrings.Designer.cs
    │       │   └── CoreStrings.resx
    │       └── dotnet-grpc.csproj
    ├── startvs.cmd
    ├── test
    │   ├── Directory.Build.props
    │   ├── FunctionalTests
    │   │   ├── Balancer
    │   │   │   ├── BalancerHelpers.cs
    │   │   │   ├── ConnectionTests.cs
    │   │   │   ├── DnsResolverTests.cs
    │   │   │   ├── LeastUsedBalancer.cs
    │   │   │   ├── LeastUsedBalancerTests.cs
    │   │   │   ├── PickFirstBalancerTests.cs
    │   │   │   └── RoundRobinBalancerTests.cs
    │   │   ├── Client
    │   │   │   ├── AuthorizationTests.cs
    │   │   │   ├── CancellationTests.cs
    │   │   │   ├── ClientFactoryTests.cs
    │   │   │   ├── CompressionTests.cs
    │   │   │   ├── ConnectionTests.cs
    │   │   │   ├── DeadlineTests.cs
    │   │   │   ├── EventSourceTests.cs
    │   │   │   ├── HedgingTests.cs
    │   │   │   ├── InterceptorTests.cs
    │   │   │   ├── MaxMessageSizeTests.cs
    │   │   │   ├── MetadataTests.cs
    │   │   │   ├── RetryTests.cs
    │   │   │   ├── StreamingTests.cs
    │   │   │   ├── TelemetryTests.cs
    │   │   │   └── UnaryTests.cs
    │   │   ├── FunctionalTestBase.cs
    │   │   ├── Grpc.AspNetCore.FunctionalTests.csproj
    │   │   ├── Infrastructure
    │   │   │   ├── DynamicGrpcServiceRegistry.cs
    │   │   │   ├── ExecutionContextLoggingProvider.cs
    │   │   │   ├── GrpcHttpHelper.cs
    │   │   │   ├── GrpcStreamContent.cs
    │   │   │   ├── GrpcTestContext.cs
    │   │   │   ├── GrpcTestFixture.cs
    │   │   │   ├── HttpResponseMessageExtensions.cs
    │   │   │   ├── InProcessTestServer.cs
    │   │   │   ├── ListenerSubscription.cs
    │   │   │   ├── LogRecord.cs
    │   │   │   ├── LogSinkProvider.cs
    │   │   │   ├── LoopbackProxyServer.cs
    │   │   │   ├── PushStreamContent.cs
    │   │   │   ├── RequireHttp3Attribute.cs
    │   │   │   ├── StreamingContent.cs
    │   │   │   ├── TestClient.cs
    │   │   │   ├── TestConstants.cs
    │   │   │   ├── TestDelegateHandler.cs
    │   │   │   ├── TestEventListener.cs
    │   │   │   ├── TestServerEndpointName.cs
    │   │   │   ├── UnixDomainSocketConnectionFactory.cs
    │   │   │   └── VerifyNoErrorsScope.cs
    │   │   ├── Linker
    │   │   │   ├── Helpers
    │   │   │   │   ├── DotNetProcess.cs
    │   │   │   │   └── WebsiteProcess.cs
    │   │   │   └── LinkerTests.cs
    │   │   ├── Server
    │   │   │   ├── AuthorizationTests.cs
    │   │   │   ├── ClientStreamingMethodTests.cs
    │   │   │   ├── CompressionTests.cs
    │   │   │   ├── CorsTests.cs
    │   │   │   ├── DeadlineTests.cs
    │   │   │   ├── DiagnosticsTests.cs
    │   │   │   ├── DuplexStreamingMethodTests.cs
    │   │   │   ├── HttpContextTests.cs
    │   │   │   ├── InterceptorOrderTests.cs
    │   │   │   ├── LifetimeTests.cs
    │   │   │   ├── MaxMessageSizeTests.cs
    │   │   │   ├── NestedTests.cs
    │   │   │   ├── ServerStreamingMethodTests.cs
    │   │   │   ├── UnaryMethodTests.cs
    │   │   │   └── UnimplementedTests.cs
    │   │   ├── TestServer
    │   │   │   ├── FunctionalTestBase.cs
    │   │   │   ├── Helpers
    │   │   │   │   ├── ForwardingLoggerProvider.cs
    │   │   │   │   ├── GrpcTestContext.cs
    │   │   │   │   └── GrpcTestFixture.cs
    │   │   │   └── TesterServiceTests.cs
    │   │   ├── Web
    │   │   │   ├── Client
    │   │   │   │   ├── AuthTests.cs
    │   │   │   │   ├── ClientFactoryTests.cs
    │   │   │   │   ├── ConnectionTests.cs
    │   │   │   │   ├── IssueTests.cs
    │   │   │   │   ├── ServerStreamingMethodTests.cs
    │   │   │   │   ├── TrailerMetadataTests.cs
    │   │   │   │   └── UnaryMethodTests.cs
    │   │   │   ├── GrpcWebFunctionalTestBase.cs
    │   │   │   └── Server
    │   │   │       ├── DeadlineTests.cs
    │   │   │       └── UnaryMethodTests.cs
    │   │   ├── localhost.pfx
    │   │   └── server1.pfx
    │   ├── Grpc.AspNetCore.Server.ClientFactory.Tests
    │   │   ├── ClientBaseTests.cs
    │   │   ├── DefaultGrpcClientFactoryTests.cs
    │   │   ├── Grpc.AspNetCore.Server.ClientFactory.Tests.csproj
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   └── TestObjects
    │   │       └── TestServerCallContextFeature.cs
    │   ├── Grpc.AspNetCore.Server.Tests
    │   │   ├── BindMethodFinderTests.cs
    │   │   ├── CallHandlerTests.cs
    │   │   ├── Certs
    │   │   │   ├── client.crt
    │   │   │   └── outlookcom.crt
    │   │   ├── DefaultGrpcInterceptorActivatorTests.cs
    │   │   ├── DefaultGrpcServiceActivatorTests.cs
    │   │   ├── DuplexStreamingServerCallHandlerTests.cs
    │   │   ├── Grpc.AspNetCore.Server.Tests.csproj
    │   │   ├── GrpcEndpointRouteBuilderExtensionsTests.cs
    │   │   ├── GrpcEventSourceTests.cs
    │   │   ├── GrpcProtocolHelpersTests.cs
    │   │   ├── GrpcServicesExtensionsTests.cs
    │   │   ├── HealthChecks
    │   │   │   ├── GrpcHealthChecksPublisherTests.cs
    │   │   │   └── HealthServiceTests.cs
    │   │   ├── HttpClientFactory
    │   │   │   ├── TestGreeterClient.cs
    │   │   │   └── TestSecondGreeterClient.cs
    │   │   ├── HttpContextServerCallContextTests.cs
    │   │   ├── HttpContextStreamReaderTests.cs
    │   │   ├── HttpContextStreamWriterTests.cs
    │   │   ├── Infrastructure
    │   │   │   ├── TestHttpResponseFeature.cs
    │   │   │   ├── TestHttpResponseTrailersFeature.cs
    │   │   │   ├── TestPipeReader.cs
    │   │   │   ├── TestServerStreamWriter.cs
    │   │   │   └── TestSystemClock.cs
    │   │   ├── InterceptorCollectionTests.cs
    │   │   ├── Model
    │   │   │   └── BinderServiceMethodProviderTests.cs
    │   │   ├── PercentEncodingHelpersTests.cs
    │   │   ├── PipeExtensionsByteArrayTests.cs
    │   │   ├── PipeExtensionsPipelinesTests.cs
    │   │   ├── PipeExtensionsTestsBase.cs
    │   │   ├── Proto
    │   │   │   ├── echo.proto
    │   │   │   └── greet.proto
    │   │   ├── Reflection
    │   │   │   └── ReflectionGrpcServiceActivatorTests.cs
    │   │   ├── ServerCallContextExtensionsTests.cs
    │   │   ├── ServerCallDeadlineManagerTests.cs
    │   │   ├── ServerCallHandlerFactoryTests.cs
    │   │   ├── TestObjects
    │   │   │   ├── CustomAttribute.cs
    │   │   │   ├── CustomMetadata.cs
    │   │   │   ├── Services
    │   │   │   │   ├── GreeterServiceWithDuplicateNames.cs
    │   │   │   │   ├── GreeterServiceWithMetadataAttributes.cs
    │   │   │   │   ├── WithAttribute
    │   │   │   │   │   ├── GreeterWithAttribute.cs
    │   │   │   │   │   ├── GreeterWithAttributeService.cs
    │   │   │   │   │   ├── GreeterWithAttributeServiceSubClass.cs
    │   │   │   │   │   └── GreeterWithAttributeServiceSubSubClass.cs
    │   │   │   │   └── WithoutAttribute
    │   │   │   │       ├── GreeterWithoutAttribute.cs
    │   │   │   │       ├── GreeterWithoutAttributeService.cs
    │   │   │   │       ├── GreeterWithoutAttributeServiceSubClass.cs
    │   │   │   │       └── GreeterWithoutAttributeServiceSubSubClass.cs
    │   │   │   ├── TestData.cs
    │   │   │   ├── TestEndpointRouteBuilder.cs
    │   │   │   └── TestGrpcServiceActivator.cs
    │   │   ├── UnaryServerCallHandlerTests.cs
    │   │   └── Web
    │   │       ├── Base64PipeReaderTests.cs
    │   │       ├── Base64PipeWriterTests.cs
    │   │       ├── GrpcWebApplicationBuilderExtensionsTests.cs
    │   │       ├── GrpcWebFeatureTests.cs
    │   │       ├── GrpcWebMiddlewareTests.cs
    │   │       ├── GrpcWebProtocolHelpersTests.cs
    │   │       └── PipeExtensionsBase64Tests.cs
    │   ├── Grpc.Core.Api.Tests
    │   │   ├── AuthContextTest.cs
    │   │   ├── AuthPropertyTest.cs
    │   │   ├── CallCredentialsTest.cs
    │   │   ├── CallOptionsTest.cs
    │   │   ├── ChannelCredentialsTest.cs
    │   │   ├── ClientTest.cs
    │   │   ├── FakeCredentials.cs
    │   │   ├── Grpc.Core.Api.Tests.csproj
    │   │   ├── MarshallerTest.cs
    │   │   ├── MetadataTest.cs
    │   │   ├── RpcExceptionTest.cs
    │   │   └── VersionInfoTest.cs
    │   ├── Grpc.HealthCheck.Tests
    │   │   ├── Grpc.HealthCheck.Tests.csproj
    │   │   ├── HealthClientServerTest.cs
    │   │   ├── HealthServiceImplTest.cs
    │   │   ├── TestResponseStreamWriter.cs
    │   │   └── TestServerCallContext.cs
    │   ├── Grpc.Net.Client.Tests
    │   │   ├── AsyncClientStreamingCallTests.cs
    │   │   ├── AsyncDuplexStreamingCallTests.cs
    │   │   ├── AsyncServerStreamingCallTests.cs
    │   │   ├── AsyncUnaryCallTests.cs
    │   │   ├── Balancer
    │   │   │   ├── BalancerAttributesTests.cs
    │   │   │   ├── ConnectionManagerTests.cs
    │   │   │   ├── ConnectivityStateTests.cs
    │   │   │   ├── ExponentialBackoffPolicyTests.cs
    │   │   │   ├── PickFirstBalancerTests.cs
    │   │   │   ├── ResolverTests.cs
    │   │   │   ├── RoundRobinBalancerTests.cs
    │   │   │   ├── StreamWrapperTests.cs
    │   │   │   └── WaitForReadyTests.cs
    │   │   ├── CallCredentialTests.cs
    │   │   ├── CancellationTests.cs
    │   │   ├── CompressionTests.cs
    │   │   ├── ConnectionTests.cs
    │   │   ├── DeadlineTests.cs
    │   │   ├── DiagnosticsTests.cs
    │   │   ├── GetStatusTests.cs
    │   │   ├── GetTrailersTests.cs
    │   │   ├── Grpc.Net.Client.Tests.csproj
    │   │   ├── GrpcCallSerializationContextTests.cs
    │   │   ├── GrpcChannelTests.cs
    │   │   ├── GrpcProtocolHelpersTests.cs
    │   │   ├── HeadersTests.cs
    │   │   ├── HttpContentClientStreamReaderTests.cs
    │   │   ├── Infrastructure
    │   │   │   ├── Balancer
    │   │   │   │   ├── TestLoadBalancer.cs
    │   │   │   │   ├── TestLoadBalancerFactory.cs
    │   │   │   │   ├── TestSubChannelTransport.cs
    │   │   │   │   └── TestSubChannelTransportFactory.cs
    │   │   │   ├── CallInvokerTestExtensions.cs
    │   │   │   ├── ClientLoggerInterceptor.cs
    │   │   │   ├── Http2StreamException.cs
    │   │   │   ├── HttpClientCallInvokerFactory.cs
    │   │   │   ├── NullHttpHandler.cs
    │   │   │   ├── QuicStreamAbortedException.cs
    │   │   │   ├── StreamSerializationHelper.cs
    │   │   │   └── WinHttpHandler.cs
    │   │   ├── InterceptorTests.cs
    │   │   ├── LoggingTests.cs
    │   │   ├── MaximumMessageSizeTests.cs
    │   │   ├── OperatingSystemTests.cs
    │   │   ├── Proto
    │   │   │   └── greet.proto
    │   │   ├── ReadAllAsyncTests.cs
    │   │   ├── ResponseAsyncTests.cs
    │   │   ├── ResponseHeadersAsyncTests.cs
    │   │   ├── Retry
    │   │   │   ├── ChannelRetryThrottlingTests.cs
    │   │   │   ├── HedgingCallTests.cs
    │   │   │   ├── HedgingTests.cs
    │   │   │   └── RetryTests.cs
    │   │   ├── ServiceConfigTests.cs
    │   │   ├── SubdirectoryHandlerTests.cs
    │   │   └── UserAgentGeneratorTests.cs
    │   ├── Grpc.Net.Client.Web.Tests
    │   │   ├── Base64RequestStreamTests.cs
    │   │   ├── Base64ResponseStreamTests.cs
    │   │   ├── Grpc.Net.Client.Web.Tests.csproj
    │   │   ├── GrpcWebHandlerTests.cs
    │   │   ├── GrpcWebRequestContentTests.cs
    │   │   ├── GrpcWebResponseContentTests.cs
    │   │   └── GrpcWebResponseStreamTests.cs
    │   ├── Grpc.Net.ClientFactory.Tests
    │   │   ├── DefaultGrpcClientFactoryTests.cs
    │   │   ├── Grpc.Net.ClientFactory.Tests.csproj
    │   │   ├── GrpcClientServiceExtensionsTests.cs
    │   │   ├── GrpcHttpClientBuilderExtensionsTests.cs
    │   │   └── Proto
    │   │       └── greet.proto
    │   ├── Grpc.Reflection.Tests
    │   │   ├── Grpc.Reflection.Tests.csproj
    │   │   ├── ReflectionClientServerTest.cs
    │   │   └── SymbolRegistryTest.cs
    │   ├── Grpc.StatusProto.Tests
    │   │   ├── ExceptionExtensionsTest.cs
    │   │   ├── Grpc.StatusProto.Tests.csproj
    │   │   ├── MetadataExtensionsTest.cs
    │   │   ├── RpcExceptionExtensionsTest.cs
    │   │   └── RpcStatusExtensionsTest.cs
    │   ├── Shared
    │   │   ├── ActivityReplacer.cs
    │   │   ├── BalancerWaitHelpers.cs
    │   │   ├── CallbackInterceptor.cs
    │   │   ├── ClientBaseTests.cs
    │   │   ├── ClientTestHelpers.cs
    │   │   ├── ExceptionAssert.cs
    │   │   ├── HttpContextHelpers.cs
    │   │   ├── HttpContextServerCallContextHelpers.cs
    │   │   ├── HttpEventSourceListener.cs
    │   │   ├── MessageHelpers.cs
    │   │   ├── NUnitLogger.cs
    │   │   ├── ObserverToList.cs
    │   │   ├── ResponseUtils.cs
    │   │   ├── ServiceConfigHelpers.cs
    │   │   ├── ServicesHelpers.cs
    │   │   ├── SyncPoint.cs
    │   │   ├── SyncPointMemoryStream.cs
    │   │   ├── TaskExtensions.cs
    │   │   ├── TestHelpers.cs
    │   │   ├── TestHttpContextAccessor.cs
    │   │   ├── TestHttpMessageHandler.cs
    │   │   ├── TestRequestBodyPipeFeature.cs
    │   │   ├── TestResolver.cs
    │   │   ├── TestResolverFactory.cs
    │   │   ├── TestResponseBodyFeature.cs
    │   │   └── TestServerCallContext.cs
    │   └── dotnet-grpc.Tests
    │       ├── AddFileCommandTests.cs
    │       ├── AddUrlCommandTests.cs
    │       ├── CommandBaseTests.cs
    │       ├── DirectoryExtensions.cs
    │       ├── ListCommandTests.cs
    │       ├── RefreshCommandTests.cs
    │       ├── RemoveCommandTests.cs
    │       ├── TestAssets
    │       │   ├── DuplicateProjects
    │       │   │   ├── client.csproj
    │       │   │   └── server.csproj
    │       │   ├── EmptyProject
    │       │   │   ├── Proto
    │       │   │   │   ├── a.proto
    │       │   │   │   └── b.proto
    │       │   │   └── test.csproj
    │       │   ├── MultipleReferences
    │       │   │   └── test.csproj
    │       │   └── ProjectWithReference
    │       │       ├── Proto
    │       │       │   └── a.proto
    │       │       └── test.csproj
    │       ├── TestBase.cs
    │       └── dotnet-grpc.Tests.csproj
    └── testassets
        ├── BenchmarkWorkerWebsite
        │   ├── BenchmarkServiceImpl.cs
        │   ├── BenchmarkWorkerWebsite.csproj
        │   ├── IServerRunner.cs
        │   ├── Program.cs
        │   ├── README.md
        │   ├── ServerRunners.cs
        │   ├── Startup.cs
        │   ├── TimeStats.cs
        │   ├── WorkerServiceImpl.cs
        │   └── grpc
        │       ├── core
        │       │   └── grpc_core_stats.proto
        │       └── testing
        │           ├── benchmark_service.proto
        │           ├── control.proto
        │           ├── messages.proto
        │           ├── payloads.proto
        │           ├── stats.proto
        │           └── worker_service.proto
        ├── Certs
        │   └── InteropTests
        │       ├── README.md
        │       ├── ca.pem
        │       ├── server1.key
        │       ├── server1.pem
        │       └── server1.pfx
        ├── FunctionalTestsWebsite
        │   ├── FunctionalTestsWebsite.csproj
        │   ├── Infrastructure
        │   │   ├── DynamicEndpointDataSource.cs
        │   │   ├── DynamicService.cs
        │   │   ├── DynamicServiceModelProvider.cs
        │   │   ├── IncrementingCounter.cs
        │   │   └── ValueProvider.cs
        │   ├── Program.cs
        │   ├── Services
        │   │   ├── AnyService.cs
        │   │   ├── AuthorizedGreeter.cs
        │   │   ├── ChatterService.cs
        │   │   ├── CompressionService.cs
        │   │   ├── CounterService.cs
        │   │   ├── EchoService.cs
        │   │   ├── GreeterService.cs
        │   │   ├── IssueService.cs
        │   │   ├── LifetimeService.cs
        │   │   ├── NestedService.cs
        │   │   ├── RacerService.cs
        │   │   ├── SecondGreeterService.cs
        │   │   ├── SingletonCounterService.cs
        │   │   ├── StreamService.cs
        │   │   └── TesterService.cs
        │   └── Startup.cs
        ├── InteropTestsClient
        │   ├── InteropTestsClient.csproj
        │   ├── Program.cs
        │   └── RunGrpcTests.ps1
        ├── InteropTestsGrpcWebClient
        │   ├── App.razor
        │   ├── Infrastructure
        │   │   ├── InteropTestInvoker.cs
        │   │   └── PageLoggerFactory.cs
        │   ├── InteropTestsGrpcWebClient.csproj
        │   ├── Pages
        │   │   ├── Index.razor
        │   │   └── Index.razor.cs
        │   ├── Program.cs
        │   ├── Shared
        │   │   └── MainLayout.razor
        │   ├── _Imports.razor
        │   └── wwwroot
        │       └── index.html
        ├── InteropTestsGrpcWebWebsite
        │   ├── Dockerfile
        │   ├── InteropTestsGrpcWebWebsite.csproj
        │   ├── Program.cs
        │   ├── Startup.cs
        │   └── Tests
        │       ├── __tests__
        │       │   └── interoptests.js
        │       ├── custom-environment.js
        │       ├── jest-puppeteer.config.js
        │       ├── jest.config.js
        │       ├── package-lock.json
        │       └── package.json
        ├── InteropTestsNativeServer
        │   ├── InteropServer.cs
        │   ├── InteropTestsNativeServer.csproj
        │   ├── Program.cs
        │   ├── README.md
        │   ├── TestCredentials.cs
        │   └── TestServiceImpl.cs
        ├── InteropTestsWebsite
        │   ├── Dockerfile
        │   ├── InteropTestsWebsite.csproj
        │   ├── Program.cs
        │   ├── README.md
        │   ├── Startup.cs
        │   └── TestServiceImpl.cs
        ├── LinkerTestsClient
        │   ├── LinkerTestsClient.csproj
        │   └── Program.cs
        ├── LinkerTestsWebsite
        │   ├── LinkerTestsWebsite.csproj
        │   ├── Program.cs
        │   └── Services
        │       └── GreeterService.cs
        ├── Proto
        │   ├── any.proto
        │   ├── authorize.proto
        │   ├── chat.proto
        │   ├── compression.proto
        │   ├── count.proto
        │   ├── echo.proto
        │   ├── greet.proto
        │   ├── grpc
        │   │   └── testing
        │   │       ├── empty.proto
        │   │       ├── messages.proto
        │   │       └── test.proto
        │   ├── issue.proto
        │   ├── lifetime.proto
        │   ├── nested.proto
        │   ├── race.proto
        │   ├── singleton.proto
        │   ├── streaming.proto
        │   ├── test.proto
        │   └── unimplemented.proto
        ├── README.md
        └── Shared
            ├── Assert.cs
            ├── AsyncStreamExtensions.cs
            ├── ExceptionAssert.cs
            ├── IChannelWrapper.cs
            ├── InteropClient.cs
            └── TestCredentials.cs

376 directories, 1312 files

标签:

实例下载地址

gRPC在.NET平台的应用全解

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警