但是深究下去,会发现真正的原因,是软件架构上存在的问题:

文章插图
支付旧的架构采用了黑板模式,虽然方便了数据读写 。但是带来的问题和收益完全不成正比:
1.存在公共读写的数据类型 。
安卓传递的数据类型是一个字典,而 iOS 则是一个 Model 对象 。所有的界面,业务逻辑都共用一个数据 。
2.无序的数据流动 。
数据的流动是不可追溯的,数据的修改可以发生在任意使用公共数据的地方 。
那么支付跨平台软件架构,为了杜绝这样的问题 。我是这么做的:

文章插图
- 去掉公共读写的数据类型
- 传递值类型(Value Type)的数据, 后面流程修改数据时,不影响前面的流程 。
- 单向传递数据,只依赖注入必要数据 。
- 如果数据修改需要通知前序流程,使用代理模式通讯 。
- 从架构上根本解决了困扰微信支付已久的数据污染的问题 。
- 数据的流动变为单向,数据流动变得可追溯 。

文章插图
那么规范数据传递后,我们软件架构就演进为这样子 。

文章插图
总结软件的本质复杂性存在于复杂的业务需求中 。而软件架构的本质就是管理复杂性,因此真正的好的架构,正是在复杂的业务需求中反复提炼和总结归纳而来,解决了真正的业务问题,不是空谈 。
软件架构除了清理历史旧架构的缺陷,是我们业务开发的基石之外 。还能够赋能业务,为业务带来价值 。在建立软件架构的基础上,还围绕着软件架构建立起微信支付的跨平台自动化数据上报机制,防重复支付,安全横切等带来巨大业务收益的能力 。有机会的话,后面也会进一步编写相关文章和大家交流探讨 。
架构是一个不断演进的过程,随着新的支付业务基于跨平台软件架构的不断编写,我也会对这个架构进行持续的更新迭代 。让这个软件架构更贴合微信支付,更加健壮和完整 。
推荐阅读
- 微信按下这个按钮,可以知道谁把你拉黑了,赶快试一下吧
- 微信公众号运营中须知官方打击哪些行为
- VUE前后分离调起微信支付
- 可信任站点怎么设置 软件信任在哪里设置
- 微信终于可以改微信号了,步骤如下
- 微信竟隐藏着这么多实用技巧
- 微信怎么查银行卡余额
- 手机里系统自带的软件无法卸载?教你一招,摆脱“流氓软件”!
- 现在谁没多个小号呀?一个小妙招教你在电脑上登陆多个微信号
- 微信、支付宝都有设密码,为啥超市“扫码枪”却能轻易将钱扫走?
