??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成在线电影,精品91在线,日韩精品2区http://www.aygfsteel.com/jb2011/我的最新工EMobileIMSDKQhttp://git.oschina.net/jackjiang/MobileIMSDKzh-cnMon, 16 Jun 2025 12:21:30 GMTMon, 16 Jun 2025 12:21:30 GMT60Web|页端即旉讯源码/IM聊天源码RainbowChat-Webhttp://www.aygfsteel.com/jb2011/archive/2025/06/13/451628.htmlJack JiangJack JiangFri, 13 Jun 2025 08:15:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/06/13/451628.htmlhttp://www.aygfsteel.com/jb2011/comments/451628.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/06/13/451628.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451628.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451628.html1、基本介l?/h1>

RainbowChat-Web是一套基?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">MobileIMSDK-Web的网늫IMpȝ。不同于市面上某些开源练手或淘宝售卖的demoU代码,RainbowChat-Web的品代码演化自真正运营过的商业?/span>Q其所依赖的通信层核心SDK已在数年内经q大量客户及其辐的最l用L使用和验证。RainbowChat-Web同时也是Ud端IM应用RainbowChat的姊妹品?/p>

 

2、品质说?/h1>

?源自真正q营的商业品:RainbowChat-Web的技术源于真实运营的商业产品?br />
?它不是个DemoQ?/strong>不同于市面上某些开源或淘宝售卖的demoU代码,RainbowChat-Web的品代码演化自真正运营过的商业品,其所依赖的通信层核心SDKQ即MobileIMSDK-WebQ已在数q内l过大量客户及其辐射的最l用L使用和验证?br />
?z、精点{优化、原生:RainbowChat-WebZ可能降?ơ开发时的上手门槛、兼Ҏ(gu)、可L、可l护性的隑ֺQ?span style="color: #ff00ff;">坚持不依赖Q何前端框?/span>Q?span style="color: #808080;">q些框架通常是指AngularJS、VUE、EmberJS、React{?/span>Q,q璞归真Q只使用原生JS+HTML+CSSQ?span style="color: #808080;">再无其它复杂?/span>Q,极大降低开发者的上手隑ֺ、兼Ҏ(gu)本,辑ֈ最z、最_、最灉|的目标(z、简单、回归本质的东西Q才能拥最强的生命?/span>Q?br />
截止目前Q?/strong>RainbowChat-Web努力保证在各Lpȝ、主浏览器、不同分辨率屏幕上的体验Q?/span>包括但不限于QChrome、Safari、FireFox、Edge?60览器、世界之H浏览器{?#9660;

3、运行演C?/h1>

?q行截图Q详见:?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">RainbowChat-Web前端功能截图?br />?演示视频Q详见:?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">RainbowChat-Webq行演示视频?/p>

4、功能简?/h1>

1?/em>支持文本消息、查?span style="color: #a0522d;">语音留言消息(?/span>App产品发?/span>)?span style="color: #a0522d;">囄消息?span style="color: #a0522d;">大文件消?/span>、查?span style="color: #a0522d;">短视频消?/span>(?/span>App产品发?/span>)?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">名片消息?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">位置消息、消息表情、快h息?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">消息撤回?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">消息转发{;
2?/em>支持一对一陌生?/a>模式Q?br />3?/em>支持一对一正式好友聊天模式Q?br />4?/em>支持多对?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">聊聊天模式Q?br />5?/em>完善?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">组信息理Q徏、退、解散、{让、邀诗踢人、群公告{;
6?/em>完整?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">注册、登陆、密码找回等{功能闭环;
7?/em>个h中心功能Q改基本信息、改个性签名、改头像、改密码{;
8?/em>支持查看个h相册、个音介l;
9?/em>完整的离U消?指o拉取机制Q?br />10?/em>完整的历史消?指o存取机制Q?br />11?/em>完整的好友关pȝ理:查找好友、发求、处理请求、删除好友、好友备注等Q?br />12?/em>以及其它未提及的功能和特性?/p>

5、技术亮?nbsp;

1Q?/em>轻量易用:U原生JS~写Q坚?span style="color: #ff8c00;">不依赖Q何前端框?/span>Q?span style="color: #808080;">q些框架通常是指AngularJS、VUE、EmberJS、React{?/span>Q;

2Q?/em>模块化设计:所有UI模块、数据逻辑均由独立装的JS对象理Q代码规范、低耦合Q有效防止代码复杂性扩散;

3Q?/em>览器跨域:所有AJAX接口均ؓJSONP实现Q百分百支持跨域Q?/p>

4Q?/em>通信代码解偶Q得益于高内聚的MobileIMSDK-Web工程Q实CIM功能逻辑与网l通信的解?/span>Q利于持l升U、重用和l护Q?span style="color: #808080;">q是l验不的IM产品做不到的Q;

5Q?/em>支持WebSocketQƈ非某些品中q在使用的过?#8220;长轮?#8221;技术,真正?#8220;x通讯”Q?/p>

6Q?/em>|络兼容性好Q核心层ZMobileIMSDK-Web技术,?span style="color: #ff8c00;">不支持WebSocket的情况下仍可很好地工作;

7Q?/em>断网恢复能力Q拥?span style="color: #ff8c00;">|络状况自动?/span>?span style="color: #ff8c00;">断网自动L的能力;

8Q?/em>L支持加密Q一个参数即可开?span style="color: #ff8c00;">SSL/TLS通信加密Q?/p>

9Q?/em>服务端慢io解偶QIM实例本n坚持不直接进行DB{慢io的读、写Q保证IM实时消息高吞吐和性能Q?/p>

10Q?/em>服务端逻辑解偶Q得益于MobileIMSDK-Web工程Q实C上层逻辑与网l通信核心的解?/span>Q底层数据通信全部通过低偶合的回调通知来实玎ͼ

11Q?/em>完善的log记录Q服务端使用log4js日志框架Q确?span style="color: #ff8c00;">每一关键步骤都有日志输出Q让(zhn)的q行调试更ؓ便利Q?/p>

12Q?/em>聊天协议兼容Q实C?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">RainbowChat-APP产品完全兼容的协议模型;

13Q?/em>消息收发互通:实现了与RainbowChat-APP产品的无~消息互通?/p>

6、支持的聊天消息cd

7、好友聊?/h1>

8、群聊聊?/h1>

9、发?#8220;名?#8221;消息

10、发?#8220;位置”消息

11?#8220;消息撤回”

12?#8220;消息转发”

12?#8220;消息引用”

14?#8220;@”功能

15、其它特性和l节

聊天Z方聊天对象信息显C:Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">查看视频Q?br />

消息送达状态图标显C:Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">查看视频Q?/p>



Jack Jiang 2025-06-13 16:15 发表评论
]]>Web端实旉信技术SSE在携E机业务中的实践应?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/06/13/451627.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Fri, 13 Jun 2025 07:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/06/13/451627.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451627.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/06/13/451627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451627.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451627.html</trackback:ping><description><![CDATA[     摘要: 本文由携E前端开发专家Chris Xia分nQ关注新技术革新和研发效率提升?、引a本文介绍了携E机前端基于Server-Sent EventsQSSEQ实现服务端推送的企业U全链\通用技术解x案。文章深入探讨了 SSE 技术在应用q程中包括方案对比、技术选型、链路层优化以及实际效果{多l度的技术细节,为类g用场景提供普适性参考和借鉴。该Ҏ(gu)设计目标是实现通用性,适用于各U网l架构和业务场景...  <a href='http://www.aygfsteel.com/jb2011/archive/2025/06/13/451627.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jb2011/aggbug/451627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-06-13 15:32 <a href="http://www.aygfsteel.com/jb2011/archive/2025/06/13/451627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>长连接网x术专?十二)Q大模型时代多模型AI|关的架构设计与实现http://www.aygfsteel.com/jb2011/archive/2025/05/22/451623.htmlJack JiangJack JiangThu, 22 May 2025 06:08:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/05/22/451623.htmlhttp://www.aygfsteel.com/jb2011/comments/451623.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/05/22/451623.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451623.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451623.html

本文来自哔哩哔哩通用技术团队分享,下文q行了排版优化和修订?/p>

1、引a

随着 AI 技术快速发展,业务?AI 能力的求日益增ѝ当 AI 服务面对处理大规模请求和高ƈ发流量时QAI |关从中扮演着臛_重要的角艌ӀAI 服务通常涉及大量的计Q务和讑֤资源占用Q此旉要一?AI |关负责协调q些h来确保系l的E_性与高效性。因此,与传l微服务架构cMQ我们将相关 API 理的功能(如流量控制、用户鉴权、配额计贏V负载均衡、API 路由{)集中攄?AI |关层,可以降低pȝ整体复杂度ƈ提升可维护性?/p>

本文要分享的是B站在大模型时代基于多模型AI的网x构设计和实践ȝQ希望能带给你启发?/strong>

* 相关阅读Q?/strong>?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">全民AI时代Q大模型客户端和服务端的实时通信到底用什么协议??/p>

技术交:

- Ud端IM开发入门文章:?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一就够:从零开发移动端IM?/p>

- 开源IM框架源码Q?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDKQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地址Ҏ(gu)Q?/p>

Q本文已同步发布于:http://www.52im.net/thread-4831-1-1.htmlQ?/a>

2、系列文?/h1>
  1. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专?一)Q京东京麦的生UTCP|关技术实跉|ȝ?/li>
  2. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q知乎千万q发的高性能长连接网x术实?/a>?/li>
  3. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q手淘亿U移动端接入层网关的技术演q之?/a>?/li>
  4. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q爱奇艺WebSocket实时推送网x术实?/a>?/li>
  5. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q喜马拉雅自研亿UAPI|关技术实?/a>?/li>
  6. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q石墨文档单?0万WebSocket长连接架构实?/a>?/li>
  7. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q小c_爱单?20万长q接接入层的架构演进?/li>
  8. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??QB站基于微服务的API|关??的演q之?/a>?/li>
  9. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q去哪儿|酒店高性能业务|关技术实?/a>?/li>
  10. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专??Q百度基于Go的千万l一长连接服务架构实?/a>?/li>
  11. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专?十一)Q揭U腾讯公|TGW|关pȝ的技术架构演q?/a>?/li>
  12. ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网x术专?十二)Q大模型时代多模型AI|关的架构设计与实现》(* 本文Q?/li>

3、AI|关技术概?/h1>

AI |关是一个用于统一接入和调度大语言模型QLLMQ服务的pȝQ支持多供应商、多模型、负载均衡调度的理。同时具备统一鉴权、Token 配额理、安全审计与可观能力,保 API 调用的安全性和E_性。负载均衡模块,能够Ҏ(gu)提供商多U\、多模型 ?API Key q行灉|路由Qƈ适用于多模型接入、多U户{复杂场景?/p>

4、整体架构设?/h1>

AI |关的整体架构和传统 API |关及其cMQ在数据面和控制面上有几乎相同的设计?/p>

实际?AI |关是衍生于之前微服务团队?API GatewayQ我们在 API Gateway 的基上做了一些针?AI 业务接口的特性优化,如无~冲区的h代理Q支持域名、服务发现等混合调度QAI 长响应旉h的优雅退出等功能?/p>

在此基础上我们用于 API Gateway 相类似的数据面、控刉分离的架构,控制面会变更后的网关配|准实时下发x据面节点。数据面节点识别配置有更新后在运行时会动态切换代理引擎至新的代理逻辑下,q保证老的代理逻辑会处理完当下被分配的h?/p>

在数据面中,我们对请求过滤器有两U模式的抽象Q请求过滤器和模型过滤器。请求过滤器作用于用L原始hQ这c过滤器往往被设计用于处理鉴权、限等逻辑。而模型过滤器作用于请求被转发臌模型Ӟ常用于模?API 的兼定w辑。比如模型发展中目前Ҏ(gu)度思?<think> 的标{֤理,推理引擎自定义参数的兼容修正{?/p>

除此之外控制面也会提?OpenAPI ?AI 模型供给团队上架模型Q新?API Key {日常运营能力。模型提供方可以在上架模型时支持为模型配|相应的 RPM、TPM 上限QƈҎ(gu)模型的推理引擎选择相应的兼容策略。也可以通过 OpenAPI 为单?API Key 授权相应模型{功能?/p>

5、鉴权认?/h1>

在鉴权机制中Q采用目前主?OpenAI SDK 兼容?API Key 认证Ҏ(gu)?/p>

Authorization: Bearer <YOUR_API_KEY>

?API Key 的认证基上还提供l粒度的权限控制功能Q允ؓ每个 API Key 配置可访问的模型范围Q以及对不同模型的设|不同的配额?/p>

另外支持灉|?API Key 有效期配|,用户可根据需求设|?API Key ?q期旉 ?不过期?/p>

6、配额管?/h1>

在配额管理体p里可以限制模型消费者的调用速率Q在q里主要参考了 OpenAI 的配额策略: RPMQ每分钟h敎ͼ?TPMQ每分钟 Tokens 敎ͼ?/p>

在这里可以按照ؓ每个用户分配不同模型?Token 配额Q或指定单位旉的请求数限制Q以保 AI 服务的高效运行ƈ防止出预算?/p>

同时我们q支持月l度?Token 配额Q业务按自然月进行预申P过预算时请求将被限制。对于接?AI 能力而言Q每个业务都需要提前申请预额度,避免带来难以负担的成本?/p>

7、多模型讉K

目前版本仅支持基?OpenAI API 的协议{发。以目前推理引擎发展和在U?AI 云服务而言Q兼?OpenAI API 协议已经成ؓ业界pQ在此基上我们只需要实现根据用户需求的模型名,择优选择一个相应模型的上游 API 提供商(公司自徏 IDC或公有云Q,q替换成相应服务商的 API Key ?Upstream 域名可以进行负载均衡?/p>

对于公司 IDC 自徏的模型服务而言Q我们l沿用基?discovery {服务发现技术来发现推理引擎节点Q直接将h包装调度臌些自建模型?/p>

8、模型负载均?/h1>

LLM API 的负载均衡和传统实时 API 的模式有很大的不同?/p>

传统 API 开发中Q?/strong>一ơ请求往往被设计成会极大概率地命中一块结果缓存,且缓?Key 的计都比较单,因此很多负蝲均衡都简单基于请求相应时间、连接数{等?/p>

?LLM 推理场景下:每个推理h都会带来|关本n难以评估的计时间和讑֤资源占用Q此时基?RPS、TTFB、连接数{负载均衡策略将不再适用?/p>

?AI |关的默认负载均衡策略中Q?/strong>我们主要Z单模型服务节点处?Token 的吞吐和时g能力Q在黑盒模式下评估节点的饱和度。除此之外,推理引擎自n和显卡其实也暴露了许多和执行队列相关的指标,l合q些指标同样预计能获得比传统负蝲均衡更有效的体验?/p>

另外Q?/strong>Z Prefix Cache 的节炚w择同样会是一个相当有效的调度{略Q但 Prefix Cache 的计能力往往需要外部服务来q行Q因?AI |关同样支持接入外置的负载均衡算法,通过前置?RPC 来让外置服务选择最合适的模型节点?/p>

9、多U户隔离

业务主要通过 域名 + API Key q行讉K大模型推理,可以通过域名q行理Ҏ(gu)的接口\由,q行配置转发到指?Model Provider 服务。如果需要进行多业务隔离Q只需要通过不同的域名访问ƈ配置不同的{发目标?/p>

10、可观测能力

从业务视角,主要分ؓ Gateway?Domain、Consumer、Provider、UserModel、UpstreamModel l度Q进行查询和观察h接口的可用率Q以?QPS、Latency?xx、Quota {指标?/p>

11、支持的API协议

11.1 概述

?AI |关中,我们主要?OpenAI 提供?API 作ؓ基础协议Q让开发者基?OpenAI SDK 实现各种业务场景Ҏ(gu)?/p>

目前支持?API 协议有:

  • 1Q?/em>对话式模型交互(CHAT_COMPLETIONQ;
  • 2Q?/em>通用文本向量接口QEMBEDDINGQ;
  • 3Q?/em>提示词模板(CHAT_TEMPLATEQ;
  • 4Q?/em>模型上下文协议(MODEL_CONTEXT_PROTOCOLQ??/li>

业务可以Ҏ(gu)自己不同的场景进行选择对应的协议?/strong>

11.2 对话式模型交互(CHAT_COMPLETIONQ?/h3>

对话式模型交互是最基础的协议,用于构徏h复杂逻辑的对话交互。同?API 支持上下文感知的对话Q得模型能够理解和响应多轮交流Qƈ在对话中保持合理的逻辑和语境一致性?/p>

对话接口?LLM 与现实世界沟通的重要渠道Q大?AI 需求实际上是在与模型q行一轮或多轮对话实现的?/p>

例如业务希望通过 LLM 排查U上故障的潜在原因,单来说就是将应用的各可观测指标、故障期间的日志记录或应用上下游的变更记录以对话形式告知 LLMQƈ?LLM 输出一D便于程序理解的l果表达模式Q让 LLM 从模型数据中计算出符合直觉潜在故障原因?/p>

11.3 通用文本向量QEMBEDDINGQ?/h3>

通用文本向量QEMBEDDINGQ接口的核心功能是将文本转化为高l向量,捕捉其语义特征。这在需要进行大规模信息索、匹配和知识理的场景中ؓ关键?/p>

11.4 提示词模板(CHAT_TEMPLATEQ?/h3>

提示词模板是一U结构化的对话生成方式,允许业务通过讄预定义的模板来生成系l化的回复。这U方式将语言模型的生成能力与模板化结构相l合Q业务能够以普?API 的方式进行请求交互,q可以更集中化地控制生成内容的样式和格式?/p>

同时我们也支持内嵌函敎ͼ以方便在提示词模板进行处理内容:

  • 1Q?/em>len(v any) string
  • 2Q?/em>jsonify(v any) string
  • 3Q?/em>make_json_object(v ...any) map[string]any
  • 4Q?/em>slice_to_index_map(v any, startBy int) map[int]any

以评论内容翻译的场景Q?/strong>

- path: /v1/reply-to-en

  protocol: HTTP

  timeout: 300s

  middlewares:

  - name: v1_chat_template

    options:

'@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.ChatTemplateConfig

      provider: bilibili

      model_name: index

      prompt_template: |

        你的dQ以下给定文本是一个B站视频的相关文本信息Q可能ؓ标题、简介、弹q或评论Q请你将l定的文本逐条译成英文。输入ؓ一个json格式Qkey为序Pvalue为待译的弹q,一共有{{ len .reply_list }}个文本。示例如?

        输入: {"1": "xxx", "2": "xxx"}

 

        输出: {"1": "xxx", "2": "xxx"}

 

        注意Q用{dyn:xxx}W号包裹的是囄引用Q不需要翻译,直接保留。用[xxx]包裹的是表情W号Q不需要翻译,直接保留。现在请Ҏ(gu)上述要求完成如下片段的翻译,输出一共{{ len .reply_list }}个翻译后的结果,直接输出译后的英文Q不要进行Q何解释?/p>

 

        输入: {{ jsonify (slice_to_index_map .reply_list 1) }}

 

        输出:

提示词模版接口实际上是基于对话接口的一U高效对接模式。众所周知Q自 OpenAI 发布 ChatGPT 后,提示词工E(Prompt EngineeringQ本w被当作一U技术\U而提出。提C工程主要x提示词开发与优化Q帮助用户将大语a模型用于各场景和研究领域。研Ih员可利用提示工程来提升大语言模型处理复杂d场景的能力,如问{和术推理能力?/p>

对于接入 LLM 的业务研发而言Q他可能本n不具备很强的提示词工E能力;甚至提示词的优化本n也取决于模型的P代更新。因此对于解决特定领域的业务场景QAI 工程师往往会基于最优模型写出最_և的提CQ通过 AI |关的提C模版接口发布。业务提交简?JSON KV 对后Q渲染出最有效的完整提CQLLM Z有效提示词输出最_的结果?/p>

11.5 模型上下文协议(MODEL_CONTEXT_PROTOCOLQ?/h3>

MCP (Model Context ProtocolQ模型上下文协议) 是由 Anthropic ?2024 q底推出的一U开攑֍议,旨在让大型语a模型QLLMQ能够以标准化的方式q接到外部数据源和工兗该协议抽象q标准化?Resources、Prompts、Tools {资源及其接入方式,允许 LLM Client 应用以一致的方式q接到各U数据源和工P如文件、数据库、API {?/p>

配置转发到注册中心的 MCP 服务Q?/strong>

- path: /example-mcp/*

  protocol: HTTP

  timeout: 300s

  middlewares:

  - name: v1_mcp_server

    options:

      '@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.MCPServerConfig

      proxy:

        name: example-mcp

        upstreams:

        - url: 'discovery://infra.example.example-mcp'

- path: /example-mcp/*

  protocol: HTTP

  timeout: 300s

  middlewares:

  - name: v1_mcp_server

    options:

      '@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.MCPServerConfig

      proxy:

        name: example-mcp

        upstreams:

        - url: 'discovery://infra.example.example-mcp'

12、MCP市场与API接入

MCP 市场其实是一个公司内部的资源׃n和协作^台。简单来_它可以看作是企业内的型“App Store”Q专门用来提供各U服务和资源的接入入口。可以让业务通过q个q_L获取、整合、用这些资源,使业务对接更加地单?/p>

用户可以把自q MCP 服务快速发布到市场上,q且接入?MCP Gateway 后即可用?/p>

当前?MCP 协议中主要有两个端点Q?/strong>

  • 1Q?/em>/sseQ是一?Events 长连接通知协议Q用于实旉知资源信息的变_
  • 2Q?/em>/messageQ用?JSONRPC 通信端点Q能够以 JSONRPC 方式q行通信交互?/li>

而我们在 MCP Gateway 中,我们在企业内部将通过l一的域名进行提供业务接入,q且q行理每一?MCP服务的接口,例如Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">https://mcp.example.com/logging-mcp?/p>

同时?MCP服务中,需要用相同的根\?/logging-mcpQ因为在 MCP 协议中,会先q接?/sse 端点Q再q回对应?/message 端点信息Q所以请求\径需要保持跟|关一致?/p>

13、本文小l?/h1>

AI |关通过l一接入、鉴权、配额管??模型调度支持Qؓ大模型提供了高效、安全、定制的q接能力。同Ӟ支持?OpenAI 协议、提C模板 ?MCP 市场{功能,q一步扩展了 AI 技术在企业中的应用场景Qؓ业务接入和资源整合提供了极高的便利性?/p>

14、相兌?/h1>

[1] Web端即旉讯技术盘点:短轮询、Comet、Websocket、SSE

[2] SSE技术详解:一U全新的HTML5服务器推送事件技?/a>

[3] |页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

[4] 搞懂CWeb端即旉讯技术一文就够:WebSocket、socket.io、SSE

[5] 全民AI时代Q大模型客户端和服务端的实时通信到底用什么协议?


Q本文已同步发布于:http://www.52im.net/thread-4831-1-1.htmlQ?/a>



Jack Jiang 2025-05-22 14:08 发表评论
]]>红书APP的全新`蒙NEXT端性能优化技术实?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Mon, 19 May 2025 03:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451622.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451622.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451622.html</trackback:ping><description><![CDATA[<blockquote style="background-image: none; border-top: none; border-right: none; border-bottom: none; border-left-width: 3px; border-left-color: #e2dfdf; margin-right: 0px; margin-left: 0px; background-color: #eeeeee; width: 805.112px; color: #555555; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;"><p style="margin-top: 10px; margin-bottom: 10px;">本文来自QCon全球软g开发大会王劲鹏的技术分享,下文q行了排版优化和修订?/p></blockquote><h1>1、引a</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">性能和体验在 iOS / Android 双端场景下已l是一个较为成熟的话题Q但随着鸿蒙 OS 的发展,端侧开发者需要更多的x多端场景的差异性?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>本次分n的主题是红书在鸿蒙q_上的工程实践Q主要聚焦于性能优化和探索?/strong>Q?strong><span style="color: #ff00ff;">* PPT讲稿原文下蝲Q?/span></strong>?span style="color: #000080;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;"><span style="color: #000080;"><span style="color: #3366ff;">红书`蒙OS下的性能优化探烦与实?PPT)[附g下蝲</span>]</span></a></span>》)</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">先介l一下自q背景。之前一直从事大前端领域的工作,主要专注于跨端和容器化方案。也曾手写过一个跨端框Ӟ名ؓ DoricQ它可以Ҏ(gu) React Native、Vue Native ?Flutter {。Doric 框架在落地时表现良好Q还支持了一些自研的 3D 引擎Ҏ(gu)。除此之外,我还有播攑֙内核研发l验Q以及大前端常规体系?CI/CD 水U的工程l验。未来,我将持箋x大前端的演进Q尤其是鸿蒙q样的多端和跨端q_?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">?2023 q开始,鸿蒙的优势愈发明显,已经成ؓ可与 iOS、安卓媲的W三大移动操作系l。从一些抖韌频中也可以看出,鸿蒙在流畅性方面甚臛_某些层面上超q了 iOS?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>今天的分享内容分为四个部分:</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>介绍整个历程和背景;</li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>介绍鸿蒙 OS 的相兌力和红书在该^C的优化实践;</li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>通过鸿蒙 OS 提供的性能验证工具Q展C小U书在`蒙^C的性能优化验证Ҏ(gu)、优化后的性能提升以及具体的收益和l果Q?/li><li style="list-style: inherit;"><strong><em>4Q?/em></strong>ȝ和展望?/li></ul><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095629609-1968841729.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><p style="margin-top: 10px; margin-bottom: 10px;"><strong>技术交:</strong></p><div><div><div><p style="margin-top: 10px; margin-bottom: 10px;">- Ud端IM开发入门文章:?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一就够:从零开发移动端IM</a>?/p><p style="margin-top: 10px; margin-bottom: 10px;">- 开源IM框架源码Q?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDK</a>Q?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地址Ҏ(gu)</a>Q?/p></div></div></div><p style="margin-top: 10px; margin-bottom: 10px;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Q本文已同步发布于:http://www.52im.net/thread-4821-1-1.htmlQ?/a></p></div><h1>2、内容分享和整理</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">分n者:王劲鹏,内容审校和编辑:Kitty?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095636084-475085880.jpg" alt="" style="border: 0px; max-width: 100%; height: auto !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> <strong>王劲鹏:</strong>红书`蒙工E师。目前主要负责小U书鸿蒙版的研发和工E徏设,曾从事过大前端架构设计、研发效能等方向的工作,在终端架构演q、性能优化以及跨端容器和动态化{方面具备长期实践及深厚l验Q持l关注大前端技术体p,鸿蒙以及多端的演q?/p></div><h1>3、版本历E和开发背?/h1><h3>3.1 红书P代历E?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>?2023 q年中开始,鸿蒙?#8220;千帆计划”正式启动Qƈ很快升?#8220;鸉K计划”?/strong>红书作?7 家头部合作商之一Q率先支持了鸿蒙Qƈ?2023 q?11 月中旬上U了一个基版的 beta 版本 APP。这个版本主要包含笔记浏览和视频W记览两大功能Q以及一些简单的个h讄。当Ӟ红书的动作非常q速,可以说是头部应用厂商中对华ؓ支持最为积极的品牌之一?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在整个`飞计划中Q我们规划了三个核心里程:</strong>除了 2023 q?11 月的 beta 版本外,q包?2024 q?6 月的 HDC 版本?2024 q?9 月的商用版本。HDC 版本主要是针对华为正式宣发`?3QHarmonyOS NextQ开发者测试的情况。在 HDC 版本中,我们上线了许多小U书Ҏ(gu)的存量功能,包括视频拍摄、图文拍摄以及多讑֤协同{创新特性。而到?2024 q?9 月的商用版本交付Ӟ红书的核心功能已经基本与主端对齐。考虑到`蒙的开发周期仅有一q_红书的鸿蒙 APP 在这一q中要对齐开发了十年甚至十几q的安卓?iOS 版本Q难度和压力都非常巨大?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">?2024 q?9 月,除了寚w双端的所有功能外Q我们还开发了许多其他功能Q包括华为支持的创新Ҏ(gu),例如拖拽——用户可以图片拖拽到中{站或艺{场景。此外,商用版本q支持了用户呼声较高?HDR ?Moonlight Photo 拍摄能力?/p><h3>3.2 U血鸿蒙与安卓的区别</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我从几个l度来对比一下纯血鸿蒙和安?OS 的主要区别?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>内核架构U血鸿蒙的本质是微内核,而安卓是Z Linux 宏内核?/strong>微内核只提供基础的内存和文g理能力Q驱动和其他pȝ能力都在 OS 之外。这样做的好处是pȝE_性极高,即应用崩溃Q也不会D整个pȝ崩溃Qsystem crashQ。而在 Linux 宏内怸Q应用的不当行ؓ可能会直接导致系l崩溃?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>多设备适配鸿蒙目前支持多种讑֤cdQ?/strong>包括 Mate 60 Pro q样的直板手机、Mate X5 或非凡大?XT q样的双折叠和三折叠手机、^板电(sh)脑、R机,甚至华ؓ正在研发的`?PC。`蒙真正实CcM iOS 的多端整合能力,通过一套代码实现多端部|Ӏ其工程体系和架构支持单 HAPQHarmony Ability PackageQ多 HSPQHarmony Service PackageQ模块,指o集适配?ARM64 {多U架构,开发者只需Ҏ(gu)讑֤寸适配 UI 展示卛_。例如,?2024 q?9 ?的华为全场景讑֤发布会上Q余承东展示了小U书在从直板机到双折叠、三折叠讑֤上的适配能力Q完全实C响应式编E,不同讑֤形态下有不同的览体验?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>开发工具和~程模型鸿蒙的开发工具和~程模型与安卓差异较大?/strong>鸿蒙更类g Flutter 的嵌套型容器布局Q而不是安卓那U面向对象的开发方式。在语言层面Q`蒙完全封装了底层逻辑Q采用类似前?Flux 单向数据模式,通过数据变更驱动 UI h。这U模式类g前端 Redux ?MobX 框架中的 state 理 ?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>?2024 q?10 ?8 日公开始,鸿蒙的应用生态正在逐渐J荣?/strong>不过Q目前像微信q样的应用还处于抢先体验阶段。相比之下,安卓的生态已l相Ҏ(gu)熟。`蒙的最l目标是打造全场景讑֤生态,늛所有终端设备,以及Z OpenHarmony 内核开发的物联|终端。它q支持多U芯片体p,例如瑞芯?RK3568 {?/p><h3>3.3 红书`蒙应用架构层U?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">红书经q一q的q代Q其整体应用架构已经基本成熟。目前,整体代码量接q?200 万行Q达C一个较高的复杂度。在一般成熟的 APP 架构中,通常会包含一些基底层能力Q例如网l、磁盘存储、埋点体pRAPMQ应用性能理Q系l,以及一些通用lg和能力。对于`蒙^収ͼ红书还具备一些特D的公共通用能力?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>我们开发了一?#8220;一多框?#8221;</strong>Q这是一个支持一套代码多端部|的具体框架体系。通过q个框架Q我们实C多设备的断点控制功能。用户可以根据设备的寸和类型进行适配Q因为华备支持多端投屏。例如,用户可以在手Z览红书,然后内Ҏ(gu)屏到车机上。比如用戯C一辆问界汽车,可以在R内通过车机l箋览手机上的红书内容,q种场景在驾驶时其有用?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">除了底层框架Q对于上层业务,<strong>红书还有一套自研的lg库方?/strong>Q这套组件库承蝲了上层业务的多种功能Q包括图文笔记、视频笔记浏览,以及一?Hybrid 容器能力。小U书本质上在跨端开发中仍然使用?React NativeQRNQ和c?Web 技术。RN 引擎由华为内部合作提供,采用了自研的 ohos Ҏ(gu)Q用于解?React Native ?bundle ?JS 加蝲以及渲染问题。此外,q包括品定制层Q这里涵盖了所有相关的讑֤适配内容?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095644107-55583946.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong> 3.4 性能优化与实?/strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">目前Q安卓和 iOS 在性能优化斚w已经相当成熟Q包括如何分析性能热点问题、有哪些工具以及最?jng)_늭。然而,对于鸿蒙来说Q它是一个全新的pȝ。直?2024 q年中,鸿蒙的稳定性和畅性都q存在一些问题。这里重点讲q小U书?2024 q与华ؓ一赯行了哪些实践Q以提升应用的性能和用户体验?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我们定义了一个性能指标场景。这个指标体pL红书与华ؓ共同探讨的结果,因ؓ华ؓ有一个性能工厂Q它Ҏ(gu)个应用的评都有一?S 标标准。小U书与华ZL定了针对红书场景需要观的具体指标。性能优化的核心是慢函数指标,它主要包含两部分Q过E时长和应用体验的流畅性?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>q程旉主要包含以下三点Q?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong><span style="color: #800000;">冷启动时长:</span>q是用户最兛_的指标之一Q即从点d用图标到应用完成动画q展C第一帧的旉。对于多数应用,首页通常有缓存机制。例如,红书会~存用户上次h的笔讎ͼ淘宝会缓存用户上ơ浏览的商品内容Q?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong><span style="color: #800000;">场景完成旉Q?/span>指完成某个特定场景所需的时_</li><li style="list-style: inherit;"><strong><em>3Q?/em></strong><span style="color: #800000;">应用响应旉Q?/span>指用h作界面后Q界面真正发生变化的旉Q即响应时g?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">畅性方面,最基础的观指标是q_ FPSQ率)Q包括丢帧数、最大连l丢帧数、丢帧卡次C及卡率?strong>卡顿率可以通过量化计算得出Q?/strong>当一个场景中出现丢Ӟ丢的时长与场景L长的比值即为卡率Q它是一个小?1 的百分比数倹{?/p><h3>3.5 OS 能力 & 优化实践</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">首先Q针?IO 场景Q我们进行了相应的优化?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>鸿蒙 OS 的系l能力主要分Z下三个方面:</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>q行化能力`?OS 提供了两Uƈ行化能力QWorker ?TaskPool。Worker cM于传l的U程模型Q每?Worker 都有自己的内存空间和执行单元Q支持通过消息QmessageQ进行通信。TaskPool 则类g协程或线E池Q能够动态管理线E数量,支持标记?@concurrent 的函数直接在d池中调度和运行。这两种机制都支持线E间隔离Q内存不׃nQ?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>多线E通信和数据传输在多线E通信斚wQ`?OS 支持序列化数据传输和Z消息QmessageQ的通信机制。此外,q引入了事g发射器(EmitterQ用于系l事件的发布和订阅。这U机制允许线E间通过消息传递来实现复杂的交互逻辑Q?/li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>同步转异步机刉`?OS 支持Z Promise 的异步编E模型,包括 async ?await 语法Q以?then ?catch Ҏ(gu)。这U机制能够有效提升应用的响应性和用户体验?/li></ul><h1>4、ƈ行化能力</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在ƈ行化能力斚wQ`?OS 提供了两套基实现方式。开发者可以通过 RTSQ运行时pȝQ实现ƈ行化Q也可以通过底层库(?C++ 标准库中的)实现。不q,如果完全依赖底层库,可能会导致开发效率下降。ؓ了满业务需求,鸿蒙 OS 在年初引入了 Worker ?TaskPool 能力。Worker cM于传l的U程模型Q每?Worker 都有独立的内存空间和执行单元Q支持通过消息q行通信。消息可以包含可序列化的数据Q也可以通过指针直接q移数据。TaskPool 则类gU程池,能够动态管理线E数量,支持标记?@concurrent 的函数直接在d池中调度和运行。与安卓q_的线E池不同Q`?OS ?TaskPool 会根据硬件条件和d负蝲动态调整线E数量。这U机刉免了安卓q_中因U程池数量过多而导致的pȝ资源消耗问题?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>接下来我们对比`?OS ?Worker q行化能力和安卓端的相关Ҏ(gu)?/strong>从多个维度来看,Worker 本质上不推荐手动创徏Q而是通过pȝ配置 build-provider.json l定 ETS 文g来实现创建。这一点与安卓端ƈ无明昑ַ异,安卓端可以通过 THREAD {方式启动线E?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在`?OS 5.0 以下版本Q如 4.2 版本Q中Q主要运行的仍然是安卓系l。这U情况下Q安卓线E数量存在上限,q对应用开发者来说是一个挑战。如?SDK 集成q多Q线E数可能标Q进而导致应用被pȝ强制l止Q或出现业务场景异常崩溃{稳定性问题?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>数据传输斚wQ?/strong>鸿蒙 OS Z优化 Worker 的性能和负载,?Worker 的数量和单个 Worker 的传输上限进行了限制。`?Worker 的单个传输上限类g安卓中的 Binder 机制Q也存在cM的传输限制。不q,安卓U程通常没有严格限制Q因为线E本质上是一个内存拷贝过E,除非开发者通过指针{方式自定义U程间数据传输?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在传输格式上Q?/strong>鸿蒙 OS 支持通过 Sendable 接口q行数据传输。Sendable 是一U注解方式定义的数据l构Q具有传染性,卛_果一个类被标Cؓ SendableQ其兌属性也必须?Sendable cd。`?OS 支持基础数据cdQ如 number、stringQ和集合cd作ؓ Sendable 传输的内宏V对于跨模块调用Q`?OS 不允?Worker ?HAP 或跨 HSP 调用。相比之下,安卓应用通常q行在一个或多个 Dex 文g中,允许?Dex 或跨模块的线E间调用?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>TaskPool cM于双端的协程概念Q是一U轻量U程Q仅存储函数?/strong>不过QTaskPool 与协E有所不同Q它独立于Q务维度,且Q务执行时长有限制Q超q?3 分钟会被pȝ自动回收Q。安卓^台可以通过 ASM 插桩技术对U程的创建和执行q行监控和优化,但轻量U程或协E的实现通常依赖于线E池或协E机制?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">TaskPool 中的d默认支持数据转移QtransferQ,不支持拷贝。此外,TaskGroup 不支?SDK 初始化包的加载。某些同学习惯在异步U程中触?SDK 的行为,在`?OS 上可能会?TaskPool 生命周期l束而导致变量被释放?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>关于q行化数据传输的 Sendable 概念Q?/strong>Sendable 通过pȝ提供?SharedHeapQ共享堆Q实C输。共享堆与本地堆Qlocal HeapQ的区别在于Q共享堆支持 Sendable 化数据的传输Q而本地堆则需要序列化。共享堆的管理和控制耗费了华Z家大量时间和_֊Q其中还涉及复杂的异步锁Qasync lockQ机制。在 RTS q发实例期间Q包?Worker、TaskPool {)Q数据可以通过 Sendable 传递,?Worker 需要用单独的 API。TaskPool 则完全支?Sendable 的直接传输。这U异步锁机制允许?TaskPool ?Worker 中锁定其他Q务中的某些函敎ͼ实现U程间的同步Q类g安卓中的 synchronized 或其他锁机制?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095652084-1773569795.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>5、小U书典型q行化场?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>红书在一些典型化场景中已l实Cq行化处理?/strong>例如Q网l请求是一个典型的耗时操作Q因求过E中涉及验签和安全能力的处理Q这些操作如果在ȝE中同步完成Q可能会D应用掉。当用户滑动Ӟ掉现象会非常明显,q通常是由于大量计引L。ؓ了解册一问题Q我们采用了 Worker 化的方式Q将q些操作Ud Worker U程中,从而避免主U程的卡ѝ?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在进行埋Ҏ(gu)Q可能会涉及数据库的 IO 操作Q这些操作也不徏议在ȝE中执行。通过这些操作放?Worker U程中,可以有效避免对主U程的媄响?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">针对双列布局中的囄和资源预加蝲Q我们采用华研的 RCP |络解决Ҏ(gu)Q类g HTTPQ,通过 Worker U程在远端进行下载,q在完成后将l果q回CU程。此外,TaskPool 的应用场景也非常q泛Q例如文件上传、多媒体操作以及启动d的编排等。TaskPool 的优势在于轻量化Q避免了U程上下文切换带来的不必要耗时?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>关于冷启动和首刷场景的优化?/strong>q部分主要包括两个方面:模块的懒加蝲和动态组件的复用池。懒加蝲是应用开发中常见的优化手D,cM于安卓端?class order 机制。当应用不需要某个类Ӟ可以延迟加蝲该类Q直到真正需要用时才加载。这U方式可以显著提高冷启动阶段的代码加载效率,从而大q降低冷启动旉?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>动态组件和lg复用池则是ؓ了解?UI lg重复创徏的问题?/strong>在应用中Q可能会有多U相同类型的 UI lgQ例如小U书中的W记lgQ。ؓ了避免重复创建带来的开销Q我们希望在q行时尽量复用已有的lgQ而不是频J地创徏和销毁?/p><h1>6、类前端视角下的模块懒加?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>我们通过特定的分析工具对懒加载进行了深入分析?/strong>如图所C,我们能够识别出启动过E中加蝲的各U模块,包括 RNOHQReact Native on HarmonyQ、Web engineQ网引擎)、Red PlayerQ播攑֙Q等lg。这些模块的加蝲q程涉及到多?so 文gQ即׃n对象文g?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095658657-2113307207.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> 通过自上而下的分析方法,我们可以清晰地看到每个模块加载的具体耗时。进一步分析这?so 文g?RTSQ运行时pȝQ的兌Q以及它们所引入?Napi ?TS 文g。我们进行了懒加载潜在对象的分析Q发现许?RTS 实际上ƈ不需要的cL件已l被加蝲。这是因为开发者在~写代码Ӟ可能q未充分考虑到导入一个类或方法对应用启动延迟的媄响?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Z优化q一q程Q我们的目标是减字节码中需要加载的cL件数量,从而加快应用的冷启动速度。华为提供的~译器能够将 RTS ~译?Ark bytecodeQ方舟字节码Q,q是一U高效的字节码格式。通过减少需要加载的cL件数量,我们可以显著提高应用的启动速度?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">华ؓq提供了一U懒加蝲的导入方式,只有在真正需要用某个类Ӟ它才会被加蝲。这U懒加蝲机制有助于减应用启动时的资源消耗。这引发了一个问题:Z么华Z默认采用全懒加蝲方式Q即只有在用时才加载类文g呢?我已l将q个问题反馈l华为,q且pȝ侧可能会考虑在未来的版本中默认采用懒加蝲方式Q同时仍然允许用h动选择非懒加蝲的方式进行类文g的加载?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095706195-1478026318.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>7、动态组?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在小U书的首场景中Q笔记卡lg在多个场景中被复用?/strong>Z避免重复创徏 UI D的性能消耗,我们采用了动态组件的概念。动态组件的核心原理是利用占位符来gq组件的创徏Q这?Android 开发中使用 Stub 模式的概늛伹{在q种模式下,可以使用一个代理对象(stubQ来代表未初始化的lgQ从而gq组件的创徏q程。当真正需要渲染组件时Q再渲染内容填充进去,从而避免每ơ调用构建函敎ͼ?buildQ时的耗时?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">占位逻辑通过pȝ?API 实现Q涉及到 NodeContainer ?NodeController 的绑定关pRContainer ?Controller 一一映射Q由 NodeCore q行理。Container 仅管理当前展现的内存部分Q用完毕后需要将其放回池中进行回收和再利用。以冷启动首刷ؓ例,在启动阶D可以先获取盘上的W记内容Q然后在 BuilderNode 中预先创建多?Image lg。这P在等待网l或推荐接口响应ӞImage lg已经创徏完毕Q从而在首页h时可以立即用这些组Ӟq对于提高首刷非常有益?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095713990-2006155962.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> 对于lg复用池,当动态组件不再用时Q需要将其返回到lg池中。对于自定义lgQ通过 NoteContainer 占位方式Q由 NodeController q行理。在需要创建子lgӞ先在 NodePool 中查找,如果找不刎ͼ则创建新lgQ如果找刎ͼ则尝试复用。流E图展示了从 Container 装蝲 NodeItem 开始,通过 NodePool 查找Q如果找到则q行条g判断和复用?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">lg的新建和复用q程中,如果扑ֈ对应?NodeItemQ则调用 build Ҏ(gu)q更新自定义lg的状态,完成复用。如果有对应?NodeItemQ可以直接通过 update 函数更新内部状态ƈh UI。但要注意,update Ҏ(gu)可能会因状态变量过于复杂而导致更新gq,出现囑փD媄。因此,需要拆?stateQ其够小Q以保状态变更到通知 UI 的时间羃短,消除D媄?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我们的策略是优先?NodePoolQ节Ҏ(gu)Q中查找可用?NodeItemQ节炚wQ。如?NodePool 中存在可用的 NodeItemQ我们就直接使用它,q过 getNode Ҏ(gu)q行 item l定Q随后更新其状态以实现复用。如?NodePool 中没有找到对应的 NodeItemQ那么我们将通过 makeNode Ҏ(gu)调用 build 函数来创建新的节炚w?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">完成lg的复用后Q我们需要将q些lgq回到缓存池中,以便在未来可以再ơ用。这个过E涉及到 NodeContainerQ节点容器)?NodeControllerQ节Ҏ(gu)制器Q的销毁,q将 NodeItem 重新攑֛ NodePool 中。ؓ了更有效地管理缓存,业务层可以利?LRUQ最q最用)法Q或者`蒙系l提供的 LRUCache ?LiUHashMap {数据结构,来自定义~存的大,从而优化组件的复用和缓存策略?/p><h1>8、滑动类场景</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在小U书应用中,滑动cd景非常普遍,包括推荐늚子频道、个人页中的收藏点赞以及用户自己发布的笔讎ͼq有搜烦l果中的搜索结果和用户商品{,q些都是双列滑动场景。这些双列滑动场景占据了红书用户体验的 90% ?95%Q因此,滑动体验的流畅性对于用L整体体验臛_重要?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>Z提升滑动场景的流畅性,红书采用了 RCP 框架来优化网l资源的获取?/strong>RCP 是华为提供的一个系l组件能力,主要解决|络资源获取效率问题。通过 RCPQ开发者可以在需要时发v|络hQƈ自定义资源的写入地址Q如文g?ArrayBuffer。RCP 负责高效地将资源写入指定位置Q而在不需要时Q可以取?RCP hQ从而优化资源管理?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095720506-16141495.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> RCP 的核心能力在于能够取消请求,q对q场景q行了优化,其徏联过E优?HTTP 1.1 ?2.0。基?RCPQ小U书q应用了华ؓ俄研所提供?Prefetch Ҏ(gu)。Prefetch Ҏ(gu)在瀑布组件的可见区变更时Q通过 worker U程Q如 prefetched workerQ启动资源获取,当不可见时关闭,从而优化快速滑动场景,减少不必要的带宽消耗?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在快速滑动过E中Q有?item 可能短暂消失Q对于双端场景,|络h可能已经发出且在途,无法取消Q导致带宽浪贏VPrefetch ?RCP l合的方式可以优化这U快滑场景,防止真正惌看的内容出现白块。Prefetched worker U程理多个 RCP hQ每个请求都有完整的生命周期。当通过 RCP h获取到所需资源Ӟ会通知ȝE,ȝE根据地址加蝲资源?Image lg或占位符 RQI lg中?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在小U书的开发过E中Q我们遇C一些性能热点问题Q这些问题大多是通过 Code LinterQ代码检查工P出来的。由于开发节奏快Q开发者在~写代码时可能难以关注到性能问题Q因此需?CIQ持l集成)查工h辅助查?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>常见的性能热点包括Q?/strong></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>1Q?/em></strong><span style="color: #800000;">在列表场景中频繁使用?LadyForEach lgQ需要指?key 以实现列表复用?/span>如果开发者忘记指?keyQCode Linter 会报错提C;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>2Q?/em></strong><span style="color: #800000;">?onClick ?onVisible {函C~写I?callbackQ回调函敎ͼ?/span>当这些空 callback U篏C定数量(如几百个或上千个Q时Q可能会严重拖慢应用性能。Code Linter 可以扫描c问题;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>3Q?/em></strong><span style="color: #800000;">未?TaskPool 处理|络资源?/span>例如QImage Bitmap 直接传?URL q行同步加蝲Q当|络d时会D UI U程卡顿Q?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>4Q?/em></strong><span style="color: #800000;">复杂?ETS lg在列表场景下未实现重用?/span>未设|重用的 ETS lg在列表滚动时需要重新构建,非常耗时。组件嵌套层U过׃会导致性能问题。在安卓端,布局查器容器嵌套不超q四层;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>5Q?/em></strong><span style="color: #800000;">使用 JSON.stringify q行对象序列化?/span>JSON.stringify 有一定耗时Q尤其在处理 100KB 左右的数据时Q可能需?10 毫秒左右。Code Linter 会提C部分性能问题Q但是否需要{异步U程需要开发者自行判断;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>6Q?/em></strong><span style="color: #800000;">调用 Image ?syncLoadQ同步加载)?/span>在某些场景下Q如转场动画Q需要同步加?image 以保证连贯性。但如果 image 是非盘资源Q如|络资源Q,会导致卡帧。Code Linter 可以扫描c问题;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>7Q?/em></strong><span style="color: #800000;">关于~译器的优化?/span>ETS lg应避免嵌套过深。如果嵌套过深,可以每层函数通过pȝ?builder param ?builder 函数转换。?@builder 注解标识的函C在编译期间与 ETS 代码整合Q从而提高编译器优化效果?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Code Linter 支持全量扫描和基?Git DIFF 的增量扫描,但目前华为的 Code Linter q不能与 Git Prehook 兌Q导致无法在水U上自动查。虽?CI 查阶D已?Code LinterQ但本地代码提交阶段仍需手动q行脚本Q无法实现自动检查。我们正在催促华册一问题?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095727349-1682226898.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> </p></div><h1>9、UI 重蝲场景分Ҏ(gu)</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在处?UI 重蝲场景Ӟ我们采用了一U称为分帧方案的Ҏ(gu)?/strong>分q个术语的含义是Q当应用在一帧内无法完成所有绘制工作,或者在多内都无法完成Ӟ会导致屏q卡现象。尽用户可以看到画面,但却无法q行滑动或操作。在q种情况下,分Ҏ(gu)显得尤为合适。虽然分帧方案可能看h不是最优雅的解军_法,但它实能够有效地解x能问题Q应用性能辑ֈ预期标准。分帧方案虽然看似是一U应急措施,但它能够帮助应用性能达标?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>分Ҏ(gu)的流E大致如下:</strong>假设我们有数?a、b、c 需要渲染,未采用分帧方案前Q数?a、b、c 会同时到辑ƈ触发状态变_q而驱动整?UI q行h。这会导致在一帧内需要绘制大?UI lgQ从而媄响应用性能。ؓ了解册个问题,我们采用分Ҏ(gu)Q将数据 a、b、c 拆分开Q分别在不同的中进行渲染。例如,数据 a 在第一帧中渲染完成后,通过调用宏观指o让其q入下一阶段Q然后在下一帧中更新数据 bQ依此类推?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095737895-546186029.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> </p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在小U书的图文笔记场景中Q分帧方案得C应用?/strong>当用户在首页的双列场景中点击一笔记进入笔记详情页Ӟq个q程涉及到许多组件的加蝲。我们可以将q些lg拆分成不同的帧,例如?a、 b 和 c。对于用戯言Q他们通常希望在第一旉看到整个大屏的画面,因此我们会优先在?a 中展C大图。而在?b 和 c 中,我们再处理顶部导航栏或底部交互区{内宏V通过q种分{略Q我们能够确保用户在W一旉看到最关键的内容,同时避免了因Zơ性加载过多组件而导致的性能问题?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095744638-1715916034.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>10、`蒙NEXT调优工具</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>传统的主观工具对于`?OS 的性能分析仍然适用?/strong>例如Q抖韛_红书都通过竞品分析来进行主观测评。这U能力主要是通过录屏来展C整个流E的耗时和时长,特别适合评估冷启动完成时延和转场q程的性能。通过录屏Q我们可以逐查看用户从点d始到l束的数和真实旉Q以此来衡量整个q程的持l时间?/p><h3>10.1 鸿蒙性能分析工具QIDE Profiler</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">除了主观工具Q我们还可以使用 IDE 提供的性能分析工具Q如 ProfilerQ来分析慢函数。由?ArkTS ~程语言框架主要通过 RTS ?NAPIQ原生应用接口)q行兌Q因此需要能够查?ArkTS ?NAPI 的整个堆栈层U。这与安卓有所不同Q因为当 Java 通过 Java Native API 与原生代码交互时Q堆栈ƈ不那么容易查看?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在小U书的性能分析中,我们展示了一个整体线E分析的例子。在左侧Q可以看到小U书的主U程Q如 com 点开头的U程Q、Daemon U程、Worker U程以及 FFRT U程。FFRT 是一U运行函数流的线E,可以执行 TaskPool 上的函数。在下图右侧Q我们可以看到在 RTS 环境下的分析l果Q其中顶部显CZ NAPI 调用Q底部则是一?C++ 函数。整个调用栈和它们的执行旉是通过一U自上而下的视图来展示的。利用这U视图,我们可以_地识别出哪些慢函数是造成界面卡顿的原因?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095751591-1532375318.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>10.2 性能场景试工具QDevEco Testing</strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">DevEco Testing 是一个性能试工具Q它的功能非常全面,性能试只是其中的一部分。除了性能试Q它q支持多U测试场景,包括 debug testing。在 debug testing 场景中,用户可以自定义业务场景,监测 CPU 的耗时和负载、GPU 的耗时和负载、设备发热情况以及功耗等问题?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095758308-470924747.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;">使用 DevEco Testing q行性能试的过E如下:首先定义试场景Q然后捕获主帧数据。一旦开始捕P可以观到 FPSQ率)、GPU 负蝲以及整体功耗等数据。完成性能数据捕获后,工具会生成一份报告,为用h供了一个完整的场景分析。不q,目前场景定义q缺乏脚本化能力Q需要h工操作辅助。未来,我们期望能够实现场景定义的脚本化配置Q类g自动化测试。这P可以通过自动化工P实现更高效的试程?/p></div><h1>11、小l与展望</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在对性能场景q行优化后,我们可以看到显著的收益。在实验室环境下的测试显C,冷启动时间可以降?50%Q响应时延可以低?100 毫秒Q完成时延则保持与双端持qx更优。在畅性方面,在多场景和重载场景下均实C 0 丢的成果。需要注意的是,q里的测试是在非重蝲模式下进行的Q即没有同时q行多个资源密集型应用,如《王者荣耀》或《和q精英》等。在q种条g下,我们的核心场景,如冷启动、搜索和个h늭Q都能够与双端完全对齐?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095805977-1776350243.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>展望未来Q有几个方向Q?/strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>1Q?/em></strong><span style="color: #800000;">首先</span>Q我们希望能够在全场景下实现lg复用Q以最大程度地实现 UI 复用。这样可以在多个业务之间的{场或 UI 创徏q程中,不必要?UI 创徏和消耗降到最低?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>2Q?/em></strong><span style="color: #800000;">其次</span>Q我们正在考虑代码延迟加蝲?lazy 机制。华为内部可能将其作为通用的解x案,但在实施q程中我们发C许多问题Q例如全 lazy 加蝲可能会媄响第三方 SDKQ如支付宝等Q因为它们可能进行了额外的二q制优化Q导致加载失败或无法响应。因此,我们期望通过代码延迟加蝲来实现持l治理,但目前它可能q不适合全场景的 lazy import?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>3Q?/em></strong><span style="color: #800000;">最?/span>Q我们关注防劣化问题Q即在每个版本发布时Q我们不希望性能指标出现劣化。我们希望能够在开发阶D就定义劣化指标和具体数据,以防止应用劣化。这部分可能需要借助 DevEco Testing 和主观测评的方式来实现。包括我们关注的指标Q例如冷启动和流畅性等Q未来可能会U_防劣化场景。目前,我们?CI 环节?RC 环节Q包括流水线的性能控和代?CR 机制Q都能够规避q类问题?/p><h1>12、相兌?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[1] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT官方开发指?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[2] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">一q撸完百万行代码Q企业微信的全新鸿蒙NEXT客户端架构演q之?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[3] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT如何保证应用安全Q详解`蒙NEXT数字{֐和证书机?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[4] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">开源IM聊天E序HarmonyChatQ基于`蒙NEXT的WebSocket协议</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[5] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信U血鸿蒙版正式发布,295天走完微?4q技术之路!</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[6] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">x通讯框架MobileIMSDK的`蒙NEXT端详l介l?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[7] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">x通讯框架MobileIMSDK的`蒙NEXT端开发者手?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[8] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">拥抱国化:转{APP的`蒙NEXT端开发尝鲜之?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[9] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信Windows端IM消息数据库的优化实践Q查询慢、体U大、文件损坏等</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[10] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信技术分享:揭秘微信后台安全特征数据仓库的架构设?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[11] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">IM跨^台技术学??Q全面解密新QQ桌面版的Electron内存优化实践</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[12] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">企业微信针对百万U组l架构的客户端性能优化实践</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[13] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">揭秘企业微信是如何支持超大规模IMl织架构?#8212;—技术解dl关p链</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[14] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分nQ详解iOS版微信视频号直播中因帧率异常D的功耗问?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[15] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分nQ微信后端v量数据查询从1000ms降到100ms的技术实?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[16] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">大型IM工程重构实践Q企业微信Android端的重构之\</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[17] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">IM技术干货:假如你来设计微信的群聊,你该怎么设计Q?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[18] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分nQ来看看微信十年前的IM消息收发架构Q你做到了吗</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[19] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">L被低伎ͼ从未被超,揭秘QQ极致丝滑背后的硬核IM技术优?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[20] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">首次公开Q最新手机QQ客户端架构的技术演q实?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[21] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">大型IME_性监实践:手Q客户端性能防劣化系l的之\</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><br /><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Q本文已同步发布于:http://www.52im.net/thread-4821-1-1.htmlQ?/a></p><img src ="http://www.aygfsteel.com/jb2011/aggbug/451622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-05-19 11:24 <a href="http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全^台开源即旉讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXThttp://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.htmlJack JiangJack JiangThu, 15 May 2025 04:27:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.htmlhttp://www.aygfsteel.com/jb2011/comments/451618.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451618.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451618.html阅读全文

Jack Jiang 2025-05-15 12:27 发表评论
]]>
全^台开源即旉讯IM框架MobileIMSDKQ??TCP/UDP/WebSocket协议Q`蒙NEXT端已发布Q?.7K Starshttp://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.htmlJack JiangJack JiangTue, 29 Apr 2025 07:29:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.htmlhttp://www.aygfsteel.com/jb2011/comments/451615.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451615.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451615.html一、基本介l?/h1>

MobileIMSDK是一套全q_原创开源IM通信层框Ӟ

  • 轻量、高度提|lib?0KB以内Q?/li>
  • _ֿ?yu)装Q一套API同时支持UDP、TCP、WebSocket三种协议Q可能是全网唯一开源的Q;
  • 客户端支持iOS、Android、标准Java、H5、微信小E序、Uniap、`蒙Next(Demo完整源码)Q?/li>
  • 服务端基于NettyQ性能卓越、易于扩?nbsp;newQ?/li>
  • 可与姊妹工程 MobileIMSDK-Web 无缝互通实现网늫聊天或推送等Q?/li>
  • 可应用于跨设备、跨|络的聊天APP、企业OA、消息推送等各种场景?/li>

二、源码仓库同步更?/h1>

GitHub.comQ?/strong>

码云giteeQ?/strong>

三、设计目?/h1>

让开发者专注于应用逻辑的开发,底层复杂的即旉讯法交由SDK开发h员,从而解偶即旉讯应用开发的复杂性?/p>

四、框架组?/h1>

整套MobileIMSDK框架׃?部分l成Q?/strong>

  1. Android客户端SDKQ?/strong>用于开发Android版即旉讯客户端,支持Android 4.0及以上版本,查看API文档Q?/li>
  2. iOS客户端SDKQ?/strong>用于开发iOS版即旉讯客户端,支持iOS 12.0及以上版本,查看API文档Q?/li>
  3. Java客户端SDKQ?/strong>用于开发跨q_的PC端即旉讯客户端,支持标准Java 1.6及以上版本,查看API文档Q?/li>
  4. H5客户端SDKQ?/strong>查看_注释?/a>Q?/li>
  5. 微信程序端SDKQ?/strong>查看_注释?/a>Q?/li>
  6. Uniapp端SDKQ?/strong>查看_注释?/a>Q?/li>
  7. 鸿蒙Next端SDKQ?/strong>SDK暂无开源版Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">查看_注释?/a>Q,Demo完整工程源码Q?/li>
  8. 服务端SDKQ?/strong>用于开发即旉讯服务端,支持Java 1.7及以上版本,查看API文档Q?/li>

整套MobileIMSDK框架的架构组成:

MobileIMSDK一直在持箋开发和升中,鸿蒙Next客户?/a>是MobileIMSDK工程的最新成果?/p>

五、技术特?/h1>

六、演C程?/h1>
  1. Android客户?DemoQ?/strong>Ҏ(gu)安装和?/a>Q?/li>
  2. iOS客户?DemoQ?/strong>Ҏ(gu)安装和?/a>Q?/li>
  3. Java客户?DemoQ?/strong>Ҏ(gu)安装和?/a>Q?/li>
  4. H5客户?DemoQ?/strong>Ҏ(gu)查看介绍Q?/li>
  5. 微信程序端 DemoQ?/strong>Ҏ(gu)查看介绍Q?/li>
  6. Uniapp?DemoQ?/strong>Ҏ(gu)查看介绍Q?/li>
  7. 鸿蒙Next?DemoQ?/strong>Ҏ(gu)查看介绍 newQ?/li>
  8. 服务?DemoQ?/strong>Ҏ(gu)安装和?/a>?/li>

七、应用案?/h1>

RainbowChat是一Ƒ֟于MobileIMSDK的品聊天APPQ更多详情:点击下蝲体验 ?nbsp;查看q行截图?/p>

① ZMobileIMSDK的品聊天APPQ?/strong>

▶ 详细介绍?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">下蝲体验 ?nbsp;查看q行截图?/p>

② MobileIMSDK在高|络延迟下的案例Q?/strong>

▶ 某款ZMobileIMSDK的商业商品,曾运营于跨洲际的复杂|络环境下,端到端通信延迟在洲际网l繁忙时可高?00ms以上Q与服务端的单向延迟Uؓ300ms左右Q而通常大家讉K国内L门户的gq约?0~50msQ,某段时期的非敏感q营数据 Ҏ(gu)查看?/p>

八、打包下载(all in oneQ?/h1>

说明Q?/strong>最新发布版打包内容中,已包含完整的demo源码、sdk源码、api文档、编译后的分发包{?/p>

?ji)、典型应用场?/h1>

场景1Q聊天APP

应用说明Q?/strong>可用于开发类g微信、QQ{聊天工兗?/p>

消息走向Q?/strong>需使用C2C、C2S、S2C全部cd?/p>

特别说明Q?/strong>MobileIMSDKq未定义聊天应用的应用层逻辑和协议,开发者可自行定义q实C?/p>

场景2Q消息推?/strong>

应用说明Q?/strong>可用于需要向客户端实时推送信息的各种cdAPP?/p>

消息走向Q?/strong>仅需使用S2C 1U消息走向,属MobileIMSDK的最单应用场景?/p>

场景3Q企业OA

应用说明Q?/strong>可用于实C业OA的指令、公文、申L各种消息实时推送,极大提升用户体验Qƈ可g伸至Ud讑֤?/p>

消息走向Q?/strong>仅需使用S2C 1U消息走向,属MobileIMSDK的最单应用场景?/p>

场景4Q企业OA的增强型

应用说明Q?/strong>可用于实C业OA中各U系l、用L消息的实时互动,充分利用x通讯技术提升传lOA的h(hun)倹{?/p>

消息走向Q?/strong>可用C2C、C2S、S2C全部cdQ这与聊天APP在很多方面已无差别,但企业OA有自已的用户关系理模型和逻辑Q较之全功能聊天APP要简单的多?/p>

十、开发指?/h1>
  1. Android客户端开发指南:Ҏ(gu)查看Q?/li>
  2. iOS客户端开发指南:Ҏ(gu)查看Q?/li>
  3. Java客户端开发指南:Ҏ(gu)查看Q?/li>
  4. H5客户端开发指南:Ҏ(gu)查看Q?/li>
  5. 微信程序端开发指南:Ҏ(gu)查看Q?/li>
  6. Uniapp端开发指南:Ҏ(gu)查看Q?/li>
  7. 鸿蒙Next端开发指南:Ҏ(gu)查看Q?/li>
  8. Server端开发指南:Ҏ(gu)查看?/li>

附录1QDemo截图

1、在鸿蒙Next端运行效果:

>> ~译和运行:查看鸿蒙Next端Demo完整源码?/p>

2、Android端、iOS端运行效?/strong>

>> 安装和用:q入Android版Demo帮助?/a>?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">q入iOS版Demo帮助?/a>?/p>

>> 安装和用:q入Java版Demo帮助?/a>?/p>

>> 安装和用:q入Java版Demo帮助?/a>?/p>

8.1QMobileIMSDK-Web在手机端览器运行效果:Q如何获取MobileIMSDK-Web版:Ҏ(gu)q入Q?/p>

8.2QMobileIMSDK-Web在PC端浏览器q行效果Q(如何获取MobileIMSDK-Web版:Ҏ(gu)q入Q?/p>

附录2Q基于MobileIMSDK的全功能IM【案例?/span>

>> 关于RainbowChat的更多资料请见:RainbowChat前端APP功能截图|页 Q?span style="color: #ff00ff;">* 推荐 - 真机实拍视频Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Andriod?/a>?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">iOS?/a>Q?/p>

附录3Q基于MobileIMSDK-Web的网늫IMpȝ【案例?/strong>

下图为RainbowChat-Web的主界面Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图Ҏ(gu)q入?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频Ҏ(gu)q入Q:

下图为RainbowChat-Web的主界面[聊天H全屏时] Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图Ҏ(gu)q入?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频Ҏ(gu)q入Q:

下图为RainbowChat-Web的主界面[独立UI效果] Q?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图Ҏ(gu)q入?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频Ҏ(gu)q入Q:

Q?strong>以上内容同步发布于:http://www.52im.net/thread-52-1-1.html Q?/div>

Jack Jiang 2025-04-29 15:29 发表评论
]]>拥抱国化:转{APP的`蒙NEXT端开发尝鲜之?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/04/23/451612.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Wed, 23 Apr 2025 02:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/04/23/451612.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451612.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/04/23/451612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451612.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451612.html</trackback:ping><description><![CDATA[<blockquote style="background-image: none; border-top: none; border-right: none; border-bottom: none; border-left-width: 3px; border-left-color: #e2dfdf; margin-right: 0px; margin-left: 0px; background-color: #eeeeee; width: 884.475px; color: #555555; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;"><p style="margin-top: 10px; margin-bottom: 10px;">本文p{转技术团队n卫兵分nQ原?#8220;鸿蒙新篇章:转{ APP ?HarmonyOS Next 开发之?#8221;Q下文进行了排版优化和内容修订?/p></blockquote><h1>1、引a</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">2023 q在华ؓ开发者大会(HDC.TogetherQ上Q除了面向消费者的 HarmonyOS 4 之外Q华推出了面向开发者的 HarmonyOS Next 开发者预览?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">而在d?6 月䆾华ؓ开发者大会上Q对外开启了 HarmonyOS Next Beta 版,q在当年内正式推出面向消费者的商用版本?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">HarmonyOS NextQ是鸿蒙生态的一个重要拐炏V去q的时候,转{和华为已l达成合作,作ؓ鸿蒙先锋的一员,加入到`蒙应用的开发之中来?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">客户端从 2023 q?11 月䆾开始,人力开始逐渐的往q个方向投入Q于 2024 q?2 月䆾正式开始进入业务开发,?6 ?4 P对外正式发布了基?HarmonyOS Next pȝ的{?App 首个版本?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202504/1834368-20250423101903301-776550854.jpg" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>从早期的学习到最l第一个版本上U,我们l历了以下几个阶D:</strong></p></div><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>前期的熟(zhn)和学习q程Q?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>鸿蒙客户端基建开发过E;</li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>首个版本需求范围确定和排期Q?/li><li style="list-style: inherit;"><strong><em>4Q?/em></strong>业务开发;</li><li style="list-style: inherit;"><strong><em>5Q?/em></strong>试Q?/li><li style="list-style: inherit;"><strong><em>6Q?/em></strong>bug 修复/性能调优Q?/li><li style="list-style: inherit;"><strong><em>7Q?/em></strong>上线?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>本文要分n的是转{APP在开发全新`蒙NEXT端所遇到的一些问题,Ҏ(gu)了`蒙开发和 Android、iOS 的不同,ȝ了这ơ开发过E中的一些经验等{。希望能带给你启发?/strong></p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202504/1834368-20250423101914656-759515321.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><p style="margin-top: 10px; margin-bottom: 10px;"><strong>技术交:</strong></p><div><div><div><p style="margin-top: 10px; margin-bottom: 10px;">- Ud端IM开发入门文章:?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一就够:从零开发移动端IM</a>?/p><p style="margin-top: 10px; margin-bottom: 10px;">- 开源IM框架源码Q?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDK</a>Q?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地址Ҏ(gu)</a>Q?/p></div></div></div><p style="margin-top: 10px; margin-bottom: 10px;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Q本文已同步发布于:http://www.52im.net/thread-4820-1-1.htmlQ?/a></p></div><h1>2、关于作?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>赵卫兵:</strong>目前负责转{集团 iOS 和`蒙系l?App 基础架构和相兛_。崇开源和分n_QSharing is everything ~</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>转{团队分n的其它几技术文章有兴趣也可M读:</strong></p><ol style="padding-left: 40px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">转{q_IMpȝ架构设计与实?一)Q整体架构设?/a></li><li style="list-style: inherit;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">转{q_IMpȝ架构设计与实??Q详l设计与实现</a></li><li style="list-style: inherit;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Web端IM聊天消息该不该用览器本地存储?一文即?/a></li><li style="list-style: inherit;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">手把手教你用网l编E抓包神器Wireshark</a></li><li style="list-style: inherit;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">谈|页端IM技术及相关试Ҏ(gu)实践Q包括WebSocket性能试Q?/a></li></ol><h1>3、初识`蒙NEXT</h1><h3>3.1 分布式技?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">HarmonyOS Next 具备强大的分布式技术,能够实现跨设备协同工作。用户可以无~地在不同的讑֤间切换和使用应用Q无需感知讑֤的差异。HDC 大会中如 WPS Office、高L APPQ用了应用接箋Ҏ(gu),在不同设备中q行{Qo人印象深刅R这点在 iOS ?Android 中ƈ不完全具备?/p><h3>3.2 高性能低时?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">HarmonyOS Next采用轻量U的微内核设计?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">iOS 使用的内核基?XNUQX is Not UnixQ内核,XNU 是一个؜合内核,l合了微内核QMach 内核Q的内存理、Q务调度、进E间通信{特性和宏内核(BSD 内核Q的文gpȝ、网l堆栈、用戯E管理等Ҏ(gu)?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Android 内核Z修改q的 Linux 宏内核,增加?Binder IPC、电(sh)源管理、安全性等模块和机Ӟ以更好的支持Ud讑֤?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">鸿蒙的微内核设计Q官方称相比宏内核,具备更高的性能和更低的时gQ从而在多Q务处理、设备响应和处理能力上具有明显优ѝ?/p><h3>3.3 自适应UI框架</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">通过 ArkUI和ArkTSQHarmonyOS Next能够适应各种寸和Ş状的屏幕讑֤Q提供一致友好的用户体验。这个特性在跨设备协同时其重要?/p><h3>3.4 多终端、多OS支持</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">HarmonyOS Next 不仅仅是一个手机操作系l,q能q行在^ѝ智能穿戴设备、智能家居设备等多种l端上,l一生态系l。对比苹果的iOSQMacOSQTVOSQWatchOSQ确实有些不同。但对于应用开发者而言Q其实就是API的能力集合问题,q一点,鸿蒙使用 SysCap pȝ能力集合辑ֈ了殊途同归的效果?/p><h3>3.5 更优U的安全?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在应用安全层面,目前在应用的生态中有以下一些问题:</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>诱导用户下蝲安装恶意应用Q?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>H取用户数据Q?/li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>强制推送广告;</li><li style="list-style: inherit;"><strong><em>4Q?/em></strong>利用漏洞d其他应用E序Q?/li><li style="list-style: inherit;"><strong><em>5Q?/em></strong>盗版软g?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">q方面,׃Android 的开放性以及侧载安装的支持Q问题表现的ؓ明显Q?iOS 是一个可以学习的老师?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>针对上面的问题,HarmonyOS Next 又是如何应对的呢Q?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>做好应用质量的监,控制应用分发渠道Q避免恶意应用分发到用户讑֤上;</li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>提供安全的数据授权机Ӟ避免用户q度授权造成安全威胁Q?/li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>l应用程序开攄pȝ功能做到不被恶意利用Q?/li><li style="list-style: inherit;"><strong><em>4Q?/em></strong>帮助应用E序最程度的受到漏洞影响Q?/li><li style="list-style: inherit;"><strong><em>5Q?/em></strong>为应用程序提供有效的核心数字产权保护手段Q避免出现盗版Y仉题?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>具体可以看下图:</strong></p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202504/1834368-20250423101926293-1210774772.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Q图片来自《`蒙生态应用安全技术白皮书 V1.0》)</p><h1>4、和Android、iOS的开发有何不同?</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">鸿蒙开发上Q和 Android、iOS q是有不相似和不同的地方,我挑选感受比较深ȝ几个点说下?/p><h3>4.1 开发语a和工具链</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">鸿蒙开发用的是ArkTS 语言QArkTSZ TypeScript 做了一些扩展,l承?TypeScript 的所有特性,?TypeScript 的超集?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>下面是官方的一些介l:</strong></p><blockquote style="background-image: none; border-top: none; border-right: none; border-bottom: none; border-left-width: 3px; border-left-color: #e2dfdf; margin-right: 0px; margin-left: 0px; background-color: #eeeeee; width: 884.475px; color: #555555; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;"><p style="margin-top: 10px; margin-bottom: 10px;">ArkTS的一大特性是它专注于低运行时开销。ArkTS对TypeScript的动态类型特性施加了更严格的限制Q以减少q行时开销Q提高执行效率。通过取消动态类型特性,ArkTS代码能更有效地被q行前编译和优化Q从而实现更快的应用启动和更低的功耗?/p><p style="margin-top: 10px; margin-bottom: 10px;">与JavaScript的互通性是ArkTS语言设计中的关键考虑因素。鉴于许多移动应用开发者希望重用其TypeScript和JavaScript代码和库QArkTS提供了与JavaScript的无~互通,使开发者可以很Ҏ(gu)地将JavaScript代码集成C们的应用中。这意味着开发者可以利用现有的代码和库q行ArkTS开发?/p></blockquote><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在开发工具上Q?/strong>使用?IDE ?DevEco StudioQ基?IntelliJ IDEA Community 开源版本打造,为开发者提供工E模板创建、开发、编译、调试、发布等功能。华为在q个 IDE 上针寚w`蒙开发易用性上做了大量的工作,包含但不限于~译器,代码实时预览、ArkUI Inspector、Profile 性能分析工具{等?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在包理上:</strong>有点cM前端?npm 包管理机Ӟ不过在这块,是叫 ohpmQ整体上非常怼Q但是细节上有一些不同,譬如 package.json 的文件命名、lock 文g的内容信息、独立的开源中心仓{等。仓库这块也提供了私仓部|的方式Q采用套件工具中?ohpm-repo可以部|到企业内部服务器上?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在调试上Q?/strong>?Android ?ADB cMQ`蒙这块提供了一?hdc 的工P提供了类似查询设备列表、网l、文件、应用安装卸载、shell、日志获取等常用功能?/p><h3>4.2 开发体?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">鸿蒙开发是?ArkUIQ类?FlutterQSwiftUI q样的声明式 UIQArkUI lg的命名和状态管理和 SwiftUI 比较cMQ上手比较容易?/p><h3>4.3 开发资料和交流</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Android ?2008 q谷歌布QiOS ?2007 q苹果发布,距离到现在已l有?16?7 q之久,在这期间Q互联网上积累了无数的开发资料和l验分nQ也有着大量的开源项目和C֌?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">而有?HarmonyOS Next 斚w的资料,目前更多的是官方开发指南和开源范例(集中?gitee 上)?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">C֌斚wQ主要是华ؓ开发者论坛,受限于开发者版本的q速P代,一些帖子讨论的内容已经q时且不再适用?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">而在博客、github 开源上Q目前看到的其实q不多,更多的分享还是比较基Q深度有价值的q不多?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">目前在这个阶D,更多的是企业和华为合作的情况下,内部使用 Issue 工单pȝq行沟通交。交主要围l着需求、Bug 反馈、指南疑问来展开?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>譬如Q?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>指南资料中提供的能力Q不满诉求Q交是否有更好的解x案;</li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>API 、IDE、工具链表现不符合预期,反馈 bugQ?/li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>pȝ能力cL Android、iOS ~失的特性,交流是否有替代的解决Ҏ(gu)?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">截止到本文章写的时候,转{华ؓ工单交流的L已达?270+个。反馈的 bug 和缺q能力Q在后面的开发者预览版本中都被修复或支持了?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>印象比较深刻的一件事是:</strong>开发和试期间我们发现了停留在d面不动Q过?0 分钟左右Q系l就会卡死重启,我们一度以为是 App 哪里?bug。我们通过 hdc hilog 抓取pȝ输出的日志,发现大约q了 10 分钟左右Qlog ׃d@环打华ͼ很明昄l底层发生了一些异常。已l晚上快 1 点了Q我们兴奋的扑ֈ和我们对接这个问题的华ؓ工程师张老师Q将视频和日志发送给他,张老师按照复现的\径,也成功复现出来,q且抓取到日志。后面的几天Q经q华Z伴的努力Q终于定位到问题所在,是文件句?FD 存在泄露的情况,q在下一个开发者版本中推送修复了?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">为华为工E师的敬业和效率竖一个大拇指Q华Z所以强大,从这件事的跟q和解决效率上,p理解Cؓ什么?/p><h1>5、踩坑后ȝ的几个经?/h1><h3>5.1 cL学习</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">投入鸿蒙开发的客户端同学,有来?Android 开发的Q也有来?iOS 开发的Q或多或对另外一端的pȝ了解的不是很全面?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在学习的q程中,我们发现鸿蒙的一些特性和 API 设计Q有些和 iOS 比较像,而有些和 Android 有些像。我们内部经常讨Z和理解 HarmonyOS Next 的应用层设计问题。在Ҏ(gu)选择上,HarmonyOS Next 中都有借鉴和取舍?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>q个阶段Q?/strong>我们需要重点理解`蒙特有的一些设计概念和思想。譬?Stage 模型QStage模型是从 API 9 开始新增的模型Q是目前L且会长期演进的`蒙应用模型。在该模型中Q由于提供了 AbilityStage、WindowStage {类作ؓ应用lg?Window H口?#8220;舞台”Q这U方式在 Android、iOS 上是不是有类似的概念呢?</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">如果我们如下cL Android、iOS?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>AbilityStage ?WindowStageQ?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>?iOS 中,?UIViewController ?UIWindow cM。UIViewController 理视图层次和界面行为,?UIWindow 是应用程序的H口Q可以显C内容;</li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>?Android 中,可以cL?Activity ?Window。Activity 是应用的单个屏幕Q负责界面的创徏和管理,?Window ?Activity 的顶层视囑֮器?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>UIAbility ?ExtensionAbilityQ?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>UIAbility 可以?iOS ?UIViewController 以及 Android ?Activity 相对应,因ؓ它们都是用于理和显C用L面的基本单元?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>ExtensionAbility 可以cL?iOS ?App Extension ?Android ?Service。App Extension 提供了将功能扩展到系l范围内的能力,?Service ?Android 中则是运行在后台的组Ӟ执行长时间运行的操作?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">虽然l节有所不同Q但大方向上q样Ҏ(gu)和类比,会帮助我们快速理解`蒙相兛_发概c?/p><h3>5.2 目理和风险方案应?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">首个版本的开发,几乎涉及C公司所有的业务部门Q我们通过启动会拉齐背景信息,前期让大家梳理到新增一个`蒙终端对业务的媄响范_以及解决Ҏ(gu)?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>1QPlanB Ҏ(gu)Q?/em></strong></span></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">一些三?SDK 如微信、支付宝{在前期都是没有的,我们首个版本需要做?PlanB Ҏ(gu)。涉及到的包括登录、支付、分享等业务Q都需要针对这些进行调整?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>2Q有限的试机:</em></strong></span></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">因ؓ业务部门参与q来的很多,但工E样机十分有限。服务端和前端同学代码调整完毕后如何试呢?q个是我们不得不考虑的一件事情?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">新增一个`蒙终端,服务端调整后端代码,在测试和沙箱试Ӟ除了回归不要影响 Android ?iOS 之外Q还要能保证针对鸿蒙的兼容调整是有效的。鉴于`蒙测试机器十分有限,我们l?Server 同学提供?Android 试包,?Android 试包的l端 mock 成`蒙终端来供服务端试接口Q这样子试下来十分高效?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>针对前端同学Q?/strong>不能再向刚才那样做了Q毕竟是?Android ?WebView。即便我?WebView ?UserAgent mock ?Android pȝQ得通信和交互仍然走cM Android 的策略,而这样ƈ不能代表真实的`?WebView 环境Q因为在 Next pȝ中整?Native ?Webview 的通信 Bridge 是全新的一套方案,且`蒙的 API 实现接口也都需要走鸿蒙侧来试。针对这个情况,我们非常谨慎心的将各个业务部门的参与进来的旉错开Q尽力保证在有限试机的情况下,每个业务轮{参与q来的时候都是有机器的?/p><h3>5.3 多和华ؓ伙伴q行沟?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">q部分的l验Q具有一定的时效性。后期商用版本发布之后,可能q样的沟通渠道、频ơ很隑ֆ有了?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Z么要多和华ؓ伙伴时刻保持密切的沟通?有几个印象深ȝ例子?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>1Q第一个例子:路由</em></strong></span></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">鸿蒙关于面跌{提供了两套解x案,一套是面路由 routerQ一套是lgD Navigation。前期我们在基徏开发期_采用的页面\?router Ҏ(gu)Q@zz/router lg代码已经开发完毕了Q但是到了开?WebView ?Hybrid 接口Ӟ才意识到一个严重的问题Q就?router 提供的能力,q不能满x们复杂的面栈管理,譬如在页面栈中多?WebViewQ我们需要关闭指定的 WebView 面Qrouter 提供?API 能力是无法做到的。和华ؓ沟通后才知道,官方是推?Navigation 来实玎ͼ且未?router Ҏ(gu)不再演进。我们提出的复杂面栈管理的能力Q彼?Navigation 支持的还不完_但是伙伴告诉我们Q他们会?Navigation 上满x们的需求。关闭页面栈中指?index 或?name 的页面,怿其他开发者也都会遇到Q应该是一个普遍的需求?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Zq种情况Q我们不得不q速调整我们的路由lgQ基?Navigation 重新设计了一套\由方案,q好目业务q没有开始大量开发,要改动的地方也不是很多,如果沟通再晚点Q恐怕调整v来代价会相对更高炏V此时的沟通,让我们少C弯\Q避免在 router 上走投无路死方案?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>2Q第二个例子Q企业分?/em></strong></span></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">企业分发通常用于企业内部试、企业内?App {。Dev 证书?iOS ?Dev 证书cMQProvisioning ProfileQp7b 文gQ会?100 台设备的限制。考虑到将来,转{也想依赖企业分发能力Q可以在试中采用企业签名打包来q行试。虽说在当前阶段不是性和必要的,但是我们q有一个{转质 AppQ这?App 我们不能通过 AGC 后台上架华ؓ市场Q因为在质检中心Q如果不走内部分发安装,那么我们会面着外网下蝲Q会l质中心的带宽带来很大的负蝲以及成本?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我们密切x者企业分发能力的qA旉Q在今年?5 月䆾QAGC 后台企业分发能力提供之后Q立卌行了全流E处理,包括甌企业开发者、申误书以及测试走通下载整个过E。这U情况下Q通过及时交流Q我们可以第一旉q行试实践Q有效降低或者避免了未来Ҏ(gu)上的一些风险?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><span style="color: #3366ff;"><em>3Q第三个例子Q安全控件与pȝ Picker</em></span></strong></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">怿q大开发者今q刚开始介?HarmonyOS Next 开发时Q对于用到的一些权限,如读取剪贴板Q读取或者保存图片到相册{等q些 ACLQAccess Control ListQ访问控制列表权限,都是通过在开发者后台勾选这些权限从而实现在应用中弹H许可访问。但是在今年 6 月䆾的沟通中Q我们获知后面要让开发者全部适配到安全控件方案。这些安全控仉是系l提供的选择器,使用之后Q每ơ需要用h操作才行?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">目前?Android ?iOS 中,如果惌在应用中上传一张照片,需要同意该应用获得囑ֺ的访问权限,而带来的弊端是Q这个应用今后可随意讉K你图库中的所有图片。相比之前的授权弹窗许可一ơ之后,可能造成的权限滥用,安全控g提升了用户对敏感权限的操作感知,是 HarmonyOS Next 在保障用户隐U安全方面的一个亮点和优势?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">q其中的核心理念便是从权限管控到数据控。在 Android ?iOS 原本的权限管控方案中Q比如一旦给了通讯录权限,那么相当于把通讯录的钥匙l予了应用开发者,如果开发者违规用,在用户不知情的读取整个通讯录,其实是不W合用户的隐U要求。而数据管控便是不会再把通讯录的钥匙l开发者,而是你要什么样的通讯录数据,那么你只能通过通讯录安全选择控g中来选择惌d的通讯录,不再让应用随意获取整个通讯录数据?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">关于安全控g我们q行了多ơ沟通,了解了安全控件在华ؓ侧推q的节奏以及我们整改的期限时间等Q另外我们也提出个别场景Q安全控件还不以满求,譬如用户保存囄到相册,q没有对应的安全控g能力。这斚w的沟通,会让我们及时的对 App 的隐U合规性做Z化调_避免后面因ؓ隐私权限问题而媄响上架?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">及时沟通对于了?Bug 的解x况,功能交付旉、华Z伴的要求{都是很有必要的Q因些都会媄响到开发测试到上线的一个节奏?/p><h1>6、`蒙NEXT上的WebView混合面开?/h1><h3>6.1 概述</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">回到我们大前端来Q得提一下大家关注的 WebView。在 HarmonyOS Next 中仍然沿用之前统一?WebView 架构?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>?V1 版本中,需要做的核心工作包括:</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>实现 WebView Core 层;</li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>JSBridge 层,新增实现 HarmonyOS Next ?Bridge 通信Q?/li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>q移安全层能力;</li><li style="list-style: inherit;"><strong><em>4Q?/em></strong>实现 Hybrid API 接口Q也是 Ability 层的能力?/li></ul><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202504/1834368-20250423101945099-1812928023.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>需要特别提一下的是:</strong>HarmonyOS Next 使用?Web 览器基?ArkWebQ方舟Web内核Q,该内核基?Chrome 114 版本定制Q对于各U?CSS、HTML、JS 属性在各大览器中的兼Ҏ(gu)情况可以?nbsp;<a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">https://caniuse.com/#home</a> q个|站q行查询?/p></div><h3>6.2 前期如何定影响范围和制定方?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>Ability 层的接口Q?/strong>转{?WebView 历经多年的演q,Native ?WebView 的交?API 是有一定历史包q。我们不希望鸿蒙q次l箋背着包袱前行Q所以我们计划趁着q次前端业务兼容鸿蒙的机会,q行一波优化,丢弃一些已l计划不再用的能力或者接口。比如老的半屏 WebView Ҏ(gu)Q导航栏按钮功能讄Ҏ(gu)、非l蟩的页面蟩转接口等?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">但一个方案的定要充分考虑客户端实现的难易E度以及前端大量业务侧统一修改的难度代P需要做到尽可能的合理^衡。ؓ了确定这点,我们Ҏ(gu)U上最q一个月中URL 中接口调用的埋点日志Q结?URL 查询所属业务、开发测试负责h的内部接口,整理了一张巨大的二维矩阵表,通过在线表格的过滤、筛选等功能Q可以非常直观的看到所有还在用中的接口的业务调用分布情况Qؓ我们评估Ҏ(gu)攚w工作量提供了重要的参考?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202504/1834368-20250423101954901-796349277.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;">一?Hybrid API 在`蒙上支持情况Q分Z面几U情c?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>aQ?直接支持Q前端无需修改Q提供和 Android、iOS 一L接口能力Q?/em></strong></span></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>功能对等Q能力实现和 Andriod、iOS 一P</li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>化:比如览大图、奢侈品鉴定Q暂时用简版选图Ҏ(gu)?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>bQ?推荐使用新方案:</em></strong></span></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>譬如D栏相x钮的能力、新半屏能力Q?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>?enterChat {等功能Q用统x口来实现跌{?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><span style="color: #3366ff;"><strong><em>cQ?不支持:</em></strong></span></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1Q?/em></strong>业务下线Q业务不再需要,下线处理Q?/li><li style="list-style: inherit;"><strong><em>2Q?/em></strong>版本初期不考虑该功能;</li><li style="list-style: inherit;"><strong><em>3Q?/em></strong>某端特定功能Qؓ了解x个问题,某端专门增加的一?api 供用;</li><li style="list-style: inherit;"><strong><em>4Q?/em></strong>pȝ能力不支持:HarmonyOS Next 没有该项能力?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">最l根据这些原则,我们定下来 V1 版本?WebView API 的需求范围、涉及业务方、改动方案。现在回惌v来,当时我们做的q一步是非常有必要的Q前期这些如果没有梳理清楚,后面非常容易造成沟通؜׃及媄响开发进度?/p><h3>6.3 关于性能</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">转{前端的页面主要是 Web 形态,Hybrid 场景占据多数。在q去的几q中Q我们围l?Hybrid 形态,摸烦Z一pd Web 面的优化方案。从基础的离U包Q到复杂的预渲染、预h{都有涉及。最l实C Hybrid 面?Native 面在电(sh)商场景下Q相差无几的体验?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">目前鸿蒙在这块优化上Q还都没来得及跟q这些优化手Dc这个也是后面要l箋的一个方向,最l要拉齐到和Android、iOS 一L性能优化体验?/p><h1>7、后l开发展?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">首个版本上线Q只是一个v炏V?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在业务上Q我们将不断的l追q?Android、iOS 中那些重要的模块和功能;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在开发工具体验和支持上,也逐渐补~失的能力,比如丰富的Native、WebView工兯力,q一步提升客L和前端在 HarmonyOS Next 下的开发体验?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在性能体验上,持箋的关注和跟进性能问题Q优?WebView 以及 Native 的用体验,提升 App 的流畅度和响应速度?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在创CQ我们将持箋探烦Q将更多?HarmonyOS Next 下的创新场景Q如元服务、意图推荐等{融入到转{ App 中,提升用户的购物用体验?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">要做的事情很多,我们会在后箋q代中逐步完善hq些能力Q敬h待?/p><h1>8、相兌?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[1] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT官方开发指?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[2] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">一q撸完百万行代码Q企业微信的全新鸿蒙NEXT客户端架构演q之?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[3] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT如何保证应用安全Q详解`蒙NEXT数字{֐和证书机?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[4] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">开源IM聊天E序HarmonyChatQ基于`蒙NEXT的WebSocket协议</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[5] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信U血鸿蒙版正式发布,295天走完微?4q技术之路!</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[6] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">x通讯框架MobileIMSDK的`蒙NEXT端详l介l?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[7] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">x通讯框架MobileIMSDK的`蒙NEXT端开发者手?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[8] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">转{q_IMpȝ架构设计与实?一)Q整体架构设?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[9] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">转{q_IMpȝ架构设计与实??Q详l设计与实现</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[10] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Web端IM聊天消息该不该用览器本地存储?一文即?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[11] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">手把手教你用网l编E抓包神器Wireshark</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[12] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">谈|页端IM技术及相关试Ҏ(gu)实践Q包括WebSocket性能试Q?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><br /><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Q本文已同步发布于:http://www.52im.net/thread-4820-1-1.htmlQ?/a></p><img src ="http://www.aygfsteel.com/jb2011/aggbug/451612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-04-23 10:50 <a href="http://www.aygfsteel.com/jb2011/archive/2025/04/23/451612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一q撸完百万行代码Q企业微信的全新鸿蒙NEXT客户端架构演q之?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/04/15/451610.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Tue, 15 Apr 2025 03:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/04/15/451610.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451610.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/04/15/451610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451610.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451610.html</trackback:ping><description><![CDATA[     摘要: 本文׃业微信客L团队黄玮分nQ原?#8220;在流沙上{城Q企微`蒙开发演q?#8221;Q下文进行了排版优化和内容修订?、引a当企业微信团队在2024q启动`蒙Next版开发时Q我们面对的是双重难题:1Q在WXG团队模式下Q如何快速将数百万行U企业应用移植到全新操作pȝQ?Q在鸿蒙API q是Preview的初期,如何保持业务代码的稳定,在API快速更新的潮中岿然不动?DataLis...  <a href='http://www.aygfsteel.com/jb2011/archive/2025/04/15/451610.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jb2011/aggbug/451610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-04-15 11:22 <a href="http://www.aygfsteel.com/jb2011/archive/2025/04/15/451610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>鸿蒙NEXT如何保证应用安全Q详解`蒙NEXT数字{֐和证书机?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/04/09/451609.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Wed, 09 Apr 2025 03:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/04/09/451609.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451609.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/04/09/451609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451609.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451609.html</trackback:ping><description><![CDATA[     摘要: 本文q团技术团队张晨分享,原题“鸿蒙应用{֐实操及机制探I?#8221;Q下文进行了排版优化和内容修订?、引a华ؓ鸿蒙单框架操作系lHarmonyOS NEXT已于2024q?0?3日正式发布Release版。HarmonyOS NEXT仅支持`蒙原生应用,不再兼容安卓。本文对鸿蒙NEXT公开资料q行了深入分析和解读Q梳理了鸿蒙单框架应用的{֐机制Q拆解每一步的实操q程和背后的?..  <a href='http://www.aygfsteel.com/jb2011/archive/2025/04/09/451609.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jb2011/aggbug/451609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-04-09 11:51 <a href="http://www.aygfsteel.com/jb2011/archive/2025/04/09/451609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全民AI时代Q大模型客户端和服务端的实时通信到底用什么协议?http://www.aygfsteel.com/jb2011/archive/2025/03/27/451607.htmlJack JiangJack JiangThu, 27 Mar 2025 07:14:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/03/27/451607.htmlhttp://www.aygfsteel.com/jb2011/comments/451607.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/03/27/451607.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451607.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451607.html阅读全文

Jack Jiang 2025-03-27 15:14 发表评论
]]>
վ֩ģ壺 ű| ػ| | ֵ| | | | | | Ӣ| | ¸| | ޭ| | Ϫ| ˻| | | ˼| ʢ| ϵ| | | ʡ| | | | ɽ| ޻| | º| | | | | лͨ| ˮ| | Զ| ɽ|