久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

一名一線開發對于App架構和組件化的思考

2021-02-22    分類: 網站建設

關于App架構、組件化,本文的內容不會涉及到具體代碼層面,也不會介紹怎樣使用Cocoapods去做組件化;而是站在軟件工程的角度上,結合自己多年一線開發經驗,去分析如何做App架構,如何通盤考慮什么樣的架構才是合理的,契合自身業務的,以及架構落地過程中應該規避哪些問題。

名詞解釋:本文中所提到的架構不是實際工程中代碼架構(MVC、MVVM、MVP),確切的說是一種應用分層架構。而MVC、MVVM、MVP本質是一種軟件架構模式,是App實現過程中的一種編碼模式或者編碼規范。

iOS系統架構回顧

一名一線開發對于App架構和組件化的思考

如上圖所示,經典的iOS系統架構分為四層,自下而上分為核心操作系統層、核心服務層、媒體層、用戶交互層。

Cocoa Touch:提供與用戶交互的相關能力,包括觸摸等,最常用的UIKit庫就在該層;除此之外還有MapKit、Address BookUI、PhotosUI等。

Media Layer:提供圖形與音視頻相關功能的接口,例如Core Animation、OpenGL ES等。

Core Services:最常用的有Core Foundation、Foundation、CFNetwork、CoreData等。提供最基礎的能力,比如數組、字典、HashMap、套接字等基礎數據結構。

Core OS:包含Mach、Kernel、BSD、Socket以及Sandbox等,它主要提供了底層操作的接口,對于應用開發來講直接用到的不是很多。

都說iOS系統牛逼,牛逼在哪?牛逼就牛逼在它有合理的架構分層,還有合理的Api設計,讓你能夠躺著就能做iOS開發,暢享絲滑!它牛逼的文件管理和文件隔離機制讓你不需要過多考慮iOS系統安全性問題,逆向開發除外,因為它總是Bug般的存在????。

Q:iOS系統架構這四層之間是如何進行通信和交互的,是否合理?

A:直接引用頭文件,調用下層提供的Api進行交互。關于是否合理,我想說的是只要Api設計的足夠合理,足夠能應對未來一段時間內SDK內部可能的變動,或者說SDK本身是一個很基礎的庫,比如Foundation庫等,我覺得直接引入頭文件無傷大雅,具體的我們稍后再討論。

設計一個合理的應用分層架構

麻雀雖小五臟俱全,要想展翅高飛,每個環節缺一不可。

關于如何設計一個合理的應用分層架構,這里我們拿蓋樓這件事做比喻,筆者干過建筑搬過磚,所以對于蓋樓流程相對來說比較熟悉。

第一步:打地基、支模板、澆灌水泥搭架子、搬磚壘墻,這是一切的基礎,高樓要屹立不倒,需要這些模塊的長久有力的支撐才行。抽象到應用架構里面,我們稱之為基礎模塊,其主要提供應用最基礎的能力。

第二步:鋪地面、造門,其中門在臥室、餐廳都可能會用到。抽象到應用架構里面,我們稱之為公共業務模塊,它主要提供了一些通用的業務模塊或者通用的組件。

第三步:給大樓賦能,臥室、餐廳、洗漱間等一應俱全,有了這些才能真正體現蓋大樓的意義。臥室等功能都要用到磚、墻、門等基礎模塊。在應用架構中,我們把臥室、廚房、洗漱等獨立功能抽象為普通業務模塊,每個業務模塊都代表一個具體的功能,業務模塊間沒有強關聯關系。

Q:除了以上的部分,是否還缺點什么東西?

A:樓層跟樓層之間需要電梯連接通信,臥室和廚房之間也需要通道進行連接。同樣對于應用來講,模塊間的通信也需要一個媒介連接起來,我們稱之為總線(Bus)。后續會詳細介紹如何實現一個總線,讓你的模塊各自分工,且模塊間的通信暢通無阻。

經過分析梳理,我們很容易能夠畫出如下的應用架構圖,圖中每層都標出了該層大致包含哪些內容。

一名一線開發對于App架構和組件化的思考

圖中,我們按照“蓋大樓”的思路,進一步抽象羅列出了一個App應該包含哪些結構。

應用架構實施落地

在iOS平臺中,我們一般會通過Cocoapods去管理、集成自己的組件。按照工廠化生產App的理念,結合Cocoapods我畫出了如下的App集成圖。

一名一線開發對于App架構和組件化的思考

基礎模塊:因模塊高度獨立,且高頻使用,若公司內部有多個App同時需要依賴,建議單獨創建私有庫Specs。

公共業務模塊:功能相對獨立,根據業務需求來決定是否單獨創建私有庫Specs。

Cocoapods公有庫:所有公司內部App,強烈建議不要直接引入公有Specs。這樣做有兩點好處:

  1. 跟外部環境有效隔離,第三方庫發生問題,公司內部可控。
  2. 公有庫太大,每次repo update耗時太長,國內的環境你懂的,沒有科學上網,至少一個小時過去repo也未必更新完畢。所以通用的方案是,若公司內部引用了第三方庫,按照依賴倒置的原則,建議封裝一層之后放到Basic Specs供業務方使用。在這里推薦一個科學上網工具,可自行搭建
  3. 一名一線開發對于App架構和組件化的思考

    通過上圖可以發現,首頁組件實際只是獲取了登錄態,但登錄模塊沒有提供對應服務,則只能通過引用頭文件的方式把該組件import進來,兩者耦合在一起。

    利用中間件的概念,我們可以在兩個模塊之間建立一個服務層,專門用來進行模塊間的數據通信,或者非界面跳轉的小粒度組件的數據通信。這樣就很好的解決了兩個組件的橫向依賴問題。

    業務模塊間的橫向依賴。

    這里主要說的是那些業務功能獨立、業務線之間的橫向依賴。舉例說明,首頁模塊可能帶有業務A、業務B、業務C的入口,如果沒有做組件化,則首頁模塊連同A、B、C業務都耦合在一起。這里推薦幾個比較比較常用的路由解決方案。

    • JLRoutes-URL routing library for iOS with a simple block-based API。
    • BeeHive-iOS的App模塊化編程的框架實現方案,吸收了Spring框架Service的理念來實現模塊間的API耦合。
    • CTMediator-基于Mediator模式和Target-Action模式。

    Q:我該如何設計一個路由,用于模塊間的跳轉?

    A:設計路由需要遵循幾個原則。

    • 第一,便于集成,最小的改動即可實現一個路由。
    • 第二,大限度把參數正確性校驗提前,能在編譯時校驗就不要在運行時校驗。
    • 第三,盡可能的支持多種注冊方式,靜態注冊、動態注冊、服務配置等。

    新聞名稱:一名一線開發對于App架構和組件化的思考
    文章鏈接:http://www.js-pz168.com/news25/102325.html

    成都網站建設公司_創新互聯,為您提供網站收錄移動網站建設動態網站域名注冊Google搜索引擎優化

    廣告

    聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

    綿陽服務器托管
    久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
    国产精品每日更新| 久久99精品国产.久久久久| 精品综合久久久久久8888| 成人性生交大合| 久久久久久久久久码影片| 日本韩国视频一区二区| 26uuu另类欧美| 亚洲国产精品久久人人爱| 国产乱码精品一区二区三区av| 99r国产精品视频| 在线天堂一区av电影| 精品噜噜噜噜久久久久久久久试看 | 色狠狠色噜噜噜综合网| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产亚洲欧美日韩日本| 天天做天天摸天天爽国产一区| 成人黄色国产精品网站大全在线免费观看| 国产日韩欧美综合精品| 日本高清视频一区二区| 国产欧美综合在线| 免费人成在线不卡| 国产精品对白刺激久久久| 中文字幕一区二区三区最新| 国产亚洲一区二区在线观看| 日本不卡中文字幕| julia一区二区中文久久94| 色狠狠色狠狠综合| 国产精品女上位| 国内精品国产成人国产三级粉色| 精品欧美日韩| 欧美一区在线视频| 亚洲午夜久久久久中文字幕久| voyeur盗摄精品| 一本色道久久综合亚洲aⅴ蜜桃| 国产日产欧美一区二区视频| 另类专区欧美蜜桃臀第一页| 久久久久久久久四区三区| 日韩写真欧美这视频| 亚洲超碰精品一区二区| 成人综合av网| 91精品国产一区二区三区香蕉| 亚洲综合视频在线观看| 91精品入口蜜桃| 欧美日韩视频不卡| 亚洲一区在线看| 3d精品h动漫啪啪一区二区| 欧美图区在线视频| 亚洲一区在线视频观看| 99精品国产一区二区| 88在线观看91蜜桃国自产| 午夜精品爽啪视频| 精品国产福利| 精品国产免费人成在线观看| 免费看欧美女人艹b| 欧美日韩精品一区| 国产亚洲短视频| 国产成人av电影在线| 日本乱码高清不卡字幕| 亚洲精品美腿丝袜| 国产精品 日韩| 精品欧美一区二区在线观看| 久久精品国产99久久6| 日韩av一级大片| 中文字幕一区在线观看视频| 成人18视频日本| 在线播放中文字幕一区| 强制捆绑调教一区二区| 日韩欧美电影一区二区| 国产精品久久久一本精品| av高清久久久| 欧美一区二区三区免费| 另类小说视频一区二区| 在线一区高清| 亚洲成人动漫在线免费观看| 鲁片一区二区三区| 国产精品欧美一区二区三区| av亚洲精华国产精华精| 欧美一区二区三区喷汁尤物| 久久99精品久久久久久国产越南| 一区二区三区视频| 一区二区免费看| 久久青青草综合| 中文字幕不卡在线播放| 91亚洲精华国产精华精华液| 日韩免费一区二区三区在线播放| 国内精品写真在线观看 | 亚洲成av人片一区二区三区| 欧美在线一区二区三区四区| 亚洲图片欧美激情| 国产精品大全| 中文字幕av一区二区三区免费看| 94-欧美-setu| 久久免费国产精品| 99久久伊人网影院| 欧美精品一区二区蜜臀亚洲| 成人一级视频在线观看| 日韩一卡二卡三卡四卡| 国产黄色成人av| 欧美一区二区美女| 国产成人综合自拍| 日韩一区二区在线播放| 国产丶欧美丶日本不卡视频| 69堂亚洲精品首页| 国产高清亚洲一区| 日韩午夜精品视频| 成人激情动漫在线观看| 欧美mv日韩mv亚洲| 91在线视频播放| 国产日韩av一区| 国产一区福利视频| 亚洲欧美一区二区不卡| 欧美日韩免费精品| 亚洲妇女屁股眼交7| 亚洲一区二区在线观| 日韩二区在线观看| 欧美在线观看一二区| 国产在线一区观看| 欧美一级二级三级蜜桃| av一区二区三区| 国产欧美日韩综合精品一区二区| 国产精品18毛片一区二区| 亚洲欧美在线观看| 日日骚一区二区网站| 天堂成人国产精品一区| 欧美在线一二三| 国产精品一区久久久久| 精品少妇一区二区三区在线播放 | 久久成人综合网| 67194成人在线观看| 东方欧美亚洲色图在线| 久久亚洲一区二区三区四区| 高清国产一区| 一区二区三区视频在线看| 在线码字幕一区| 韩国中文字幕2020精品| 欧美成人女星排行榜| 成人欧美一区二区三区黑人免费| 中文字幕亚洲欧美在线不卡| 无遮挡亚洲一区| 麻豆国产91在线播放| 日韩一区二区三| av一区二区三区免费| 亚洲免费大片在线观看| 一区二区视频在线播放| 国产精品一区在线观看乱码| 2014亚洲片线观看视频免费| 久久99蜜桃综合影院免费观看| 亚洲福利一二三区| 在线播放中文字幕一区| 91精品网站| 亚洲一区在线观看网站| 欧美日韩国产小视频| 91首页免费视频| 亚洲最色的网站| 欧美三级在线看| 91在线精品一区二区三区| 亚洲欧美日韩精品久久久久| 91精品福利视频| 成人av在线一区二区| 亚洲视频中文字幕| 91福利社在线观看| 99精品视频中文字幕| 一区二区三区四区在线| 欧美日韩国产中文| 91九色在线观看| 亚洲高清免费视频| 欧美一三区三区四区免费在线看 | 在线观看视频欧美| 99久久精品久久久久久清纯| 亚洲蜜臀av乱码久久精品蜜桃| 91久久精品一区二区| 97精品国产97久久久久久久久久久久| 日韩美女啊v在线免费观看| 91官网在线免费观看| 99国内精品久久| 亚洲一区二区三区视频在线播放| 欧美日韩dvd在线观看| 国产精品一区二区a| 人人超碰91尤物精品国产| 亚洲精品一区二区三区99| 日韩亚洲视频在线| 成人综合在线视频| 一区二区视频在线| 欧美一区二区三区免费在线看| 免费成人av网站| 国产精品亚洲人在线观看| 亚洲视频一二区| 7777女厕盗摄久久久| 久热国产精品视频一区二区三区| 狠狠色狠狠色合久久伊人| 国产精品久线在线观看| 欧美三区在线观看| 久久av一区二区三区亚洲| 国产一区二区女| 亚洲美腿欧美偷拍| 日韩欧美资源站| 亚洲电影免费| 97超碰人人模人人爽人人看| 人人狠狠综合久久亚洲| 国产精品免费免费|