Apache MINA 2 是一個(gè)開(kāi)發(fā)高性能和高可伸縮性網(wǎng)絡(luò)應(yīng)用程序的網(wǎng)絡(luò)應(yīng)用框架。它提供了一個(gè)抽象的事件驅(qū)動(dòng)的異步 API,可以使用 TCP/IP、UDP/IP、串口和虛擬機(jī)內(nèi)部的管道等傳輸方式。Apache MINA 2 可以作為開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用程序的一個(gè)良好基礎(chǔ)。本文將介紹 Apache MINA 2 的基本概念和 API,包括 I/O 服務(wù)、I/O 會(huì)話、I/O 過(guò)濾器和 I/O 處理器。另外還將介紹如何使用狀態(tài)機(jī)。本文包含簡(jiǎn)單的計(jì)算器服務(wù)和復(fù)雜的聯(lián)機(jī)游戲兩個(gè)示例應(yīng)用。
Apache MINA 2 是一個(gè)開(kāi)發(fā)高性能和高可伸縮性網(wǎng)絡(luò)應(yīng)用程序的網(wǎng)絡(luò)應(yīng)用框架。它提供了一個(gè)抽象的事件驅(qū)動(dòng)的異步 API,可以使用 TCP/IP、UDP/IP、串口和虛擬機(jī)內(nèi)部的管道等傳輸方式。Apache MINA 2 可以作為開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用程序的一個(gè)良好基礎(chǔ)。下面將首先簡(jiǎn)單介紹一下 Apache MINA 2。
Apache MINA 是 Apache 基金會(huì)的一個(gè)開(kāi)源項(xiàng)目,目前最新的版本是 2.0.0-RC1。本文中使用的版本是 2.0.0-M6。從 參考資料 中可以找到相關(guān)的下載信息。下面首先介紹基于 Apache MINA 的網(wǎng)絡(luò)應(yīng)用的一般架構(gòu)。
基于 Apache MINA 的網(wǎng)絡(luò)應(yīng)用的架構(gòu)
基于 Apache MINA 開(kāi)發(fā)的網(wǎng)絡(luò)應(yīng)用,有著相似的架構(gòu)。 圖 1 中給出了架構(gòu)的示意圖。
圖 1. 基于 Apache MINA 的網(wǎng)絡(luò)應(yīng)用的架構(gòu)
如 圖 1 所示,基于 Apache MINA 的網(wǎng)絡(luò)應(yīng)用有三個(gè)層次,分別是 I/O 服務(wù)、I/O 過(guò)濾器和 I/O 處理器:
- I/O 服務(wù):I/O 服務(wù)用來(lái)執(zhí)行實(shí)際的 I/O 操作。Apache MINA 已經(jīng)提供了一系列支持不同協(xié)議的 I/O 服務(wù),如 TCP/IP、UDP/IP、串口和虛擬機(jī)內(nèi)部的管道等。開(kāi)發(fā)人員也可以實(shí)現(xiàn)自己的 I/O 服務(wù)。
- I/O 過(guò)濾器:I/O 服務(wù)能夠傳輸?shù)氖亲止?jié)流,而上層應(yīng)用需要的是特定的對(duì)象與數(shù)據(jù)結(jié)構(gòu)。I/O 過(guò)濾器用來(lái)完成這兩者之間的轉(zhuǎn)換。I/O 過(guò)濾器的另外一個(gè)重要作用是對(duì)輸入輸出的數(shù)據(jù)進(jìn)行處理,滿足橫切的需求。多個(gè) I/O 過(guò)濾器串聯(lián)起來(lái),形成 I/O 過(guò)濾器鏈。
- I/O 處理器:I/O 處理器用來(lái)執(zhí)行具體的業(yè)務(wù)邏輯。對(duì)接收到的消息執(zhí)行特定的處理。
創(chuàng)建一個(gè)完整的基于 Apache MINA 的網(wǎng)絡(luò)應(yīng)用,需要分別構(gòu)建這三個(gè)層次。Apache MINA 已經(jīng)為 I/O 服務(wù)和 I/O 過(guò)濾器提供了不少的實(shí)現(xiàn),因此這兩個(gè)層次在大多數(shù)情況下可以使用已有的實(shí)現(xiàn)。I/O 處理器由于是與具體的業(yè)務(wù)相關(guān)的,一般來(lái)說(shuō)都是需要自己來(lái)實(shí)現(xiàn)的。
Apache MINA 提供的是事件驅(qū)動(dòng)的 API。它把與網(wǎng)絡(luò)相關(guān)的各種活動(dòng)抽象成事件。網(wǎng)絡(luò)應(yīng)用只需要對(duì)其感興趣的事件進(jìn)行處理即可。事件驅(qū)動(dòng)的 API 使得基于 Apache MINA 開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用變得比較簡(jiǎn)單。應(yīng)用不需要考慮與底層傳輸相關(guān)的具體細(xì)節(jié),而只需要處理抽象的 I/O 事件。比如在實(shí)現(xiàn)一個(gè)服務(wù)端應(yīng)用的時(shí)候,如果有新的連接進(jìn)來(lái),I/O 服務(wù)會(huì)產(chǎn)生
sessionOpened
這樣一個(gè)事件。如果該應(yīng)用需要在有連接打開(kāi)的時(shí)候,執(zhí)行某些特定的操作,只需要在 I/O 處理器中此事件處理方法
sessionOpened
中添加相應(yīng)的代碼即可。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
