Flutter gRPC服务插件pip_services4_grpc的使用
Flutter gRPC服务插件pip_services4_grpc的使用
该模块是Pip.Services多语言微服务工具包的一部分。
gRPC 模块用于通过gRPC协议组织同步数据交换。它包含了服务器和客户端两部分的实现。
该模块包含以下包:
- Build - 用于创建gRPC服务的工厂
 - Clients - 基本的客户端组件,使用gRPC协议并通过命令模式进行通信
 - Controllers - 通过gRPC协议连接的基本服务实现,并使用命令模式
 
快速链接:
使用
在你的pubspec.yaml文件中添加以下依赖:
dependencies:
  pip_services4_grpc: version
现在你可以从命令行安装包:
pub get
开发
你需要安装以下开发环境:
- Dart SDK 3
 - Visual Studio Code 或其他你选择的IDE
 - Docker
 
安装依赖:
pub get
运行自动化测试:
pub run test
生成API文档:
./docgen.ps1
在提交更改前,运行docker化构建和测试:
./build.ps1
./test.ps1
./clear.ps1
联系方式
Dart版本的Pip.Services由以下人员创建和维护:
- Sergey Seroukhov
 - Levichev Dmitry
 
文档由以下人员编写:
- Mark Makarychev
 - Levichev Dmitry
 
示例代码
以下是一个完整的示例代码,展示了如何使用pip_services4_grpc插件创建一个gRPC服务和客户端。
import 'package:pip_services4_components/pip_services4_components.dart';
import 'package:pip_services4_data/pip_services4_data.dart';
import './sample/DummyService.dart'; // 自定义的服务类
import 'controllers/DummyCommandableGrpcController.dart'; // 控制器类
import './clients/DummyCommandableGrpcClient.dart'; // 客户端类
import './sample/Dummy.dart'; // 数据模型
// 配置gRPC连接信息
var grpcConfig = ConfigParams.fromTuples([
  'connection.protocol',
  'http',
  'connection.host',
  'localhost',
  'connection.port',
  3002
]);
void main() async {
  DummyCommandableGrpcController controller;
  DummyCommandableGrpcClient client;
  var service = DummyService();
  // 初始化控制器
  controller = DummyCommandableGrpcController();
  controller.configure(grpcConfig);
  // 设置引用
  var references = References.fromTuples([
    Descriptor('pip-services-dummies', 'service', 'default', 'default', '1.0'),
    service,
    Descriptor('pip-services-dummies', 'controller', 'grpc', 'default', '1.0'),
    controller
  ]);
  controller.setReferences(references);
  
  // 打开控制器
  await controller.open(Context.fromTraceId('123'));
  // 初始化客户端
  client = DummyCommandableGrpcClient();
  client.configure(grpcConfig);
  client.setReferences(References());
  await client.open(Context.fromTraceId('123'));
  // 创建一个dummy对象
  var dummy1 = Dummy(id: '', key: 'Key 1', content: 'Content 1');
  var dummy = await client.createDummy(Context.fromTraceId('123'), dummy1);
  // 获取所有dummies
  var dummies = await client.getDummies(
      Context.fromTraceId('123'), FilterParams(), PagingParams(0, 5, false));
  // 更新dummy对象
  dummy!.content = 'Updated Content 1';
  dummy = await client.updateDummy(Context.fromTraceId('123'), dummy);
  // 删除dummy对象
  await client.deleteDummy(Context.fromTraceId('123'), dummy1.id!);
  // 尝试获取已删除的dummy对象
  dummy = await client.getDummyById(Context.fromTraceId('123'), dummy1.id!);
  // 关闭客户端和控制器
  await client.close(Context.fromTraceId('123'));
  await controller.close(Context.fromTraceId('123'));
}
更多关于Flutter gRPC服务插件pip_services4_grpc的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter gRPC服务插件pip_services4_grpc的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
pip_services4_grpc 是一个用于在 Flutter 应用中实现 gRPC 服务的插件。它是 pip-services4 微服务工具包的一部分,旨在简化 gRPC 服务的开发和集成。以下是如何在 Flutter 项目中使用 pip_services4_grpc 的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml 文件中添加 pip_services4_grpc 作为依赖项:
dependencies:
  pip_services4_grpc: ^0.0.1
然后运行 flutter pub get 来安装依赖。
2. 创建 gRPC 服务
接下来,你可以创建一个 gRPC 服务。假设你有一个简单的 HelloWorld 服务,它有一个 sayHello 方法。
syntax = "proto3";
package helloworld;
service HelloWorld {
  rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
3. 生成 Dart 代码
使用 protoc 工具将 .proto 文件编译成 Dart 代码。确保你已经安装了 protoc 和 protoc-gen-dart 插件。
protoc --dart_out=grpc:lib/src/generated -Iproto proto/helloworld.proto
这将在 lib/src/generated 目录下生成 Dart 代码。
4. 实现服务
在你的 Flutter 项目中实现 gRPC 服务。首先,创建一个服务类,继承自生成的 HelloWorldServiceBase。
import 'package:pip_services4_grpc/pip_services4_grpc.dart';
import 'package:helloworld/helloworld.pb.dart';
class HelloWorldService extends HelloWorldServiceBase {
  @override
  Future<HelloReply> sayHello(ServiceCall call, HelloRequest request) async {
    return HelloReply()..message = 'Hello, ${request.name}!';
  }
}
5. 启动 gRPC 服务器
在 main.dart 中启动 gRPC 服务器。
import 'package:pip_services4_grpc/pip_services4_grpc.dart';
import 'package:flutter/material.dart';
import 'package:helloworld/helloworld.pb.dart';
void main() async {
  var grpcConfig = ConfigParams.fromTuples([
    'connection.protocol', 'http',
    'connection.host', 'localhost',
    'connection.port', 50051,
  ]);
  var service = HelloWorldService();
  var controller = GrpcController();
  controller.configure(grpcConfig);
  controller.register(service);
  await controller.open(null);
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter gRPC Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter gRPC Demo'),
        ),
        body: Center(
          child: Text('gRPC server is running!'),
        ),
      ),
    );
  }
}
6. 运行应用
现在你可以运行你的 Flutter 应用,gRPC 服务器将在指定的端口上启动。
flutter run
7. 测试服务
你可以使用任何 gRPC 客户端来测试你的服务。例如,使用 grpcurl 工具:
grpcurl -plaintext -d '{"name": "World"}' localhost:50051 helloworld.HelloWorld/SayHello
你应该会收到以下响应:
{
  "message": "Hello, World!"
}
        
      
            
            
            
