zoukankan      html  css  js  c++  java
  • c# 使用grpc代替WCF

    gRPC

    gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。从定义上可以看到这个主要是给移动应用做通信用的,其次他支持双向的通信,因此可以说GRPC是一个RPC框架没错,但是它的功能已经强于RPC,因为普通RPC是定义是一应一答的单向通信模式,而GRPC支持双向通信,毕竟做不到双向通信怎么能说是给移动应用设计的呢?

    gRPC主要有4种请求/响应模式,分别是:

    (1) 简单模式(Simple RPC)

    客户端发起一次请求,服务端响应一个数据,即标准RPC通信。

    (2) 服务端数据流模式(Server-side streaming RPC)

    这种模式是客户端发起一次请求,服务端返回一段连续的数据流。典型的例子是客户端向服务端发送一个股票代码,服务端就把该股票的实时数据源源不断的返回给客户端。

    (3) 客户端数据流模式(Client-side streaming RPC)

    与服务端数据流模式相反,这次是客户端源源不断的向服务端发送数据流,而在发送结束后,由服务端返回一个响应。典型的例子是物联网终端向服务器报送数据。

    (4) 双向数据流模式(Bidirectional streaming RPC)

    这是客户端和服务端都可以向对方发送数据流,这个时候双方的数据可以同时互相发送,也就是可以实现实时交互。比如聊天应用。

    grpc-dotnet

    grpc-dotnet 是在2019年随着 .NET Core 3.0 一起发布的一个gPRC官方库。在ASP.NET Core 的 gRPC项目模板里面就使用了这个库。

    image

    .NET Core 3.0之前难道不可以使用gRPC吗?

    目前,gRPC 在.NET上有两种官方实现:

    • Grpc.Core:这个是原来的gRPC C#库,它基于原生gPRC(C-Core)核心库实现。

    • grpc-dotnet:这是新的库,完全使用C#编写实现,没有原生依赖,基于.NET Core 3.0。

    grpc-dotnet并没有替代Grpc.Core,它们并行共存,它们在功能、集成力、支持的平台、成熟度和性能方面各有优势。而且这两种实现使用了相同的API来调用和处理RPC,从而可以避免单库锁定,并允许用户选择满足其需求的最佳实现。

    grpc-dotnet

    与原来基于C-Core实现的Grpc.Core不同,grpc-dotnet使用了.NET Core BCL核心库里面现有的网络原始类型,请看比较图:

    在服务器端,Grpc.ASPNETCore.Server库集成到了ASP.NET Core中,使开发人员能够从ASP.NET Core现有的日志、配置、依赖注入、身份验证、授权等常见横切关注点的生态系统中获益。ASP.NET生态系统中的流行库,如Entity Framework Core(ORM)、Serilog(日志库)和Identity Server等,均可以与gRPC无缝协作。

    在客户端,Grpc.Net.Client库基于大家熟悉的HttpClient API构建,该API是.Net Core的一部分。与服务器端一样,gRPC客户端可以从构建在HttpClient上的软件生态系统中受益,例如Polly(弹性和故障处理库)和HttpClientFactory(管理HTTPClient生命周期)等库就可以在gRPC客户端上使用。

    image

  • 相关阅读:
    http协议
    web及时通信传输的几种方法
    头像上传可预览实现代码
    JavaScript对象基础知识总结
    js异步流程的promise及generator
    数据整理
    前端技术分类整理
    HTML随笔
    前端内网穿透,localtunnel
    CSS记录
  • 原文地址:https://www.cnblogs.com/springsnow/p/13128462.html
Copyright © 2011-2022 走看看