分类:
grpc
思 考 问 题
grpc 服务器当对 proto 文件进行修改时每次都去 Copy 到本地 Client 是比较麻烦的,有没有快捷的方法解决?
GrpcServer.Web 服务器端的修改
(一)修改 Message.proto 文件,去掉原有的 salary 字段

syntax = "proto3";
option csharp_namespace = "GrpcServer.Web.Protos";
import "Enums.proto";
import "google/protobuf/timestamp.proto";
message Employee {
int32 id = 1;
int32 no = 2;
string firstName = 3;
string lasterName = 4;
MonthSalary monthSalary = 6;
EmployeeStatus status =7;
google.protobuf.Timestamp lastModfied = 8;
reserved "salary";
reserved 5;
}
message MonthSalary {
float basic = 1;
float bonus = 2;
}
message GetByNoRequest{
int32 no = 1;
}
message EmployeeResponse{
Employee employee =1;
}
message GetAllRequest {}
message AddPhotoRequest{
bytes data = 1;
}
message AddPhotoResponse{
bool isOk = 1;
}
message EmployeeRequest{
Employee employee = 1;
}
service EmployeeService{
rpc GetByNo(GetByNoRequest) returns (EmployeeResponse);
rpc GetAll(GetAllRequest) returns (stream EmployeeResponse);
rpc AddPhoto(stream AddPhotoRequest) returns (AddPhotoResponse);
rpc Save(EmployeeRequest) returns (EmployeeResponse);
rpc SaveAll(stream EmployeeRequest) returns (stream EmployeeResponse);
}(二)添加 Enums.proto 文件

并对属性进行修改

syntax = "proto3";
option csharp_namespace = "GrpcServer.Web.Protos";
enum EmployeeStatus {
NORMAL = 0;
ONVACATION = 1;
RESIGNED = 2;
RETIRED = 3;
}(三)对 InMemoryData.cs 修改
注意:在添加 时间字段 的值时,其值必须是 Utc 的
public class InMemoryData
{
public static List<Employee> Employees = new List<Employee>() {
new Employee{
Id = 1,
No = 1994,
FirstName = "Chandler",
LasterName = "Bing",
MonthSalary = new MonthSalary()
{
Basic = 1000f,
Bonus = 85f
},
Status = EmployeeStatus.Retired,
LastModfied = Timestamp.FromDateTime(DateTime.UtcNow)
//Salary = 2200
},
new Employee{
Id = 2,
No = 1999,
FirstName = "Rachl",
LasterName = "Green",
MonthSalary = new MonthSalary()
{
Basic = 1000f,
Bonus = 0f
},
Status = EmployeeStatus.Resigned,
LastModfied = Timestamp.FromDateTime(DateTime.UtcNow)
//Salary = 2400
},
new Employee{
Id = 3,
No = 2452,
FirstName = "MI",
LasterName = "UIMI",
MonthSalary = new MonthSalary()
{
Basic = 1000f,
Bonus = 1250.9f
},
Status = EmployeeStatus.Onvacation,
LastModfied = Timestamp.FromDateTime(DateTime.UtcNow)
//Salary = 2600
}
};
}(四)双击 GrpcServer.Web


最后 Ctrl+S 保存
GrpcClient 客户端的修改
(一)删除 Protos 文件夹下面的所有文件

(二)添加客户端相关资源
<ItemGroup> <PackageReference Include="Google.Protobuf" Version="3.11.4" /> <PackageReference Include="Grpc.AspNetCore" Version="2.27.0" /> <PackageReference Include="Grpc.Net.Client" Version="2.27.0" /> <PackageReference Include="Grpc.Net.ClientFactory" Version="2.27.0" /> <PackageReference Include="Grpc.Tools" Version="2.27.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup>
(三)然后跟着我操作



注意这个时候也需要修改 Enums.proto 文件的属性哟!!!

大家这个时候自需要在服务器上修改 proto 文件即可同步到客户端!!!
最后运行一下




感谢各位的观看!
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术