Skip to content

终端产品开发指南(更新中)

介绍

// TODO

运行环境

对于一款跨平台的终端产品,在开发和设计时应当考虑以下运行环境:

  • Windows11/10/7

  • 国产信创领域

    • Kylin V10系列(V10,V10 SP1,V10 SP2,V10 SP3...)

    • UOS 20系列(1060,1050,1040...)

    • 中科方德

    • Kylin V4 (较古老了,个人认为兼容性放低)

  • Debian

  • Ubuntu

  • Windows XP

  • Windows Server 202X/201X

  • Windows Server 2008

事实上当面对国产信创环境时,还需考虑 CPU 的架构兼容性:

  • x86_64 海光

  • arm64/aarch64,飞腾

  • 华为麒麟

  • 龙芯 4000A 5000A

而当涉及 Linux 系统时,如果用到了 Kernel 的一些特性,还需要考虑 Kernel 的版本和其支持的特性。

基础功能需求

终端产品运行的核心基础功能,应当是和业务需求无关的,该部分是所有终端产品的底座。业务需求就像搭积木一样,在其上面搭建并运行。

通信机制

应当具备多种通信机制,线程间、进程间和主机间(LPC,IPC,RPC)

主机间的通信应当支持安全加密传输协议,如 HTTPS, WSS等,应当支持C/S,Pub/Sub模式,支持异步通信机制

资源使用控制

对程序及程序所创建的子进程在运行中资源的使用进行管控,包括 CPU、I/O 、内存、网络等

设定程序运行的资源使用阈值,当超过阈值时可通过休眠、终止等方式释放资源

升级

支持定时或手动检测软件更新(有服务端),当检查到有更新时,可以手动或自动进行更新,更新失败支持回滚到当前版本

离线使用

终端断网的情况下,除了与服务器的同步功能外,其他业务功能不受影响(非网络功能)

网络恢复后,能自动与服务器重连同步

离线和在线使用上不存在差异

故障定位

当系统功能异常时,能方便定位故障发送的模块、故障原因等。因而可能需要 crashreport/bugreport 这样的反馈机制。

【非必要】SSO

单点登录,现在有些产品不仅有终端可能还具备网页Web端,最好能做到同一台终端客户端/Web端只需要任意一个地方登录一次的体验。

【非必要】运行状态监控

当程序运行时,可以方便地查看程序的运行状态(各个模块在执行什么业务逻辑、忙闲状态等),这个功能通常是提供给运维使用的。

【非必要】服务开机自启

如果你的终端产品是那种需要用户手动通过点击[开始菜单]或[桌面图标]来使用的,通常不会需要有开机自启。可以在应用程序中提供【开机自启动】的选项。

【非必要】守护进程

watch_dog/guard 机制:程序在异常终止或 crash 情况下,守护进程能够重新拉起服务。

对于有些依赖于用户从[开始菜单]或[桌面图标]手动启动程序的产品,通常是不需要产品。

【非必要】防杀防卸载

防止进程本身及创建的子进程被任务管理器或终端命令等方式杀死;也不能在未授权的情况下进行卸载、改变程序启动方式。

这其实有点流氓软件的意思,一般的软件都不会这么做,大多应用在一些终端安全产品上。

【非必要】防篡改

对应用系统中的关键目录、文件进行监控,防止未授权的情况下对文件进行删除,篡改和重命名等操作。对应用程序相关的可执行文件、动态库等进行签名和加载校验。

【非必要】防调试

防止应用程序被恶意调试、逆向分析以破坏程序原有的运行逻辑,甚至引发信息安全问题。防调试也分为好几个等级,比如删除程序调试信息,对程序加壳保护,代码混淆等,再进一步可以利用一些Hook技术禁止调试。

当然,应用过多的防调试手段也会给程序本身的运行效率和故障分析带来一定的开销。

总体设计

技术架构

// TODO

非功能设计

安全性

可靠性

// TODO

相关技术背景

桌面环境

// TODO

Windows explorer

Kylin GNOME UKUI

UOS20

开机自启动服务

// TODO

右键菜单

// TODO

Windows Shell

Kylin V10: caja extension, peony extension

UOS20

编译打包

// TODO

指导规范

编码风格规范

老实说,绝对正确的编码风格是不存在的,规范的作用是让所有人达成一种共识,一个项目、一份代码如果存在好几种不同风格,那一定称不上是好的代码。

《Google C++ Style Guide》

编码安全规范

《腾讯C/C++ 代码安全指南》

华为 C&C++ 语言安全编程规范

《360 C/C++ 安全规则集合》

SEI CERT Coding Standards

CWE

安全架构指南

// TODO

UI 设计指南

使用统一的设计风格肯定比东拼西凑要好看的多,最好能找到对应的设计原则的UI工程文件,然后从中导出图标等。非常不建议从图标网站按需下载。

《UKUI 设计指南》

《Windows 11 设计原则 - Windows apps》

《Ant Design》

TDesign - 开源的企业级设计体系 (tencent.com)

扩展:终端安全产品

// TODO