W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們在編寫一個網(wǎng)絡(luò)應(yīng)用程序的時候需要實現(xiàn)某種 codec (編解碼器),有了codec就能夠?qū)⒃甲止?jié)數(shù)據(jù)與目標(biāo)程序數(shù)據(jù)的格式相互轉(zhuǎn)化。我們知道數(shù)據(jù)在網(wǎng)絡(luò)中的傳播都是以字節(jié)碼的數(shù)據(jù)形式進(jìn)行的,codec的組成部分有兩個,分別是:decoder(解碼器)和encoder(編碼器)。
編碼器和解碼器將一個字節(jié)序列轉(zhuǎn)換為另一個業(yè)務(wù)對象,那么我們要如何區(qū)分它們呢?
想到一個“消息”是一個結(jié)構(gòu)化的字節(jié)序列,語義為一個特定的應(yīng)用程序——它的“數(shù)據(jù)”。encoder 是組件,轉(zhuǎn)換消息格式適合傳輸(就像字節(jié)流),而相應(yīng)的 decoder 轉(zhuǎn)換傳輸數(shù)據(jù)回到程序的消息格式。邏輯上,“從”消息轉(zhuǎn)換來是當(dāng)作操作 outbound(出站)數(shù)據(jù),而轉(zhuǎn)換“到”消息是處理 inbound(入站)數(shù)據(jù)。
我們看看 Netty 的提供的類實現(xiàn)的 codec 。
解碼器負(fù)責(zé)將消息從字節(jié)或其他序列形式轉(zhuǎn)成指定的消息對象,編碼器的功能則相反;解碼器負(fù)責(zé)處理“入站”數(shù)據(jù),編碼器負(fù)責(zé)處理“出站”數(shù)據(jù)。編碼器和解碼器的結(jié)構(gòu)很簡單,消息被編碼后解碼后會自動通過ReferenceCountUtil.release(message)釋放,如果不想釋放消息可以使用ReferenceCountUtil.retain(message),這將會使引用數(shù)量增加而沒有消息發(fā)布,大多數(shù)時候不需要這么做。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: