gRPC .NET Core跨平台学习
前些天發(fā)布gRPC C# 學習,在.NET Framework 中使用gRPC ,今天來學習 .NET Core gRPC。
gRPC 的.NET Core 包在NuGet 上發(fā)布了,結(jié)合.NET Core 實現(xiàn)gRPC 完美跨平臺。
本篇主要講解 .NET Core 版gRPC客戶端運行在Ubuntu系統(tǒng)上,與局域網(wǎng)內(nèi)的服務端通信。
下面我們來正式開始。
在之前的代碼基礎開發(fā).NET Core版。
本文運行環(huán)境:
服務端:WIN10 x64
客戶端:Ubuntu 14.04
添加.NET Core版gRPC Client
首先我們打開之前的gRPCDemo 代碼,GitHub:https://github.com/linezero/Blog/tree/master/gRPCDemo?。
添加一個.NET Core 控制臺應用?gRPCNETCoreClient
然后在?gRPCNETCoreClient 項目上添加引用:
Install-Package Grpc -Pre移植傳統(tǒng)類庫至.NET Core類庫
安裝好Grpc 以后我們就可以來移植類庫了,這里我們首先創(chuàng)建一個gRPCNETCoreDemo Class Library。
新建好以后我們將?project.json 文件更改為如下:
{
? "version": "1.0.0-*",
? "frameworks": {
? ? "net452": {
? ? ? "dependencies": {
? ? ? ? "Grpc": "1.0.0",
? ? ? ? "Grpc.Core": "1.0.0",
? ? ? ? "Google.Protobuf": "3.0.0",
? ? ? ? "System.Interactive.Async": "3.0.0"
? ? ? }
? ? },
? ? "netstandard1.6": {
? ? ? "imports": "dnxcore50",
? ? ? "dependencies": {
? ? ? ? "NETStandard.Library": "1.6.0",
? ? ? ? "Grpc": "1.0.1-pre1",
? ? ? ? "Grpc.Core": "1.0.1-pre1",
? ? ? ? "Google.Protobuf": "3.1.0",
? ? ? ? "System.Interactive.Async": "3.1.0-rc"
? ? ? }
? ? }
? }
}
這樣類庫就能支持.NET Framework 4.5.2 以及 .NET Core。
這里我省略了生成代碼,直接將gRPCDemo 中的類復制過來。然后gRPCNETCoreClient 添加gRPCNETCoreDemo 引用。
gRPCNETCoreClient 中Program.cs 添加如下代碼,基本上和上篇代碼一致,新增了控制臺編碼輸出格式。
? ? ? ?public static void Main(string[] args){Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);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 .NET Core Client" });Console.WriteLine("來自" + reply.Message);channel.ShutdownAsync().Wait();Console.WriteLine("任意鍵退出...");Console.ReadKey();}}
代碼編寫好以后,我們來執(zhí)行g(shù)RPCServer ,然后使用dotnet run 執(zhí)行?gRPCNETCoreClient。
成功通信,證明支持.NET Core。?
發(fā)布至Ubuntu系統(tǒng)運行
下面將gRPCNETCoreClient 發(fā)布至Ubuntu系統(tǒng)跨平臺運行。
代碼綁定ip需要稍作調(diào)整。
查看本地ip 是多少,將gRPCServer 中的localhost 改成本地ip ,并將 Client的127.0.0.1 也改成本地ip。
發(fā)布 gRPCNETCoreClient
dotnet publish?
將發(fā)布后的目錄復制到 Ubuntu 系統(tǒng)。
下面先在本地啟動Server ?,然后在Ubuntu系統(tǒng)執(zhí)行Client 。
成功在Ubuntu 系統(tǒng)上通信,這里服務端是運行在本地,客戶端是在另外一臺機器上。
相關(guān)文章:?
谷歌發(fā)布的首款基于HTTP/2和protobuf的RPC框架:GRPC
C#中使用gRPC
Google高性能RPC框架gRPC 1.0.0發(fā)布
原文地址:http://www.cnblogs.com/linezero/p/grpcnetcore.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的gRPC .NET Core跨平台学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core中使用Razor模板引
- 下一篇: Windows Server 2016提