Apache Mina Server 是一個網絡通訊應用框架,也就是說,它主要是對基於TCP/IP、UDP/IP協議棧的通訊框架(固然,也能夠提供JAVA 對象的序列化服務、虛擬機管道通訊服務等),Mina 能夠幫助咱們快速開發高性能、高擴展性的網絡通訊應用,Mina 提供了事件驅動、異步(Mina 的異步IO 默認使用的是JAVA NIO 做爲底層支持)操做的編程模型。
Mina 主要有1.x 和2.x 兩個分支,這裏咱們講解最新版本2.0,若是你使用的是Mina 1.x,
那麼可能會有一些功能並不適用。學習本文檔,須要你已掌握JAVA IO、JAVA NIO、JAVA
Socket、JAVA 線程及併發庫(java.util.concurrent.*)的知識。
Mina 同時提供了網絡通訊的Server 端、Client 端的封裝,不管是哪端,Mina 在整個網通
通訊結構中都處於以下的位置:
可見Mina 的API 將真正的網絡通訊與咱們的應用程序隔離開來,你只須要關心你要發送、
接收的數據以及你的業務邏輯便可。
一樣的,不管是哪端,Mina 的執行流程以下所示:
(1.) IoService:這個接口在一個線程上負責套接字的創建,擁有本身的Selector,監
聽是否有鏈接被創建。 html
(2.) IoProcessor:這個接口在另外一個線程上負責檢查是否有數據在通道上讀寫,也就是
說它也擁有本身的Selector,這是與咱們使用JAVA NIO 編碼時的一個不一樣之處,
一般在JAVA NIO 編碼中,咱們都是使用一個Selector,也就是不區分IoService
與IoProcessor 兩個功能接口。另外,IoProcessor 負責調用註冊在IoService 上
的過濾器,並在過濾器鏈以後調用IoHandler。
(3.) IoFilter:這個接口定義一組攔截器,這些攔截器能夠包括日誌輸出、黑名單過濾、
數據的編碼(write 方向)與解碼(read 方向)等功能,其中數據的encode 與decode
是最爲重要的、也是你在使用Mina 時最主要關注的地方。
(4.) IoHandler:這個接口負責編寫業務邏輯,也就是接收、發送數據的地方。 java
.......原文地址:http://www.cnblogs.com/feiling/archive/2012/11/17/2775444.html 編程