最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • [Dart翻译]宣布正式支持Dart的gRPC。

    正文概述 掘金(Sunbreak)   2021-03-27   846

    [Dart翻译]宣布正式支持Dart的gRPC。

    gRPC是一个高性能、开源的RPC框架。它提供了简单的服务定义,建立在http/2基础上,并支持双向流和完全集成的可插拔验证。gRPC框架支持广泛的语言,我们很高兴地宣布,对Dart语言的支持现在已经可以在测试版中使用了!Dart gRPC支持与Dart SDK,1.24.3或更高版本一起使用,目前支持Flutter和VM/Server平台。

    创建服务器和编写gRPC服务定义

    gRPC服务通常使用Protocol Buffers v3来描述它们的端点和数据序列化,下面是一个小的服务定义示例,它定义了一个服务 "Greeter",并带有一个单一的rpc消息 "SayHello"(两个消息中的数字 "1 "指定了消息字段的唯一ID)。

    syntax = "proto3";
    
    // The greeting service definition.
    service Greeter {
      // Sends a greeting
      rpc SayHello (HelloRequest) returns (HelloReply) {}
    }
    
    // The request message containing the user's name.
    message HelloRequest {
      string name = 1;
    }
    
    // The response message containing the greetings
    message HelloReply {
      string message = 1;
    }
    

    一旦你定义了服务,你就可以自动生成服务器的骨架。

    protoc --dart_out=grpc:generated --Iprotos protos/greeter
    

    这将在生成的目录中产生一个GreeterServiceBase类,然后你可以将其子类化,以添加实际的服务实现。

    class GreeterService extends GreeterServiceBase {
      @override
      Future<HelloReply> sayHello(ServiceCall call, HelloRequest request) async {
        return new HelloReply()..message = 'Hello, ${request.name}!';
      }
    }
    

    用一个gRPC客户端来调用服务器

    当我们生成上面的服务存根时,protoc编译器也生成了一个客户端库。

    ///
    //  Generated code. Do not modify.
    ///
    // ignore_for_file: non_constant_identifier_names,library_prefixes
    library greeter_pbgrpc;
    
    ...
      
    class GreeterClient extends Client {
    ...
      ResponseFuture<HelloReply> sayHello(HelloRequest request,
          {CallOptions options}) {
        final call = $createCall(_$sayHello, new Stream.fromIterable([request]),
            options: options);
        return new ResponseFuture(call);
      }
    }
    

    有了这个库,从客户端层调用服务就很简单了。

     final client = new GreeterClient(channel);
      try {
        final request = new HelloRequest()..name = 'Michael';
        final response = await client.sayHello(request);
        print('Greeter client received: ${response.message}');
      } catch (e) {
        print('Caught error: $e');
      }
    

    当运行时,将打印出以下输出:

    Greeter client received: Hello, Michael!
    

    接下来的步骤

    要在Dart中开始使用gRPC,请看我们新的Dart gRPC QuickStart,它引导你运行和扩展Greeter示例。接下来,请查看Dart gRPC教程。

    如果你遇到任何问题,请提交一个问题。我们也很乐意听到你的反馈意见,你想看到的任何变化或增加的内容;例如,我们已经听到了一些支持gRPC-Web协议的请求。提供快速反馈的一个具体方法是在问题的最上面的评论上按GitHub的大拇指?按钮,对问题进行 "投票"。

    我们期待看到你用 gRPC for Dart 构建的东西。


    www.deepl.com 翻译


    起源地下载网 » [Dart翻译]宣布正式支持Dart的gRPC。

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元