日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

微信支付软件架构重构之旅

發(fā)布時(shí)間:2025/3/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信支付软件架构重构之旅 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

方秋枋

讀完需要

10

分鐘

速讀僅需 1 分鐘

原文鏈接:https://www.cnblogs.com/imstudy/p/12567241.html

本文原文由微信客戶(hù)端高級(jí)工程師方秋枋原創(chuàng)發(fā)表于WeMobileDev公眾號(hào),收錄時(shí)有修訂和加工,感謝作者的無(wú)私分享。

作者簡(jiǎn)介

? ?

方秋枋:畢業(yè)于華中科技大學(xué),現(xiàn)為微信客戶(hù)端高級(jí)工程師。目前主要負(fù)責(zé)微信支付的跨平臺(tái)開(kāi)發(fā)框架與相關(guān)業(yè)務(wù)開(kāi)發(fā)。

是開(kāi)源項(xiàng)目 SwiftNotificationCenter ,SwiftTimer ,SwiftCssParser 的作者。業(yè)余時(shí)間也喜歡混跡在 SwiftGG 翻譯組,老司機(jī) iOS 周報(bào)給大家翻譯文章,摘錄周報(bào)。喜歡 Simple and Stupid 的代碼。熱愛(ài)科技、開(kāi)源。

方秋枋的 Github:( https://github.com/100mango )

方秋枋的微博:( https://weibo.com/100mango?is_hot=1 )

方秋枋的知乎:( https://www.zhihu.com/people/fang-qiu-fang )

背景

作為一個(gè)重要業(yè)務(wù),微信支付在客戶(hù)端上面臨著各種問(wèn)題。其中最核心問(wèn)題就是分平臺(tái)實(shí)現(xiàn)導(dǎo)致的問(wèn)題:

iOS 和安卓實(shí)現(xiàn)不一致

  • 容易出 Bug

  • 通過(guò)溝通保證不了質(zhì)量

擴(kuò)展性差,無(wú)法快速響應(yīng)業(yè)務(wù)需求

  • 需求變更迭代周期長(zhǎng)

  • 數(shù)據(jù)上報(bào)不全面

質(zhì)量保障體系不完善

  • 缺少業(yè)務(wù)及設(shè)計(jì)知識(shí)沉淀

  • 協(xié)議管理松散

  • 缺少統(tǒng)一的自動(dòng)化測(cè)試

用戶(hù)體驗(yàn)不一致

比如下圖就是之前安卓和 iOS 沒(méi)有統(tǒng)一前的收銀臺(tái)。

▲ 微信安卓片和iOS版,沒(méi)有統(tǒng)一用戶(hù)體驗(yàn)前的收銀臺(tái)功能

為了解決分平臺(tái)實(shí)現(xiàn)這個(gè)核心問(wèn)題,并解決以往的技術(shù)債務(wù)。我們建立起了一整套基于 C++ 的跨平臺(tái)框架,并對(duì)核心支付流程進(jìn)行了重構(gòu)。

重構(gòu)后的軟件架構(gòu)原理如下圖所示:

微信支付跨平臺(tái)從 iOS 7.0.4 版本起, 安卓從 7.0.7 版本起全面覆蓋。

線(xiàn)上效果指標(biāo)

以 iOS 上線(xiàn)情況為例:

Crash 率

上線(xiàn)前后 Crash 率保持平穩(wěn),沒(méi)有影響微信穩(wěn)定性,跨平臺(tái)支付無(wú)必現(xiàn) Crash,做到了用戶(hù)無(wú)感知切換。

舉個(gè)例子,大家可以用微信發(fā)一筆紅包,拉起的收銀臺(tái)和支付流程就是由基于C++編寫(xiě)的跨平臺(tái)代碼所驅(qū)動(dòng)的。

效能提升

以核心支付流程代碼為例,跨平臺(tái)需要 3512 行,iOS 原生需要 6328 行。減少了近 45% 的代碼。

以新需求開(kāi)發(fā)為例:

7.0.4 版本需求一:收銀臺(tái)改版

7.0.4 版本需求二:簡(jiǎn)化版本收銀臺(tái)

  • 跨平臺(tái)實(shí)現(xiàn):iOS + 安卓 共計(jì) 3 人日,在封板時(shí)間前完成

  • 原生實(shí)現(xiàn):iOS, 安卓封板時(shí)間后一周才基本完成

  • 跨平臺(tái)實(shí)現(xiàn):iOS + 安卓共計(jì) 5 人日,在封板時(shí)間前完成

  • 原生實(shí)現(xiàn):iOS, 安卓封板時(shí)間后一周才基本完成

那么支付跨平臺(tái)軟件架構(gòu)怎么樣有效進(jìn)行質(zhì)量保障,并且提升生產(chǎn)力呢?這是這篇文章的主要內(nèi)容。

什么是軟件架構(gòu)

什么是軟件架構(gòu)?正如 Ivar Jacobson (UML 之父)說(shuō)過(guò)的一樣,找五個(gè)人來(lái)回答這個(gè)問(wèn)題,五個(gè)人可能都有各自不同的答案。

架構(gòu)定義可以有很多種說(shuō)法,從代碼規(guī)范到發(fā)布流程都可以是架構(gòu)的一部分。

針對(duì)微信支付的業(yè)務(wù)特點(diǎn),這里對(duì)架構(gòu)的定義是:架構(gòu)是系統(tǒng)的組成部件及其之間的相互關(guān)系(通訊方式)。這更符合我們程序員日常編寫(xiě)業(yè)務(wù)代碼時(shí)對(duì)架構(gòu)的理解。也就是通俗意義上講的 MVC,MVVM 等。

為什么需要軟件架構(gòu)

早在 1986 年的時(shí)候,人月神話(huà)的作者在討論軟件的復(fù)雜性時(shí),談到:軟件的本質(zhì)復(fù)雜性存在于復(fù)雜的業(yè)務(wù)需求中。

而管理復(fù)雜性,最根本的手段就是職責(zé)分離。為了實(shí)現(xiàn)職責(zé)分離,代碼重用,架構(gòu)慢慢地復(fù)現(xiàn)出來(lái)。架構(gòu)的本質(zhì)是管理復(fù)雜性。

沒(méi)有架構(gòu),我們所有的代碼都耦合在一起,人類(lèi)的心智模型不擅長(zhǎng)處理這種復(fù)雜性,架構(gòu)的設(shè)立,和圖書(shū)館的圖書(shū)分類(lèi),公司的組織劃分等,本質(zhì)都是一樣的。是為了管理復(fù)雜性,以取得更高的生產(chǎn)力。

從零到一構(gòu)建支付跨平臺(tái)軟件架構(gòu)

在移動(dòng)客戶(hù)端領(lǐng)域,業(yè)界基于 C++ 來(lái)編寫(xiě)業(yè)務(wù)代碼,并沒(méi)有成熟的架構(gòu)。即使使用 C++ 編寫(xiě)業(yè)務(wù)邏輯,但都不涉及 UI,不涉及界面的跳轉(zhuǎn)流程。

既然業(yè)界沒(méi)有一個(gè)成熟的架構(gòu)可借鑒,那么是不是直接把業(yè)界通用的架構(gòu)簡(jiǎn)單套用一下就好?

1. 抽象業(yè)務(wù)流程

現(xiàn)在業(yè)界通用的有 MVC , MVP, MVVM 。這些大家都熟悉的軟件架構(gòu)。但是這些軟件架構(gòu)都存在一個(gè)問(wèn)題:那就是沒(méi)有處理好業(yè)務(wù)流程, 界面轉(zhuǎn)場(chǎng)。

微信支付的流程多。而流程就是由一個(gè)個(gè)的界面(ViewController,Activity)和相關(guān)的業(yè)務(wù)邏輯組合而成。

上面的 MV(X) 模式忽略了一個(gè)非常重要的一點(diǎn),那就是業(yè)務(wù)流程,界面的轉(zhuǎn)場(chǎng)究竟由誰(shuí)負(fù)責(zé)。也即 ViewController 與 ViewController 之間的關(guān)系由誰(shuí)維護(hù),業(yè)務(wù)流程的邏輯寫(xiě)在哪里。

如果還按照傳統(tǒng)的 MVC 模式,那么 ViewController 自己負(fù)責(zé)和不同的 ViewController 通訊。那么 ViewController 得不到復(fù)用,更致命的是業(yè)務(wù)流程的代碼非常不清晰,業(yè)務(wù)流程的代碼都被分散到各個(gè) Controller 中, 而一個(gè) Controller 又可能耦合了多個(gè)業(yè)務(wù)的代碼。

舉個(gè)例子:一個(gè)普通的轉(zhuǎn)賬流程,可能會(huì)涉及風(fēng)控?cái)r截,實(shí)名驗(yàn)證, 收銀臺(tái), 綁卡,支付成功頁(yè)等等。如果是基于 MVC 這種架構(gòu)的話(huà),很快代碼會(huì)變得難以維護(hù)。

因此,為了適應(yīng)微信支付流程多,界面跳轉(zhuǎn)復(fù)雜的特點(diǎn)。架構(gòu)抽象的第一步就是將業(yè)務(wù)流程抽象為一個(gè)獨(dú)立的角色 UseCase。同時(shí), 把界面抽象為 UIPage。一個(gè)大的業(yè)務(wù)流程可以分解為一個(gè)個(gè)小的業(yè)務(wù)流程。

和剛才基于 MVC 混亂的架構(gòu)相比:

  • 業(yè)務(wù)流程的代碼能夠聚合到 UseCase 中,而不是分散到原來(lái) iOS, 安卓的各個(gè) ViewController,Activity 中。

  • 業(yè)務(wù)流程和界面得到了復(fù)用。

  • 契合微信支付多流程,界面跳轉(zhuǎn)復(fù)雜的業(yè)務(wù)特點(diǎn)。

  • 2. 加入路由機(jī)制

    既然流程得到了抽象,這個(gè)時(shí)候需要針對(duì)業(yè)務(wù)流程做更深的思考。在開(kāi)發(fā)支付業(yè)務(wù)流程時(shí),開(kāi)發(fā)者不可繞過(guò)的問(wèn)題有:

    1、流程之間,頁(yè)面之間的流傳。

    比如我們要給一個(gè)朋友轉(zhuǎn)賬,輸入金額,確認(rèn)支付,觸發(fā) Cgi 后。下一個(gè)流程是多變的。有可能用戶(hù)需要去實(shí)名,有可能用戶(hù)要進(jìn)入一個(gè)安全攔截的 WebView,或者是正常拉起收銀臺(tái)。

    本文中的名詞 CGI 可以理解為一個(gè)網(wǎng)絡(luò)請(qǐng)求,類(lèi)似HTTP請(qǐng)求。

    那么以往在 iOS, 安卓分開(kāi)實(shí)現(xiàn)時(shí),都沒(méi)有一個(gè)統(tǒng)一的處理機(jī)制。要么就是通過(guò)網(wǎng)絡(luò)回包的某個(gè)字段來(lái)判斷,要么就是本地維護(hù)一些狀態(tài)來(lái)決定下一步走什么流程等等。非常繁瑣,易錯(cuò)。

    2、特殊流程的處理

    支付業(yè)務(wù)流程還有個(gè)特殊的地方,那就是在正常流程的中間,往往很多時(shí)候要需要插入一些特殊流程。比如有些地方要跳轉(zhuǎn) Webview, 有些地方要跳轉(zhuǎn)小程序,有些地方要彈窗告知用戶(hù)風(fēng)險(xiǎn),或者終止當(dāng)前流程,等等。我們經(jīng)常需要在業(yè)務(wù)代碼里面不斷重復(fù)增加這樣的處理。

    這些問(wèn)題,引導(dǎo)我想到,微信支付需要一個(gè)路由機(jī)制。

    首先了解一下路由機(jī)制。

    路由機(jī)制的核心思想,就是通過(guò)向路由傳遞數(shù)據(jù),然后路由解析數(shù)據(jù),并響應(yīng)。

    結(jié)合微信支付和網(wǎng)絡(luò)密切相關(guān)的特點(diǎn)。創(chuàng)新地將支付領(lǐng)域模型作為傳遞的數(shù)據(jù)。

    那么怎么建立這個(gè)支付領(lǐng)域模型的呢?

    建模,就是建立映射。領(lǐng)域知識(shí) + 建模方法 = 領(lǐng)域建模。那么這里的領(lǐng)域知識(shí),就是對(duì)支付業(yè)務(wù)流程的理解。建模方法,我采用了 UML 建模。最終會(huì)落地為 Proto 協(xié)議供客戶(hù)端和后臺(tái)一起使用。

    首先,微信支付業(yè)務(wù)特點(diǎn)就是和網(wǎng)絡(luò)密切相關(guān),流程和頁(yè)面往往是由 Cgi 串聯(lián)起來(lái)。因此建立模型時(shí),最外層便是網(wǎng)絡(luò)回包。對(duì)于路由機(jī)制,這里我們只關(guān)心路由數(shù)據(jù)模型。

    路由數(shù)據(jù)模型由路由類(lèi)型,還有各個(gè)路由類(lèi)型所需要的信息組合成。

    路由類(lèi)型清晰的定義了要觸發(fā)的行為。究竟是要開(kāi)啟一個(gè) UseCase,還是要打開(kāi)一個(gè)界面,或者 網(wǎng)頁(yè),小程序,彈窗等等。

    然后就是這些行為所需要的數(shù)據(jù)。比如打開(kāi)小程序所需要的參數(shù),彈窗所需要的參數(shù)等。

    建立支付領(lǐng)域模型后,我們路由的解析就變得非常清晰了。路由解析之后,會(huì)根據(jù)路由類(lèi)型,觸發(fā)不同的動(dòng)作。

    比如流程,界面流轉(zhuǎn),會(huì)交給 UseCase 處理。

    而特殊流程,比如打開(kāi)小程序,打開(kāi) webview, 彈窗這些行為會(huì)統(tǒng)一進(jìn)行處理。

    我們?cè)诘谝徊桨褬I(yè)務(wù)流程抽象為 UseCase。第二步則加入了路由機(jī)制。

    加入路由機(jī)制后,支付跨平臺(tái)的軟件架構(gòu)演進(jìn)為這個(gè)樣子。

    加入路由機(jī)制后,對(duì)比 iOS,安卓原來(lái)的舊架構(gòu):

  • 統(tǒng)一了流程,頁(yè)面的流轉(zhuǎn)。清晰,易維護(hù)。

  • 統(tǒng)一了特殊流程的處理,減少重復(fù)工作。

  • 在加入路由機(jī)制的時(shí)候,結(jié)合微信支付和網(wǎng)絡(luò)密切相關(guān)的特點(diǎn)進(jìn)行了支付領(lǐng)域建模。支付后臺(tái)協(xié)議重構(gòu) 2.0 的核心思想也是圍繞著這個(gè)路由機(jī)制展開(kāi)。

  • 再來(lái)看一下,加入路由機(jī)制后,對(duì)生產(chǎn)力的提升。以支付流程打開(kāi) WebView, 小程序?yàn)槔?#xff0c;減少將近 83% 的代碼。更重要的是,這里的特殊流程,是在路由機(jī)制里面統(tǒng)一處理的,沒(méi)有耦合到業(yè)務(wù)代碼中,并且是可復(fù)用的。

    3. 管理網(wǎng)絡(luò)請(qǐng)求

    首先看看原來(lái) iOS 處理支付網(wǎng)絡(luò)請(qǐng)求的缺陷:

    原來(lái)支付的請(qǐng)求,都是通過(guò)一個(gè)單例網(wǎng)絡(luò)中心去發(fā)起請(qǐng)求,然后收到回包后,通過(guò)拋通知,或者調(diào)用閉包的方式回調(diào)給業(yè)務(wù)側(cè)。

    會(huì)存在這樣的問(wèn)題:

    1、CGI 一對(duì)多通訊問(wèn)題。

    舉個(gè)之前遇到的問(wèn)題。

    那么錢(qián)包發(fā)起的 Cgi 的回包就會(huì)覆蓋收付款頁(yè)面的數(shù)據(jù)。之前在 iOS 只能通過(guò)修修補(bǔ)補(bǔ),增加場(chǎng)景值,增加些標(biāo)記位來(lái)解決。可能某一天就會(huì)又出現(xiàn)新的坑。

    1、進(jìn)入錢(qián)包頁(yè)面后,發(fā)起了一個(gè) Cgi

    2、然后進(jìn)入收付款頁(yè)面也發(fā)起同一個(gè) Cgi.

    3、如果收付款發(fā)起的回包先到

    4、然后錢(qián)包首頁(yè)的回包再到。

    5、CGI 生命周期問(wèn)題。

    不時(shí)會(huì)有用戶(hù)反饋一下,怎么沒(méi)有做什么操作,突然就會(huì)彈出網(wǎng)絡(luò)報(bào)錯(cuò)。

    原因就是 Cgi 的生命周期有問(wèn)題,在業(yè)務(wù)結(jié)束后,Cgi 的回包仍然得到了處理。

    解決方案:

    1、將 Cgi 抽象為獨(dú)立對(duì)象

    在架構(gòu)設(shè)計(jì)上來(lái)說(shuō),舊架構(gòu)是通過(guò)單例模式實(shí)現(xiàn)的集約型 API,而我們新的架構(gòu)則是通過(guò)命令模式實(shí)現(xiàn)的離散型 API。

    也就是將 Cgi 封裝為獨(dú)立對(duì)象。我們把 Cgi 相關(guān)屬性和能力內(nèi)聚起來(lái)。開(kāi)發(fā)業(yè)務(wù)時(shí),只需簡(jiǎn)單繼承 BaseCgi,設(shè)置一下參數(shù)即可。

    2、劃分職責(zé),明確生命周期

    關(guān)于 Cgi 由誰(shuí)發(fā)起,之前安卓和 iOS 都沒(méi)有一個(gè)統(tǒng)一的做法。有些人會(huì)放到 Activity,ViewController,和 UI 代碼耦合起來(lái)。

    因此,在跨平臺(tái)軟件架構(gòu)中,我們統(tǒng)一由業(yè)務(wù)流程 UseCase 進(jìn)行發(fā)起。并且生命周期是一對(duì)一的,一個(gè) Cgi 只會(huì)有一個(gè) UseCase 處理, UseCase 銷(xiāo)毀后,Cgi 也隨之銷(xiāo)毀。

    對(duì)比舊架構(gòu):

  • 杜絕了一對(duì)多通信造成的 Bug

  • 生命周期和業(yè)務(wù)邏輯綁定,不會(huì)出現(xiàn)業(yè)務(wù)結(jié)束,Cgi 回來(lái)后再觸發(fā)動(dòng)作。

  • 高內(nèi)聚,低耦合。將 Cgi 相關(guān)的數(shù)據(jù),能力集中處理,業(yè)務(wù)側(cè)無(wú)需感知。

  • 提供統(tǒng)一的緩存,加密能力。

  • 第一步和第二步,我們抽象了業(yè)務(wù)流程,加入了路由機(jī)制。

    在第三步管理網(wǎng)絡(luò)請(qǐng)求后。我們的軟件架構(gòu)演進(jìn)為這樣子。

    4. 規(guī)范數(shù)據(jù)傳遞

    iOS 和安卓的舊架構(gòu)都存在信息傳遞不當(dāng)和數(shù)據(jù)污染問(wèn)題。這個(gè)問(wèn)題最嚴(yán)重。iOS 和 安卓都出過(guò)不少 bug。

    首先我們來(lái)看看最近現(xiàn)網(wǎng)出現(xiàn)過(guò)的問(wèn)題:

    之前 iOS 出現(xiàn),不少內(nèi)部同事,外部的用戶(hù)都在反饋:進(jìn)行零錢(qián)頁(yè)后,會(huì)無(wú)故彈空白框。而支付又和金錢(qián)有關(guān),引起用戶(hù)的恐慌。

    具體原因就是:

  • 進(jìn)入支付首頁(yè)時(shí),后臺(tái)返回了數(shù)據(jù),然后被寫(xiě)入到一個(gè)公共的 Model.

  • 然后進(jìn)入錢(qián)包頁(yè),再進(jìn)入零錢(qián)頁(yè)。這個(gè)公共 model 一路被傳遞過(guò)去。

  • 然后零錢(qián)頁(yè)讀取了公共 Model 的數(shù)據(jù),但是代碼無(wú)法處理,導(dǎo)致出現(xiàn)了這個(gè)讓用戶(hù)恐慌的問(wèn)題。

  • 除此之外,之前還有有很多發(fā)生在安卓,iOS ,像錢(qián)包頁(yè)零錢(qián)展示錯(cuò)誤。付款的時(shí)候。銀行卡失效等等問(wèn)題。

    這些問(wèn)題五花八門(mén),看起來(lái)發(fā)生的地方,場(chǎng)景都不一樣。每次遇到這類(lèi)問(wèn)題的時(shí)候,就只能去修修補(bǔ)補(bǔ)。

    但是深究下去,會(huì)發(fā)現(xiàn)真正的原因,是軟件架構(gòu)上存在的問(wèn)題:

    支付舊的架構(gòu)采用了黑板模式,雖然方便了數(shù)據(jù)讀寫(xiě)。但是帶來(lái)的問(wèn)題和收益完全不成正比:

    1.存在公共讀寫(xiě)的數(shù)據(jù)類(lèi)型。

    安卓傳遞的數(shù)據(jù)類(lèi)型是一個(gè)字典,而 iOS 則是一個(gè) Model 對(duì)象。所有的界面,業(yè)務(wù)邏輯都共用一個(gè)數(shù)據(jù)。

    2.無(wú)序的數(shù)據(jù)流動(dòng)。

    數(shù)據(jù)的流動(dòng)是不可追溯的,數(shù)據(jù)的修改可以發(fā)生在任意使用公共數(shù)據(jù)的地方。

    那么支付跨平臺(tái)軟件架構(gòu),為了杜絕這樣的問(wèn)題。我是這么做的:

  • 去掉公共讀寫(xiě)的數(shù)據(jù)類(lèi)型

  • 傳遞值類(lèi)型(Value Type)的數(shù)據(jù), 后面流程修改數(shù)據(jù)時(shí),不影響前面的流程。

  • 單向傳遞數(shù)據(jù),只依賴(lài)注入必要數(shù)據(jù)。

  • 如果數(shù)據(jù)修改需要通知前序流程,使用代理模式通訊。

  • 規(guī)范數(shù)據(jù)傳遞后。對(duì)比舊架構(gòu):

  • 從架構(gòu)上根本解決了困擾微信支付已久的數(shù)據(jù)污染的問(wèn)題。

  • 數(shù)據(jù)的流動(dòng)變?yōu)閱蜗?#xff0c;數(shù)據(jù)流動(dòng)變得可追溯。

  • 前面三步,我們抽象了業(yè)務(wù)流程,加入了路由機(jī)制,統(tǒng)一管理網(wǎng)絡(luò)請(qǐng)求。

    那么規(guī)范數(shù)據(jù)傳遞后,我們軟件架構(gòu)就演進(jìn)為這樣子。

    總結(jié)

    軟件的本質(zhì)復(fù)雜性存在于復(fù)雜的業(yè)務(wù)需求中。而軟件架構(gòu)的本質(zhì)就是管理復(fù)雜性,因此真正的好的架構(gòu),正是在復(fù)雜的業(yè)務(wù)需求中反復(fù)提煉和總結(jié)歸納而來(lái),解決了真正的業(yè)務(wù)問(wèn)題,不是空談。

    軟件架構(gòu)除了清理歷史舊架構(gòu)的缺陷,是我們業(yè)務(wù)開(kāi)發(fā)的基石之外。還能夠賦能業(yè)務(wù),為業(yè)務(wù)帶來(lái)價(jià)值。在建立軟件架構(gòu)的基礎(chǔ)上,還圍繞著軟件架構(gòu)建立起微信支付的跨平臺(tái)自動(dòng)化數(shù)據(jù)上報(bào)機(jī)制,防重復(fù)支付,安全橫切等帶來(lái)巨大業(yè)務(wù)收益的能力。有機(jī)會(huì)的話(huà),后面也會(huì)進(jìn)一步編寫(xiě)相關(guān)文章和大家交流探討。

    架構(gòu)是一個(gè)不斷演進(jìn)的過(guò)程,隨著新的支付業(yè)務(wù)基于跨平臺(tái)軟件架構(gòu)的不斷編寫(xiě), 我也會(huì)對(duì)這個(gè)架構(gòu)進(jìn)行持續(xù)的更新迭代。讓這個(gè)軟件架構(gòu)更貼合微信支付,更加健壯和完整。

    中生代技術(shù)社區(qū)提供內(nèi)推服務(wù),對(duì)應(yīng)以上大廠,直接對(duì)接到用人部門(mén),高效快捷

    有需求請(qǐng)?zhí)砑尤汉匣锶?strong>大白的微信

    申請(qǐng)備注(姓名+公司+技術(shù)方向)才能通過(guò)哦!

    ? ?END ? ?? #接力技術(shù),鏈接價(jià)值#

    轉(zhuǎn)發(fā)朋友圈,是對(duì)社區(qū)最大的支持。

    總結(jié)

    以上是生活随笔為你收集整理的微信支付软件架构重构之旅的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。