新闻详情

新闻详情

首页 / 资讯中心 / 详情

Remote Communication Kit URPC:远程函数调用、弱网传输与多径通信模型【鸿蒙心迹】

发布时间:2026/11/13 9:35:23来源:尧图网络
Remote Communication Kit URPC:远程函数调用、弱网传输与多径通信模型【鸿蒙心迹】
调用服务器上的 getUserInfo()为什么代码写起来像本地函数底层却走了十万八千里做客户端开发的时候最爽的就是写一行userApi.getUserInfo(userId)然后就像调用本地函数一样拿到结果。结果真出问题的时候才发现这一行函数调用根本不是本地的。它要把参数序列化、打包、过网络、到服务器、执行、把结果序列化、再传回来。中间任何一步出问题都是用户看到的加载失败。一、先想清楚这一行函数调用到底做了什么先把最基础的问题想明白。你写的是letuserawaituserApi.getUserInfo(userId);看起来就是调了一个函数。但实际上背后发生了这么多事阶段做什么参数序列化把 userId 打包成网络能传的格式建立连接跟服务器建立 TCP/UDP 连接发送请求把请求包发出去服务端执行服务器收到请求执行业务逻辑结果序列化把返回值打包返回响应把结果传回来反序列化把结果解成你要的对象这一套走下来可能几十毫秒也可能几百毫秒。网络不好的时候可能直接超时。二、URPC 和普通 HTTP/REST 有什么区别很多人以为RPC 不就是换个方式发 HTTP 请求吗不对。HTTP/REST 是面向资源的你请求一个 URL拿到一个资源。RPC 是面向方法的你调用一个远程方法就像调用本地函数一样。类型思维方式适合场景HTTP/REST请求资源公开 API、跨平台URPC调用方法内部服务、高性能URPC 是 HarmonyOS 提供的高性能远程过程调用。它不是简单的 HTTP 封装是一套完整的 RPC 框架。三、Client、Server 和远程方法URPC 的基本结构很简单Client 调用方Server 提供方中间是远程方法。这段代码解决什么问题定义远程方法。文件rpc/UserService.ets用途远程服务接口定义接入位置客户端和服务端共用import{rpc}fromkit.RemoteCommunicationKit;// 定义远程接口exportinterfaceIUserService{getUserInfo(userId:string):PromiseUserInfo;updateProfile(userId:string,profile:Profile):Promiseboolean;}客户端拿到这个接口调用的时候就像调用本地方法一样。但实际上调用会被框架拦截打包发到服务端。四、一次调用的完整生命周期完整的远程调用是这样的客户端调用getUserInfo(userId)框架拦截调用把方法名和参数序列化建立连接发送请求包服务端收到请求反序列化找到对应方法服务端执行业务逻辑服务端把返回值序列化把响应包发回客户端客户端反序列化拿到结果把结果返回给调用方。五、弱网环境为什么容易出问题URPC 特别强调弱网传输。为什么因为手机网络不是一直稳定的。网络情况问题Wi-Fi 信号差丢包、延迟高蜂窝网络切换连接中断、重连多径传输Wi-Fi 和蜂窝同时传选快的多径传输是什么意思就是 Wi-Fi 和蜂窝网络同时传同一份数据哪条路快走哪条。这样即使 Wi-Fi 断了蜂窝网络还在传不会整个挂掉。六、超时和异常传播为什么很重要很多人写 RPC 只处理成功这一种情况。不对。RPC 的失败情况太多了失败类型说明网络超时服务器没响应网络断开连接断了服务端错误业务报错序列化失败参数打包出错反序列化失败结果解不开每一种失败客户端都要能处理。不能网络一断整个应用就崩了。七、几个容易踩的坑第一个坑把远程调用当成本地函数。它不是本地的它有网络延迟会失败。第二个坑循环里大量细粒度 RPC。循环调十次十次网络往返太慢了。应该批量传。第三个坑接口幂等性没有设计。网络重试了服务器执行了两次业务就乱了。第四个坑客户端超时但服务端仍继续执行。客户端不等了服务端还在跑资源浪费。第五个坑网络重试导致业务重复提交。点一次提交网络不好重试结果提交了两次。第六个坑把网络断开当普通函数异常。网络断开是常见情况不是异常。第七个坑RPC 对象长期持有失效连接。连接断了还拿着用每次都超时。这次做远程调用最大的体会是RPC 看起来像本地函数但它本质是网络调用。你必须把它当网络问题来处理超时、重试、幂等、异常。每一个环节都有它存在的理由序列化把参数打包、连接管理管网络、超时控制防卡死、异常处理防崩溃。真正做的时候最容易忽略的不是 API 怎么调而是周边的工程问题重试策略、幂等设计、连接生命周期、弱网处理。这些才是 RPC 真正难的地方。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/13 13:31:48

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/13 16:11:45

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉