Asp.net core 通过grpc调用python
一、grpc
grpc 一个rpc框架。什么是rpc?简单来说就是远程过程调用。
举个例子,比如在C#代码中直接调用python 中写的方法,或者一个C#进程调用另一个C#进程中的方法,或者其他语言之间的互相调用
grpc 学习地址:https://www.grpc.io/
二、protocol buffer
一种语言,,文件类型.proto
作用:定义进程之间传递参数,以及返回的类型,还有进程直接可调用的方法。具体书写方法可百度
三、python作为服务端
python 部分用的编辑器为vscode
3.1 proto文件的编写
syntax = "proto3"; //表示用的是proto3,之前的版本是2,通过这行代码来区分
//option csharp_namespace = "GrpcClient"; C#的命名空间,引用时要用
package grpcDemo;
//定义传递的参数 以下两个参数实体,其实是可以替换互用的,就是传递和返回参数变量
message Request{
string info = 1;
}
message Response{
string info =1;
}
//定义进程之间调用的方法
service GrpcDemo {
rpc GetMessgae(Request) returns(Response){}
}
3.2 根据proto 文件生成相关的py文件
在vs code 打开cmd 命令窗口,分别执行以下命令
python -m pip install grpcio
python -m pip install grpcio-tools
python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./grpcDemo.proto
3.3 编写python server
import grpc
import grpcDemo_pb2
import grpcDemo_pb2_grpc
from concurrent import futures
class PyServer(grpcDemo_pb2_grpc.GrpcDemoServicer):
def GetMessgae(self,requet,context):
return grpcDemo_pb2.Response(info='Hello')
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
grpcDemo_pb2_grpc.add_GrpcDemoServicer_to_server(PyServer(),server)
server.add_insecure_port('127.0.0.1:5001')
server.start()
server.wait_for_termination()
if __name__ == '__main__':
#logging.basicConfig()
serve()
F5运行 ,服务就完成了
四、Asp.net core API 作为grpc客户端实现
这部分教程请看微软官网地址:https://docs.microsoft.com/en-us/aspnet/core/grpc/clientfactory?view=aspnetcore-3.1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!