1、Codec比較
mina編碼解碼器(codec)創建實例可有以下選擇:
1) 每一次接收到的數據創建一次codec實例
2) 爲所有client鏈接創建一次codec實例
netty編碼解碼器創建實例可有以下選擇:
2) 爲所有client鏈接創建一次codec實例
2、Handler比較
Mina的handler創建實例可有以下選擇:
1) 爲所有client鏈接創建一次codec實例
Netty編碼解碼器創建實例可有以下選擇:
1) 每一次鏈接創建一次handler實例
2) 爲所有client鏈接創建一次handler實例
三、文檔比較
1、netty和mina文檔都比較多,但mina文檔不齊全,netty文檔比較清晰
四、UDP協議傳輸
1、 netty將UDP無連接的特性暴露出來;而mina對UDP進行了高級層次的抽象,可以把UDP當成"面向連接"的協議,Netty需要手動處理順序、丟包檢測、重發等等。
網上評價:
1. mina將內核和一些特性的聯繫過於緊密,使得用戶在不需要這些特性的時候無法脫離,相比下性能會有所下降;netty解決了這個設計問題。
2. netty基本的架構和mina幾乎完全一樣,使用時候思想上差不多;但是有很多細節的改進(比如說mina的IoSession每次讀寫完要調用flip(),netty的channel則不用,並支持zero copy)。
3. netty比mina使用起來更簡單。
4. 關於UDP鏈接:mina把TCP和UDP一樣當"有連接"的處理,一個UDP請求會按照address產生一個新的IoSession,過期時間是1分鐘,這樣做的好處是顯然的,但是對於有性能要求的項目就不好了,對一個無連接的東西cache 1分鐘,大多數時候可能是白cache了,做無用功。 Mina這樣做可能還有個初衷是連續解碼用的,比如一個包太大了,分了兩次傳輸;但是這樣的設計應該是udp大忌了。
相關的博客:http://my.oschina.net/leoson/blog?catalog=292948