mina簡介及原理
一、簡介
1.基本概念
Apache Mina Server 是一個網路通訊應用框架,也就是說,它主要是對基於TCP/IP、UDP/IP協議棧的通訊框架(當然,也可以提供JAVA物件的序列化服務、虛擬機器管道通訊服務等),Mina可以幫助我們快速開發高效能、高擴充套件性的網路通訊應用,Mina提供了事件驅動、非同步(Mina的非同步IO預設使用的是JAVA NIO作為底層支援)操作的程式設計模型。Mina主要有1.x和2.x兩個分支。學習mina,需要已掌握JAVA IO、JAVA NIO、JAVASocket、JAVA執行緒及併發庫(java.util.concurrent.*)
2.執行流程
無論是哪端,Mina的執行流程如下所示:
(1) IoService:這個介面在一個執行緒上負責套接字的建立,擁有自己的Selector,監聽是否有連線被建立。
名詞解釋:選擇器(Selector) 是SelectableChannle
物件的多路複用器,Selector可以同時監控多個
SelectableChannel的
IO狀況,也就是說,利用
Selector可使一個單獨的執行緒管理多個
(2) IoProcessor:這個介面在另一個執行緒上,負責檢查是否有資料在通道上讀寫,也就是說它也擁有自己的Selector,這是與我們使用JAVA NIO 編碼時的一個不同之處,通常在JAVA NIO編碼中,我們都是使用一個Selector,也就是不區分IoService與IoProcessor兩個功能介面。另外,IoProcessor負責呼叫註冊在IoService上的過濾器,並在過濾器鏈之後呼叫IoHandler。
(3) IoFilter:這個介面定義一組攔截器,這些攔截器可以包括日誌輸出、黑名單過濾、資料的編碼(write
(4) IoHandler:這個介面負責編寫業務邏輯,也就是接收、傳送資料的地方。