Apache MINA 提供的是事件驅動的 API。它把與網絡相關的各類活動抽象成事件。網絡應用只須要對其感興趣的事件進行處理便可。事件驅動的 API 使得基於 Apache MINA 開發網絡應用變得比較簡單。應用不須要考慮與底層傳輸相關的具體細節,而只須要處理抽象的 I/O 事件。好比在實現一個服務端應用的時候,若是有新的鏈接進來,I/O 服務會產生 sessionOpened這樣一個事件。若是該應用須要在有鏈接打開的時候,執行某些特定的操做,只須要在 I/O 處理器中此事件處理方法 sessionOpened中添加相應的代碼便可。java
Mina基於JAVA NIO,屬於典型的Reactor架構模式,採用事件驅動編程;須要瞭解 NIO的機制!編程
IoFilter(I/O過濾器):定義一組過濾器(過濾器鏈),過濾器能夠包括日誌輸出、黑名單過濾、數據的編碼(write 方向)與解碼(read 方向)等數據處理功能;其中數據的encode 與 decode是最爲重要的、也是你在使用Mina 時最主要關注的地方。網絡
IoProcessor(I/O處理器):負責在另外一個線程上檢查信道上是否有數據讀寫,擁有本身的Selector(選擇器);session
與JAVA NIO不通之處:JAVA NIO中使用一個Selector,不區分IoService與 IoProcessor 兩個功能接口;IoProcessor 負責調用註冊在IoService 上的過濾器,並在過濾器鏈以後調用IoHandler。架構
** 未完待續:源碼DEMO地址後續會補上 **框架