做百度移动端网站排名软件,四川高速公路建设开发总公司网站,个人微博网站设计,外贸网站个性设计前些天gRPC 发布1.0 版本#xff0c;代表着gRPC 已经正式进入稳定阶段。 今天我们就来学习gRPC C# 。而且目前也已经支持.NET Core 可以实现完美跨平台。 传统的.NET 可以通过Mono 来实现跨平台调用。 GitHub#xff1a; https://github.com/grpc/grpc gRPC 简单介绍#x… 前些天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和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能从而有助于节省带宽、降低的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 --pluginprotoc-gen-grpcpackages\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 TaskHelloReply 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。 本文源码GitHubhttps://github.com/linezero/Blog/tree/master/gRPCDemo 相关文章 谷歌发布的首款基于HTTP/2和protobuf的RPC框架GRPCC#中使用gRPCGoogle高性能RPC框架gRPC 1.0.0发布 原文地址http://www.cnblogs.com/linezero/p/grpc.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注