(本文適用于ESFramework V0.3+)
在 ESFramework介紹之(7)-- 服務(wù)器代理IServerAgent(2006.06.06修正) 的介紹中,我們已經(jīng)認(rèn)識(shí)了IServerAgent的職責(zé)與作用,并且知道了 ITcpServerAgent和IUdpServerAgent是分別使用于Tcp和Udp的ServerAgent。但是它們與其它組件(比如通信組件、消息處理器、處理器工廠)之間的聯(lián)系是怎樣的,前文講的還不清楚,所以這里增加一篇文章,把這個(gè)關(guān)系理順。下面分別是ITcpServerAgent和IUdpServerAgent的組件關(guān)系圖:
上面兩個(gè)圖非常清晰的描述了組件間的依賴關(guān)系和消息的流向。
注意,上面的ITcpServerAgent和IUdpServerAgent兩個(gè)組件關(guān)系圖中右邊的部分是完全相同的,它們都是由IServerAgentHelper幫助構(gòu)建。紅線代表將消息發(fā)送出去,黑線代表對(duì)接收的消息的處理流程??梢钥吹絀TcpServerAgent和IUdpServerAgent都是從IResponseManager提取回復(fù)消息,以此才可能將異步的消息請(qǐng)求/回復(fù)轉(zhuǎn)化為同步的“方法調(diào)用”。
關(guān)于IUdpServerAgent,還有一個(gè)地方需要注意,我們?cè)诳蛻舳撕头?wù)端都使用相同的Udp網(wǎng)絡(luò)組件--IEsbUdp(可復(fù)用性是ESFramework發(fā)展過(guò)程中一直堅(jiān)守的目標(biāo)),只不過(guò)服務(wù)端為IEsbUdp裝配的消息分派器IMessageDispatcher復(fù)雜些。
在這兩個(gè)組件關(guān)系圖中,除了ISingleMessageDealer需要我們自己實(shí)現(xiàn)以外,其它的所有組件,ESFramework都提供了參考實(shí)現(xiàn),可以直接使用。
最后,引出一個(gè)問(wèn)題,那就是當(dāng)客戶端使用了點(diǎn)對(duì)點(diǎn)的通信時(shí),如果客戶A和客戶B之間能直接通信,那么A和B之間的P2PMessage就不需要經(jīng)過(guò)服務(wù)器轉(zhuǎn)發(fā),即不需要提交給IServerAgent,而是交給IP2PChannel發(fā)送;如果客戶A和客戶B之間不能直接通信,那么A和B之間的P2PMessage就需要經(jīng)過(guò)服務(wù)器轉(zhuǎn)發(fā)。為了對(duì)上層應(yīng)用屏蔽P2PMessage是通過(guò)服務(wù)器轉(zhuǎn)發(fā)器的還是通過(guò)IP2PChannel直接發(fā)送的,ESFramework引入了IMessageTransceiver,它的智能在于,如果P2PMessage可以通過(guò)IP2PChannel直接發(fā)送,則將其交給IP2PChannel,否則將其提交給IServerAgent由服務(wù)器轉(zhuǎn)發(fā)。這樣應(yīng)用只需要直接使用IMessageTransceiver提交(發(fā)送)消息就可以了,而不用關(guān)心下層的消息路由途徑。關(guān)于IMessageTransceiver和IP2PChannel的更多信息將在下文中介紹。
感謝關(guān)注!
上篇文章: ESFramework介紹之(33)―― AS與FS通信實(shí)現(xiàn)及相關(guān)
轉(zhuǎn)到: ESFramework 可復(fù)用的應(yīng)用框架(序)
在 ESFramework介紹之(7)-- 服務(wù)器代理IServerAgent(2006.06.06修正) 的介紹中,我們已經(jīng)認(rèn)識(shí)了IServerAgent的職責(zé)與作用,并且知道了 ITcpServerAgent和IUdpServerAgent是分別使用于Tcp和Udp的ServerAgent。但是它們與其它組件(比如通信組件、消息處理器、處理器工廠)之間的聯(lián)系是怎樣的,前文講的還不清楚,所以這里增加一篇文章,把這個(gè)關(guān)系理順。下面分別是ITcpServerAgent和IUdpServerAgent的組件關(guān)系圖:


上面兩個(gè)圖非常清晰的描述了組件間的依賴關(guān)系和消息的流向。
注意,上面的ITcpServerAgent和IUdpServerAgent兩個(gè)組件關(guān)系圖中右邊的部分是完全相同的,它們都是由IServerAgentHelper幫助構(gòu)建。紅線代表將消息發(fā)送出去,黑線代表對(duì)接收的消息的處理流程??梢钥吹絀TcpServerAgent和IUdpServerAgent都是從IResponseManager提取回復(fù)消息,以此才可能將異步的消息請(qǐng)求/回復(fù)轉(zhuǎn)化為同步的“方法調(diào)用”。
關(guān)于IUdpServerAgent,還有一個(gè)地方需要注意,我們?cè)诳蛻舳撕头?wù)端都使用相同的Udp網(wǎng)絡(luò)組件--IEsbUdp(可復(fù)用性是ESFramework發(fā)展過(guò)程中一直堅(jiān)守的目標(biāo)),只不過(guò)服務(wù)端為IEsbUdp裝配的消息分派器IMessageDispatcher復(fù)雜些。
在這兩個(gè)組件關(guān)系圖中,除了ISingleMessageDealer需要我們自己實(shí)現(xiàn)以外,其它的所有組件,ESFramework都提供了參考實(shí)現(xiàn),可以直接使用。
最后,引出一個(gè)問(wèn)題,那就是當(dāng)客戶端使用了點(diǎn)對(duì)點(diǎn)的通信時(shí),如果客戶A和客戶B之間能直接通信,那么A和B之間的P2PMessage就不需要經(jīng)過(guò)服務(wù)器轉(zhuǎn)發(fā),即不需要提交給IServerAgent,而是交給IP2PChannel發(fā)送;如果客戶A和客戶B之間不能直接通信,那么A和B之間的P2PMessage就需要經(jīng)過(guò)服務(wù)器轉(zhuǎn)發(fā)。為了對(duì)上層應(yīng)用屏蔽P2PMessage是通過(guò)服務(wù)器轉(zhuǎn)發(fā)器的還是通過(guò)IP2PChannel直接發(fā)送的,ESFramework引入了IMessageTransceiver,它的智能在于,如果P2PMessage可以通過(guò)IP2PChannel直接發(fā)送,則將其交給IP2PChannel,否則將其提交給IServerAgent由服務(wù)器轉(zhuǎn)發(fā)。這樣應(yīng)用只需要直接使用IMessageTransceiver提交(發(fā)送)消息就可以了,而不用關(guān)心下層的消息路由途徑。關(guān)于IMessageTransceiver和IP2PChannel的更多信息將在下文中介紹。
感謝關(guān)注!
上篇文章: ESFramework介紹之(33)―― AS與FS通信實(shí)現(xiàn)及相關(guān)
轉(zhuǎn)到: ESFramework 可復(fù)用的應(yīng)用框架(序)
ESFramework介紹之(34)―― ITcpServerAgent和IUdpServerAgent組件關(guān)系圖
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(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ì)您有幫助就好】元
