天天看點

Apache Mina介紹

一、Apache Mina介紹

Apache Mina是一個能夠幫助使用者開發高性能和高伸縮性網絡應用程式的架構。它通過Java nio技術基于TCP/IP和UDP/IP協定提供了抽象的、事件驅動的、異步的API。

Apache Mina介紹

ApacheMINA是一個網絡應用程式架構,用來幫助使用者簡單地開發高性能和高可擴充性的網絡應用程式。它提供了一個通過Java NIO在不同的傳輸例如TCP/IP和UDP/IP上抽象的事件驅動的異步API。

Apache MINA 也稱為:

● NIO 架構庫

● 用戶端伺服器架構庫

● 一個網絡套接字庫

MINA雖然簡單但是仍然提供了全功能的網絡應用程式架構:

● 為不同的傳輸類型提供了統一的API:

○ 通過Java NIO提供TCP/IP 和 UDP/IP支援

○ 通過RXTX提供序列槽通訊(RS232)

○ In-VM管道通訊

○ 你能實作你自己的API!

● 過濾器作為一個擴充特性; 類似Servlet過濾器

● 低級和進階的API:

○ 低級: 使用位元組緩存(ByteBuffers)

○ 進階: 使用使用者定義的消息對象(objects)和編碼(codecs)

● 高度定制化線程模型:

○ 單線程

○ 一個線程池

○ 一個以上的線程池(也就是SEDA)

● 使用Java 5 SSL引擎提供沙盒(Out-of-the-box) SSL · TLS · StartTLS支援

● 超載保護和傳輸流量控制

● 利用模拟對象進行單元測試

● JMX管理能力

● 通過StreamIoHandler提供基于流的I/O支援

● 和知名的容器(例如PicoContainer、Spring)內建

● 從MINA平滑的遷移到Netty, MINA是Netty的前輩。

二、Apache Mina用戶端的通信過程:

通過SocketConnector同伺服器端建立連接配接。

連結建立之後I/O的讀寫交給了I/O Processor線程,I/O Processor是多線程的。

通過I/O Processor讀取的資料經過IoFilterChain裡所有配置的IoFilter,IoFilter進行消息的過濾,格式的轉換,在這個層面可以制定一些自定義的協定。

最後IoFilter将資料交給Handler進行業務處理,完成了整個讀取的過程。

寫入過程也是類似,隻是剛好倒過來,通過IoSession.write寫出資料,然後Handler進行寫入的業務處理,處理完成後交給IoFilterChain,進行消息過濾和協定的轉換,最後通過I/O Processor将資料寫出到socket通道。

三、Apache Mina  Server端和Client端:

由于Server端和Client端都是基于以上三個元件的,是以對于Server端和Client端程式設計來說就都有類似的代碼結構。

對于Server端來說: 

1. 建立I/O service - 這裡就是建立IOAcceptor類監聽端口。 

2. 建立I/O Filter Chain - 這裡就是告訴使用那些IoFilter。 

3. 建立I/O Handler - 自己的業務邏輯。  

對于Client端來說: 

1. 建立I/O service - 這裡就是建立IOConnector類來建立到Server端的連接配接。 

2. 建立I/O Filter Chain - 這裡就是告訴使用那些IoFilter。 

3. 建立I/O Handler - 自己的業務邏輯。

繼續閱讀