Skip to content

About

CodeFirstGrpc

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

.NET 10 gRPC Code-First 示例项目

这是一个完整的 .NET 10 gRPC Code-First 示例项目,演示 protobuf-net.Grpc 的所有核心功能。

功能特性

  • ✅ 一元 RPC (Unary RPC)
  • ✅ 服务器流式 RPC (Server Streaming)
  • ✅ 客户端流式 RPC (Client Streaming)
  • ✅ 双向流式 RPC (Bidirectional Streaming)
  • ✅ 依赖注入
  • ✅ JWT 认证(Bearer Token)
  • ✅ gRPC 反射服务(Postman 调试支持)
  • ✅ 单元测试和集成测试

技术栈

  • .NET 10 SDK
  • protobuf-net.Grpc (Code-First gRPC)
  • ASP.NET Core
  • JWT Bearer 认证
  • xUnit + Moq (测试)

项目结构

GrpcCodeFirst/
├── GrpcCodeFirst.Server/          # gRPC 服务器
├── GrpcCodeFirst.Client/          # gRPC 客户端
├── GrpcCodeFirst.Tests/           # 单元测试和集成测试
├── GrpcCodeFirst.Contracts/       # 共享契约(消息 + 接口)
└── README.md                      # 本文档

快速开始

1. 克隆项目

git clone <repo-url>
cd CodeFirstGrpc

2. 启动服务器

cd GrpcCodeFirst.Server
dotnet run

服务器将在 https://localhost:5001 启动

3. 运行客户端(新终端)

cd GrpcCodeFirst.Client
dotnet run

客户端会自动获取 JWT Token 并完成认证。

4. 运行测试

dotnet test

认证说明

本项目实现了 JWT Bearer Token 认证:

  • 服务端: GreeterService 使用 [Authorize] 特性保护
  • 登录端点: POST /login 可匿名访问,接收 userName 返回 JWT Token
  • 客户端: 自动获取 Token 并在 gRPC 调用时附加到请求头

手动测试认证流程

# 1. 获取 Token(服务器必须先启动)
curl -X POST https://localhost:5001/login \
  -H "Content-Type: application/json" \
  -d '{"userName": "testuser"}' \
  --insecure

# 返回示例:
# {"token":"eyJhbGciOiJIUzI1NiIs..."}

# 2. 使用 Token 调用 gRPC 服务(在 Metadata 中添加 Authorization: Bearer <token>)

API 说明

服务接口

IGreeterService 提供以下方法:

方法 RPC 类型 描述
SayHello 一元 RPC 发送问候,返回响应消息
StreamServerTime 服务器流式 服务器每秒推送时间戳
SumNumbers 客户端流式 客户端发送数字流,服务器返回总和
Chat 双向流式 实时聊天,服务器回显消息

HTTP 端点

端点 方法 描述 认证
/ GET 健康检查 匿名
/login POST 获取 JWT Token 匿名

消息类型

  • HelloRequest / HelloReply - 一元 RPC 消息
  • TimeTick - 时间戳消息
  • NumberSequence / SumResult - 数字流消息
  • ChatMessage - 聊天消息

Postman 调试

由于启用了 gRPC 反射服务,可以使用 Postman 直接调试:

  1. 启动服务器
  2. 在 Postman 中选择 "New gRPC Request"
  3. 输入地址 localhost:5001
  4. Postman 会自动发现服务方法

注意: 调试认证保护的端点时,需要在 Metadata 中添加 Authorization: Bearer <your-token>

许可证

MIT

About

CodeFirstGrpc

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages