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!"
}