加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

微信团队分享:微信支付代码重构以及软件架构上的思考

发布时间:2023-04-06 11:16:35 所属栏目:教程 来源:
导读:本文原文由微信客户端高级工程师方秋枋原创发表于WeMobileDev公众号,即时通讯网收录时有修订和加工,感谢作者的无私分享。

1、引言

作为一个重要业务,微信支付在客户端上面临着各种问题。

其中最核心问题
本文原文由微信客户端高级工程师方秋枋原创发表于WeMobileDev公众号,即时通讯网收录时有修订和加工,感谢作者的无私分享。

1、引言

作为一个重要业务,微信支付在客户端上面临着各种问题。

其中最核心问题就是分平台实现导致的问题:

1)iOS 和安卓实现不一致:容易出 Bug、通过沟通保证不了质量;

2)扩展性差且无法快速响应业务需求:需求变更迭代周期长、数据上报不全面;

3)质量保障体系不完善:缺少业务及设计知识沉淀、协议管理松散、缺少统一的自动化测试;

为了解决分平台实现这个核心问题,并解决以往的技术债务。我们建立起了一整套基于 C++ 的跨平台框架,并对核心支付流程进行了重构。微信支付跨平台从 iOS 7.0.4 版本起, 安卓从 7.0.7 版本起全面覆盖。

术语约定:本文中的名词 CGI 可以理解为一个网络请求,类似HTTP请求。

扩展阅读:本文引用的所有图片均来自《基于C++构建微信客户端跨平台开发框架(PPT) [附件下载]》,如有需要可前往下载PPT原稿。
2、关于作者

3、先感受一下本次重构的线上效果指标

以 iOS 上线情况为例。

3.1Crash 率

上线前后 Crash 率保持平稳,没有影响微信稳定性,跨平台支付无必现 Crash,做到了用户无感知切换。

3.2效能提升

以核心支付流程代码为例,跨平台需要 3512 行,iOS 原生需要 6328 行。减少了近 45% 的代码。

以新需求开发为例:

1)7.0.4 版本需求一:收银台改版;

2)7.0.4 版本需求二:简化版本收银台。

重构后的软件架构对开发效率的提升对比:

跨平台实现:iOS + 安卓 共计 3 人日,在封板时间前完成;

原生实现:iOS, 安卓封板时间后一周才基本完成;

跨平台实现:iOS + 安卓共计 5 人日,在封板时间前完成;

原生实现:iOS, 安卓封板时间后一周才基本完成。

对基于 C++ 如何从零到一构建跨平台框架感兴趣的同学,可以看看我在2019 QCon 广州站的演讲 《基于 C++ 构建微信客户端跨平台开发框架》PPT原稿。

4、什么是软件架构

什么是软件架构?正如 Ivar Jacobson (UML 之父)说过的一样,找五个人来回答这个问题,五个人可能都有各自不同的答案。

现代软件开发之父Ivar Jacobson博士被认为是深刻影响或改变了整个软件工业开发模式的几位世界级大师之一。他是模块和模块架构、用例、现代业务工程、Rational统一过程等业界主流方法、技术的创始人。Ivar Jacobson博士与Grady Booch和James Rumbaugh一道共同创建了UML建模语言,被业界誉为UML之父。Ivar Jacobson 的用例驱动方法对整个OOAD行业影响深远,他因此而成为业界的一面“旗帜”。

针对微信支付的业务特点,这里对架构的定义是:架构是系统的组成部件及其之间的相互关系(通讯方式)。这更符合我们程序员日常编写业务代码时对架构的理解。也就是通俗意义上讲的 MVC,MVVM 等。

5、为什么需要软件架构

早在 1986 年的时候,《人月神话》的作者在讨论软件的复杂性时,谈到:软件的本质复杂性存在于复杂的业务需求中。

而管理复杂性,最根本的手段就是职责分离。为了实现职责分离,代码重用,架构慢慢地复现出来。架构的本质是管理复杂性。

没有架构,我们所有的代码都耦合在一起,人类的心智模型不擅长处理这种复杂性,架构的设立,和图书馆的图书分类,公司的组织划分等,本质都是一样的。是为了管理复杂性,以取得更高的生产力。
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章