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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

微信架构 支付架构(下)

發布時間:2023/11/28 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信架构 支付架构(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微信架構 & 支付架構(下)

  1. 管理網絡請求

首先看看原來
iOS 處理支付網絡請求的缺陷:

原來支付的請求,都是通過一個單例網絡中心去發起請求,然后收到回包后,通過拋通知,或者調用閉包的方式回調給業務側。

會存在這樣的問題:

1、CGI 一對多通訊問題。

舉個之前遇到的問題。

那么錢包發起的 Cgi 的回包就會覆蓋收付款頁面的數據。之前在 iOS 只能通過修修補補,增加場景值,增加些標記位來解決??赡苣骋惶炀蜁殖霈F新的坑。

1、進入錢包頁面后,發起了一個 Cgi

2、然后進入收付款頁面也發起同一個 Cgi.

3、如果收付款發起的回包先到

4、然后錢包首頁的回包再到。

5、CGI 生命周期問題。

不時會有用戶反饋一下,怎么沒有做什么操作,突然就會彈出網絡報錯。

原因就是 Cgi
的生命周期有問題,在業務結束后,Cgi 的回包仍然得到了處理。

解決方案:

1、將 Cgi 抽象為獨立對象

在架構設計上來說,舊架構是通過單例模式實現的集約型 API,而我們新的架構則是通過命令模式實現的離散型 API。

也就是將 Cgi
封裝為獨立對象。我們把 Cgi 相關屬性和能力內聚起來。開發業務時,只需簡單繼承 BaseCgi,設置一下參數即可。

2、劃分職責,明確生命周期

關于 Cgi 由誰發起,之前安卓和 iOS 都沒有一個統一的做法。有些人會放到 Activity,ViewController,和 UI 代碼耦合起來。

因此,在跨平臺軟件架構中,我們統一由業務流程 UseCase 進行發起。并且生命周期是一對一的,一個 Cgi 只會有一個 UseCase 處理, UseCase 銷毀后,Cgi 也隨之銷毀。

對比舊架構:

  1. 杜絕了一對多通信造成的 Bug

  2. 生命周期和業務邏輯綁定,不會出現業務結束,Cgi 回來后再觸發動作。

  3. 高內聚,低耦合。將 Cgi 相關的數據,能力集中處理,業務側無需感知。

  4. 提供統一的緩存,加密能力。

第一步和第二步,我們抽象了業務流程,加入了路由機制。

在第三步管理網絡請求后。我們的軟件架構演進為這樣子。

  1. 規范數據傳遞

iOS 和安卓的舊架構都存在信息傳遞不當和數據污染問題。這個問題最嚴重。iOS 和
安卓都出過不少 bug。

首先我們來看看最近現網出現過的問題:

之前 iOS 出現,不少內部同事,外部的用戶都在反饋:進行零錢頁后,會無故彈空白框。而支付又和金錢有關,引起用戶的恐慌。

具體原因就是:

  1. 進入支付首頁時,后臺返回了數據,然后被寫入到一個公共的 Model.

  2. 然后進入錢包頁,再進入零錢頁。這個公共 model 一路被傳遞過去。

  3. 然后零錢頁讀取了公共 Model 的數據,但是代碼無法處理,導致出現了這個讓用戶恐慌的問題。

除此之外,之前還有有很多發生在安卓,iOS ,像錢包頁零錢展示錯誤。付款的時候。銀行卡失效等等問題。

這些問題五花八門,看起來發生的地方,場景都不一樣。每次遇到這類問題的時候,就只能去修修補補。

但是深究下去,會發現真正的原因,是軟件架構上存在的問題:

支付舊的架構采用了黑板模式,雖然方便了數據讀寫。但是帶來的問題和收益完全不成正比:

1.存在公共讀寫的數據類型。

安卓傳遞的數據類型是一個字典,而 iOS 則是一個 Model 對象。所有的界面,業務邏輯都共用一個數據。

2.無序的數據流動。

數據的流動是不可追溯的,數據的修改可以發生在任意使用公共數據的地方。

那么支付跨平臺軟件架構,為了杜絕這樣的問題。我是這么做的:

  1. 去掉公共讀寫的數據類型

  2. 傳遞值類型(Value
    Type)的數據, 后面流程修改數據時,不影響前面的流程。

  3. 單向傳遞數據,只依賴注入必要數據。

  4. 如果數據修改需要通知前序流程,使用代理模式通訊。

規范數據傳遞后。對比舊架構:

  1. 從架構上根本解決了困擾微信支付已久的數據污染的問題。

  2. 數據的流動變為單向,數據流動變得可追溯。

前面三步,我們抽象了業務流程,加入了路由機制,統一管理網絡請求。

那么規范數據傳遞后,我們軟件架構就演進為這樣子。

總結

軟件的本質復雜性存在于復雜的業務需求中。而軟件架構的本質就是管理復雜性,因此真正的好的架構,正是在復雜的業務需求中反復提煉和總結歸納而來,解決了真正的業務問題,不是空談。

軟件架構除了清理歷史舊架構的缺陷,是我們業務開發的基石之外。還能夠賦能業務,為業務帶來價值。在建立軟件架構的基礎上,還圍繞著軟件架構建立起微信支付的跨平臺自動化數據上報機制,防重復支付,安全橫切等帶來巨大業務收益的能力。有機會的話,后面也會進一步編寫相關文章和大家交流探討。

架構是一個不斷演進的過程,隨著新的支付業務基于跨平臺軟件架構的不斷編寫,
我也會對這個架構進行持續的更新迭代。讓這個軟件架構更貼合微信支付,更加健壯和完整。

總結

以上是生活随笔為你收集整理的微信架构 支付架构(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。