1. 程式人生 > >mina簡介及原理

mina簡介及原理

一、簡介

1.基本概念

       Apache Mina Server 是一個網路通訊應用框架,也就是說,它主要是對基於TCP/IPUDP/IP協議棧的通訊框架(當然,也可以提供JAVA物件的序列化服務、虛擬機器管道通訊服務等),Mina可以幫助我們快速開發高效能、高擴充套件性的網路通訊應用,Mina提供了事件驅動、非同步(Mina的非同步IO預設使用的是JAVA NIO作為底層支援)操作的程式設計模型。Mina主要有1.x2.x兩個分支學習mina,需要已掌握JAVA IOJAVA NIOJAVASocketJAVA執行緒及併發庫(java.util.concurrent.*)

的知識。Mina同時提供了網路通訊的Server端、Client端的封裝MinaAPI 將真正的網路通訊與我們的應用程式隔離開來,你只需要關心你要傳送、接收的資料以及你的業務邏輯即可。

2.執行流程

無論是哪端,Mina的執行流程如下所示:

(1) IoService:這個介面在一個執行緒上負責套接字的建立,擁有自己的Selector監聽是否有連線被建立。

名詞解釋:選擇器(Selector) 是SelectableChannle 物件的多路複用器,Selector可以同時監控多個 SelectableChannelIO狀況,也就是說,利用 Selector可使一個單獨的執行緒管理多個

Channelselector是非阻塞 IO的核心。

(2) IoProcessor:這個介面在另一個執行緒上,負責檢查是否有資料在通道上讀寫,也就是說它也擁有自己的Selector,這是與我們使用JAVA NIO 編碼時的一個不同之處,通常在JAVA NIO編碼中,我們都是使用一個Selector,也就是不區分IoServiceIoProcessor兩個功能介面。另外,IoProcessor負責呼叫註冊在IoService上的過濾器,並在過濾器鏈之後呼叫IoHandler

(3) IoFilter:這個介面定義一組攔截器,這些攔截器可以包括日誌輸出、黑名單過濾、資料的編碼(write

方向)與解碼(read方向)等功能,其中資料的encodedecode是最為重要的、也是你在使用Mina時最主要關注的地方。

(4) IoHandler:這個介面負責編寫業務邏輯,也就是接收、傳送資料的地方。