鴻蒙崛起:探索新一代技術(shù) 課件 第9章-IPC與RPC_第1頁
鴻蒙崛起:探索新一代技術(shù) 課件 第9章-IPC與RPC_第2頁
鴻蒙崛起:探索新一代技術(shù) 課件 第9章-IPC與RPC_第3頁
鴻蒙崛起:探索新一代技術(shù) 課件 第9章-IPC與RPC_第4頁
鴻蒙崛起:探索新一代技術(shù) 課件 第9章-IPC與RPC_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

鴻蒙崛起第9章:IPC與RPC延遲符目錄CATALOG010203049.1IPC與RPC簡介9.2IPC與RPC通信開發(fā)9.3遠端狀態(tài)訂閱開發(fā)9.4IPC通信開發(fā)延遲符059.5章末知識概覽導(dǎo)

圖延遲符延遲符9.1IPC與RPC簡介PART延遲符019.1IPC與RPC簡介IPC,全稱是Inter-ProcessCommunication,指的是設(shè)備內(nèi)的進程間通信,它允許在同一個計算機系統(tǒng)中運行的不同進程(即不同的運行實例)之間進行數(shù)據(jù)交換和通信。進程是操作系統(tǒng)進行資源分配和調(diào)度的基本單位,而進程間通信是實現(xiàn)多個進程協(xié)同工作的關(guān)鍵技術(shù)。RPC,全稱是RemoteProcedureCall,指的是設(shè)備間的進程間通信,是一種計算機通信協(xié)議,它允許一個程序(客戶端)通過網(wǎng)絡(luò)向另一個程序(服務(wù)器)請求服務(wù),而無需了解底層網(wǎng)絡(luò)技術(shù)的細節(jié)。RPC使得分布式系統(tǒng)中的不同組件能夠像調(diào)用本地函數(shù)一樣調(diào)用遠程函數(shù)。IPC/RPC用于實現(xiàn)跨進程通信,不同的是前者使用Binder驅(qū)動,用于設(shè)備內(nèi)的跨進程通信,后者使用軟總線驅(qū)動,用于跨設(shè)備跨進程通信。需要跨進程通信的原因是因為每個進程都有自己獨立的資源和內(nèi)存空間,其他進程不能隨意訪問不同進程的內(nèi)存和資源,IPC/RPC便是為了突破這一點。這里需要注意的是Stage模型不能直接使用這里描述的IPC和RPC。9.1IPC與RPC簡介IPC和RPC通常采用客戶端-服務(wù)端(Client-Server)模型,在使用時,請求Client端進程可獲取Server端所在進程的代理(Proxy),并通過此代理讀寫數(shù)據(jù)來實現(xiàn)進程間的數(shù)據(jù)通信,更具體的講,首先客戶端會建立一個服務(wù)端的代理對象,這個代理對象具備和服務(wù)端一樣的功能,若想訪問服務(wù)端中的某一個方法,只需訪問代理對象中對應(yīng)的方法即可,代理對象會將請求發(fā)送給服務(wù)端;然后服務(wù)端處理接受到的請求,處理完之后通過驅(qū)動返回處理結(jié)果給代理對象;最后代理對象將請求結(jié)果進一步返回給客戶端。無論是IPC還是RPC,其結(jié)構(gòu)模型可以描述為如圖所示。上圖所展示的信息是:Stub會先注冊系統(tǒng)能力(SystemAbility)到系統(tǒng)能力管理者(SystemAbilityManager,縮寫SAMgr)中,SAMgr負責管理這些SA并向Client提供相關(guān)的接口。Client要和某個具體的SA通信,必須先從SAMgr中獲取該SA的代理Proxy對象,然后使用代理Proxy對象和SA通信。在整個通信過程中,如果使用的是IPC通信,則依賴的是Binder驅(qū)動,使用的是RPC通信,則依賴的是軟總線驅(qū)動。延遲符9.2IPC與RPC通信開發(fā)PART延遲符029.2IPC與RPC通信開發(fā)IPC/RPC的主要工作是讓運行在不同進程的Proxy和Stub互相通信,包括Proxy和Stub運行在不同設(shè)備的情況。這里舉一個ArkTS側(cè)的使用案例,在當前這個場景下有一些限制條件:僅限客戶端是三方應(yīng)用,服務(wù)端是系統(tǒng)應(yīng)用,具體步驟和代碼見附錄55(未附見教材)。延遲符9.3遠端狀態(tài)訂閱開發(fā)PART延遲符039.3遠端狀態(tài)訂閱開發(fā)IPC/RPC提供對遠端Stub對象狀態(tài)的訂閱機制,在遠端Stub對象消亡時,可觸發(fā)消亡通知告訴本地Proxy對象。這種狀態(tài)通知訂閱需要調(diào)用特定接口完成,當不再需要訂閱時也需要調(diào)用特定接口取消。使用這種訂閱機制的用戶,需要實現(xiàn)消亡通知接口DeathRecipient并實現(xiàn)onRemoteDied方法清理資源。該方法會在遠端Stub對象所在進程消亡或所在設(shè)備離開組網(wǎng)時被回調(diào)。值得注意的是,調(diào)用這些接口有一定的順序。首先,需要Proxy訂閱Stub消亡通知,若在訂閱期間Stub狀態(tài)正常,則在不再需要時取消訂閱;若在訂閱期間Stub所在進程退出或者所在設(shè)備退出組網(wǎng),則會自動觸發(fā)Proxy自定義的后續(xù)操作。這種訂閱機制適用于本地Proxy對象需要感知遠端Stub對象所在進程消亡,或所在設(shè)備離開組網(wǎng)的場景。當Proxy感知到Stub端消亡后,可適當清理本地資源。此外,RPC目前不提供匿名Stub對象的消亡通知,即只有向SAMgr注冊過的服務(wù)才能被訂閱消亡通知,IPC則支持匿名對象的消亡通知。下面例子為ArkTS側(cè)接口代碼示例:見附錄56(未附見教材)。延遲符9.4IPC通信開發(fā)PART延遲符049.4IPC通信開發(fā)IPC的主要工作是讓運行在不同進程的Proxy和Stub互相通信,而IPCCAPI是提供的C接口。IPCCAPI接口不直接提供跨進程通信能力,兩個進程之間的IPC通道建立,依賴

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論