您好,登錄后才能下訂單哦!
這篇文章主要講解了“Flutter+FaaS雙端協議一體開發的方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Flutter+FaaS雙端協議一體開發的方法是什么”吧!
接下來我們帶著這里兩個問題回顧前后端研發架構演進的歷史。
PC互聯網早期沒有還沒有前后端的概念,此階段單個業務需求通常一個開發人員可以完成研發,前端網頁與后端邏輯都寫在一個工程中。隨著業務越來越復雜,原本開發者負責前后端研發已經變得效率低下,此階段隨著移動互聯網的爆發,服務端需要服務與PC、Android、iOS等多種前端。
服務端總是有一個疑問:服務端設計接口時,是應該面向 UI,還是應該面向通用服務?一個方案是抽取一部分服務端做 BFF(Backend For Frontend服務于前端的后端),作為前后端之間的適配層,核心是解決數據的聚合與編排,重新探索更合理的分層協作模式。
服務端寫BFF帶來新的問題,總是包接口無法提升個人能力。如果BFF由端側同學開發可以解決這個問題,具體技術方案也是接下來我們要思考的問題。
Serverless 由 BaaS(Backend as a Sevice)與 FaaS(Function as a Service)兩部分組成。BaaS 主要包括數據庫存儲、消息隊列等能力,針對復雜的需求建議由服務端在 BaaS 層封裝領域服務供 FaaS 層使用。作為端側開發,核心關注客戶端與FaaS層的代碼開發。
目前公司 FaaS 環境已經支持 Java、Kotlin、Swift、Dart、Node.js 等多種語言與框架,閑魚通過 Android(Flutter)、iOS(Flutter)、FaaS(Dart Runtime)都使用Dart 達到語言一體,并且實現協議一體與工程一體。
語言一體:Android、iOS、FaaS層使用 Dart 語言開發,實現三端語言統一,有效屏蔽FaaS層語言學習成本。
協議一體:通過一體化框架屏蔽通信細節,前后端同一份State,減少協議轉換,前端同學調用FaaS服務時,如同調用本地函數一樣簡潔。
工程一體:前后端可以在同一個工程中進行開發,利用Dart特性可以通過Hot Reload機制進行快速開發聯調。
下面以閑魚下單頁一體化為例,通過頁面渲染與交互兩部分展開一體化實踐過程。
下單渲染一體化
從上圖左側可以看出,客戶端渲染此頁面需要在端側請求5個接口,處理渲染接口之間的邏輯,把接口返回的Data轉為為ViewModel。經過一體化改造之后,原有在端側的邏輯都移到FaaS層,包括聚合5個領域服務,處理業務邏輯,進行字段映射與頁面編排,端側無任何渲染與業務邏輯,直接獲取返回的ViewModel刷新頁面。以下是云端一體之后的流程圖。
下單頁交互操作一體化
從上圖右側可以看出,有4種操作都會改變實付款,原本這些操作處理邏輯都在端側處理,一體化改造之后,端側不存在任何計算邏輯,客戶端每次操作都會請求服務端,有FaaS進行紅包是否過期等數據校驗,再返回頁面數據進行刷新。
一體化研發框架
Nexus Framework:基于Flutter的一體化移動端UI框架。
Logic Engine:基于Flutter的一體化通信與調度框架。
Nexus Server:基于Dart Runtime的一體化服務端框架。
代碼示例
下圖為客戶端下單頁初始化的代碼示例:
下圖為FaaS層對客戶端發起的初始化請求的處理:
感謝各位的閱讀,以上就是“Flutter+FaaS雙端協議一體開發的方法是什么”的內容了,經過本文的學習后,相信大家對Flutter+FaaS雙端協議一體開發的方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。