摘要:遠(yuǎn)端代碼下發(fā),有什么設(shè)計(jì)思路一般大家都用用別人的,總不好。老王造了個(gè)輪子,我來描述一下。代碼,采用打包。蘋果自己實(shí)現(xiàn)的用到了,這個(gè)庫(kù)老王也使用了,,就是把一個(gè)語言暴露出來的接口,能讓其他語言來調(diào)用。
iOS 遠(yuǎn)端代碼下發(fā),有什么設(shè)計(jì)思路 ?
一般大家都用 JSPatch?
用別人的,總不好。老王造了個(gè)輪子,我來描述一下。
怎么設(shè)計(jì)這個(gè) Patch?
從原理上Patch 主要是 干什么的呢?
一般大公司的 App 在運(yùn)行的過程當(dāng)中,業(yè)務(wù)線非常復(fù)雜,可能會(huì)出現(xiàn)一些問題。
可以遠(yuǎn)端下發(fā)一個(gè)文件,開發(fā)的 App 通過 加載 這個(gè)文件,
實(shí)行 這個(gè) 代碼 補(bǔ)丁。
OC 可以的,因?yàn)槭莿?dòng)態(tài)語言,有 runtime ,所以才能搞這個(gè) patch。
OC 有自己的消息轉(zhuǎn)發(fā)流程。 Runtime 有 objc_msgSend 和 _objc_msgForward 。
Runtime 有這兩個(gè)方法,
這兩個(gè)函數(shù)特性,讓所有的函數(shù)調(diào)用都會(huì)走這兩個(gè)方法。
這樣 app 中有一個(gè) context, 可以執(zhí)行用于 patch 的語言。
本文中的 iOS 補(bǔ)丁方案直接運(yùn)用 這個(gè) JavaScriptCore,
就是使用 JavaScriptCore 提供的 JSContext.
能讓 JavaScript 語言 和 Objective-C 之間,有一個(gè)接口。然后就可以 JavaScript 與 Objective-C 相互調(diào)用了。
( 蘋果自己實(shí)現(xiàn)的 )
FFI, Foreign Function Interface ,就是把一個(gè)語言暴露出來的接口,能讓其他語言來調(diào)用。
Java 的 JNI 標(biāo)準(zhǔn),與 FFI 比較相似。
FFI ,首先遵從 Coding Convention ,就是定義遵守一些調(diào)用的協(xié)議和規(guī)定。
為什么要有 FFI 呢?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95774.html
摘要:八年時(shí)間,阿里集團(tuán)實(shí)現(xiàn)了內(nèi)部容器化鏡像化,經(jīng)歷了幾代演進(jìn)。容器技術(shù)在阿里的演進(jìn)過程伴隨著阿里技術(shù)架構(gòu)本身的演進(jìn)。 八年時(shí)間,阿里集團(tuán)實(shí)現(xiàn)了 100%內(nèi)部容器化鏡像化,經(jīng)歷了幾代演進(jìn)。本文將從最初的架構(gòu)開始,向大家介紹下阿里內(nèi)部的容器化演化過程。 PouchContainer 現(xiàn)在服務(wù)于阿里巴巴集團(tuán)和螞蟻金服集團(tuán)的絕大部分 BU, 包括交易&中間件,B2B/CBU/ICBU,搜索廣告數(shù)據(jù)...
閱讀 1515·2021-09-02 13:57
閱讀 1925·2019-08-30 15:55
閱讀 2517·2019-08-30 15:54
閱讀 2335·2019-08-30 15:44
閱讀 2788·2019-08-30 13:18
閱讀 535·2019-08-30 13:02
閱讀 858·2019-08-29 18:46
閱讀 1713·2019-08-29 11:25