日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

gRPC C#学习

發布時間:2023/12/4 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gRPC C#学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天gRPC 發布1.0 版本,代表著gRPC 已經正式進入穩定階段。?

今天我們就來學習gRPC C# 。而且目前也已經支持.NET Core 可以實現完美跨平臺。

傳統的.NET 可以通過Mono 來實現跨平臺調用。

GitHub:?https://github.com/grpc/grpc

gRPC 簡單介紹:

gRPC是一個高性能、通用的開源RPC框架,其由Google主要面向移動應用開發并基于HTTP/2協議標準而設計,基于ProtoBuf(Protocol Buffers)序列化協議開發,且支持眾多開發語言。gRPC提供了一種簡單的方法來精確地定義服務和為iOS、Android和后臺支持服務自動生成可靠性很強的客戶端功能庫??蛻舳顺浞掷酶呒壛骱玩溄庸δ?#xff0c;從而有助于節省帶寬、降低的TCP鏈接次數、節省CPU使用、和電池壽命。

gRPC支持多種語言,并能夠基于語言自動生成客戶端和服務端功能庫。目前,在GitHub上已提供了C版本grpc、Java版本grpc-java 和 Go版本grpc-go,其它語言的版本正在積極開發中,其中 grpc支持C、C++、Node.js、Python、Ruby、Objective-C、PHP和C#等語言,grpc-java已經支持Android開發。

gRPC已經應用在Google的云服務和對外提供的API中,其主要應用場景如下:

低延遲、高擴展性、分布式的系統
同云服務器進行通信的移動應用客戶端
設計語言獨立、高效、精確的新協議
便于各方面擴展的分層設計,如認證、負載均衡、日志記錄、監控等

參考文檔:

http://www.infoq.com/cn/news/2015/03/grpc-google-http2-protobuf

本篇文章主要講解傳統.NET 應用如何支持gRPC。

下面就正式開始。

新建項目

首先我們創建一個gRPCDemo 的類庫。

然后添加兩個控制臺應用程序 gRPCServer gRPCClient。

最終項目結構如下:

定義服務

建好項目以后我們來定義服務

這里我們在gRPCDemo 項目里添加一個?helloworld.proto 內容如下:

下面主要定義一個gRPC 的服務里面有個?SayHello rpc 方法

syntax = "proto3"; package gRPCDemo; service gRPC {rpc SayHello (HelloRequest) returns (HelloReply) {} }message HelloRequest { ?string name = 1; }message HelloReply { ?string message = 1; }

使用Grpc.Tools生成代碼

定義好服務以后我們就可以來生成代碼了。

首先需要添加引用:

在每個項目中添加上Grpc 及?Google.Protobuf?

Install-Package Grpc Install-Package Google.Protobuf

然后在gRPCDemo 項目中再添加上工具?Grpc.Tools

NuGet 命令行:

Install-Package Grpc.Tools

然后在命令行執行以下命令,注意執行命令的目錄為packages 的上層目錄

?

packages\Grpc.Tools.1.0.0\tools\windows_x86\protoc.exe -IgRPCDemo --csharp_out gRPCDemo gRPCDemo\helloworld.proto --grpc_out gRPCDemo --plugin=protoc-gen-grpc=packages\Grpc.Tools.1.0.0\tools\windows_x86\grpc_csharp_plugin.exe

執行完以后,在gRPCDemo 目錄下會多出Helloworld.cs 及?HelloworldGrpc.cs 類,將其包含至gRPCDemo 項目既可。

然后gRPCServer gRPCClient 分別都引用?gRPCDemo。

?

創建服務端及客戶端

下面我們來編寫服務端及客戶端

?

首先是服務端:

?Program.cs?


class gRPCImpl : gRPC.gRPCBase{ ? ? ? ?// 實現SayHello方法public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context){ ? ?
? ?? ? ? ?
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });}} ?

? ?
class Program{ ? ?
? ? ? ?
const int Port = 9007; ?

? ? ? ?
public static void Main(string[] args){Server server = new Server{Services = { gRPC.BindService(new gRPCImpl()) },Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }};server.Start();Console.WriteLine("gRPC server listening on port " + Port);Console.WriteLine("任意鍵退出...");Console.ReadKey();server.ShutdownAsync().Wait();}}

服務端需要實現SayHello 方法。

然后是客戶端 Program.cs

class Program{ ? ?
? ? ? ?
static void Main(string[] args){Channel channel = new Channel("127.0.0.1:9007", ChannelCredentials.Insecure); ? ?
?? ? ? ??
var client = new gRPC.gRPCClient(channel); ? ? ? ? ?var reply= client.SayHello(new HelloRequest { Name = "LineZero" });Console.WriteLine("來自" + reply.Message);channel.ShutdownAsync().Wait();Console.WriteLine("任意鍵退出...");Console.ReadKey();}}

然后我們將Client 和Server 都生成一下。

分別到對應的目錄執行,首先啟動gRPCServer ,然后執行gRPCClient。

成功進行通信了,實現了gRPC。

?

本文源碼GitHub:https://github.com/linezero/Blog/tree/master/gRPCDemo?

相關文章:?

  • 谷歌發布的首款基于HTTP/2和protobuf的RPC框架:GRPC

  • C#中使用gRPC

  • Google高性能RPC框架gRPC 1.0.0發布

原文地址:http://www.cnblogs.com/linezero/p/grpc.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的gRPC C#学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。