Apache Mina開(kāi)發(fā)手冊(cè)之三
作者:chszs,轉(zhuǎn)載需注明。博客主頁(yè):http://blog.csdn.net/chszs
2、Mina服務(wù)器的架構(gòu)
Mina服務(wù)器的架構(gòu)圖如下所示:
1)IOAcceptor即I/O接收器,負(fù)責(zé)監(jiān)聽(tīng)網(wǎng)絡(luò)連接和發(fā)過(guò)來(lái)的數(shù)據(jù)包。
2)對(duì)于任一新連接,會(huì)創(chuàng)建一個(gè)新會(huì)話,隨后所有從該IP地址:端口發(fā)送過(guò)來(lái)的請(qǐng)求都會(huì)由該會(huì)話進(jìn)行處理。
3)會(huì)話接收到的所有包,都會(huì)通過(guò)整個(gè)過(guò)濾器鏈的處理。過(guò)濾器可用于修改包的內(nèi)容(比如轉(zhuǎn)換對(duì)象,添加/刪除信息等),把原始的字節(jié)轉(zhuǎn)換成高級(jí)對(duì)象,反之亦然,以及包編解碼器PacketEncoder和PacketDecoder等都是相當(dāng)有用的。
4)最后包通過(guò)IOHandler句柄處理或轉(zhuǎn)換,以滿(mǎn)足業(yè)務(wù)的需求。
3、基于Mina的客戶(hù)端架構(gòu)
Mina客戶(hù)端需要連接到服務(wù)器,發(fā)送消息并處理響應(yīng),它的架構(gòu)圖如下所示:
1)客戶(hù)端首先創(chuàng)建IOConnector連接器(Mina為Socket連接構(gòu)建的),啟動(dòng)時(shí)與服務(wù)器綁定。
2)一旦連接建立,會(huì)創(chuàng)建會(huì)話,并與連接相關(guān)聯(lián)。
3)應(yīng)用程序或客戶(hù)端向會(huì)話寫(xiě)入數(shù)據(jù),使得數(shù)據(jù)被發(fā)送到服務(wù)器,而后通過(guò)過(guò)濾器鏈。
4)從服務(wù)器收到的響應(yīng)或消息也會(huì)遍歷整個(gè)過(guò)濾器鏈,到達(dá)IOHandler句柄,進(jìn)行處理。
六、創(chuàng)建Mina客戶(hù)端
下面我們編寫(xiě)一個(gè)求和運(yùn)算的客戶(hù)端為例。
可見(jiàn),要構(gòu)建Mina客戶(hù)端,我們需要完成以下步驟:
1)創(chuàng)建連接器
2)創(chuàng)建過(guò)濾器鏈
3)創(chuàng)建IOHandler句柄,并添加到連接器
4)綁定到服務(wù)器
下面詳細(xì)說(shuō)明。
1、創(chuàng)建連接器
要發(fā)送消息到服務(wù)器,我們必須向會(huì)話寫(xiě)入消息數(shù)據(jù)。