轉自:http://blog.csdn.net/yoara/article/details/37324821
mina組件結構圖:
- IoService,負責處理I/O,直接子接口: IoAcceptor,IoConnector
- Filter chain,順序執行過濾器,編碼等
- IoHandler, 負責服務端處理業務邏輯
IoAcceptor:服務端 IoConnector:客戶端
服務端結構:
- IOAcceptor 監聽來自網絡的請求。
- 當新的連接建立時,一個新的session會被創建,該session用作對同一IP/端口組合的客戶端提供服務。
- 數據包需經過一系列的過濾器,這些過濾器可用來修改數據包的內容(如轉換對象、添加或修改信息等),其中將原始字節流轉換成POJO對象是非常有用的。當然這需要解編碼器提供支持。
- 最後這些數據包或轉化後的對象將交由IOHandler處理,我們將實現IOHandler用於處理具體的業務邏輯。
作用:
開啓監聽端口,等待請求的到來、處理他們、以及將發送對請求的響應。同時,服務端會爲每個連接創建session,在session週期內提供各種精度的服務,比如連接創建時(sessionCreated(IoSession session))、連接等待時(sessionIdle(IoSession session, IdleStatus status))、
(sessionClosed(IoSession session))等。mina的API爲TCP/UDP提供的一致性Server端操作。
客戶端結構:
- 客戶端首先需要創建IOConnector對象,綁定服務端的IP和端口。
- 一旦連接成功,一個於本次連接綁定的session對象將被創建。
- 客戶端發送給服務端的請求都需要經過一系列的fliter。
- 同樣,響應消息的接受也會經過一系列的filter再到IOHandler被處理。
發出請求,等待請求響應;