正如 上文 結尾處提到,當增加一項新的業(yè)務,調試包含了這個新業(yè)務實現的插件對( AddinPair )時非常麻煩,因為在 ESFramework 4 層架構中,服務端功能插件加載于功能服務器( FS )上,客戶端插件加載在客戶端應用程序上,中間的通信還經過了應用服務器(AS)。這樣就要將 AS 、 FS 、 Client 都啟動起來,才能對插件 Pair 進行調試,并且在這樣調試的過程中,很多其它的因素會分散我們的注意力,比如多線程的影響、消息 Hook 的影響等等,這使得調試 Addin Pair 并不輕松,正是由于這個原因,促使我開發(fā)一個插件調試框架來簡化這個麻煩的過程。
我的想法是,在
VS.NET
調試模式中運行這個“插件調試框架”(一個
winForm
應用程序),加載要調試的
Addin Pair
,然后,啟動
“業(yè)務操作窗體”顯示出來,后續(xù)的交互將在兩個插件之間直接進行通信,而
VS.NET
提供了我們跟蹤到加載的插件的源碼中的能力,這樣就可以調試
Addin Pair
了。
“插件調試框架”應用程序的主界面如下:
測試模式中的“異常(功能服務器掉線)”用于模擬找不到對應服務端功能插件的情況。
我們知道,客戶插件(
PassiveAddin
)通過
IServerAgent
來發(fā)送請求獲取回復,在客戶端應用程序中,
IServerAgent
是對底層
Tcp
或
Udp
的封裝。在“插件調試框架”我們提供一個
IServerAgent
的實現給要調試的
PassiveAddin
使用,
ESFramework
給出的實現是
AddinBridge
類,它實現了
IServerAgent
接口,并且把
PassiveAddin
提交的請求直接提交給已加載的業(yè)務功能插件處理。
AddinBridge
實現如下:

AddinBridge
借助了
IAddinManagement
(插件管理器)來管理已加載的業(yè)務功能插件。
有了
AddinBridge
的支持,“插件調試框架”的實現就非常容易了,我將上圖主界面中的按鈕點擊事件源碼列在下面:
private IPassiveAddinpassiveAddin = null ;

你可以在54行代碼處添加斷點,然后就可以跟入兩個插件的源碼中調試了。
需要注意的是,為了VS.NET能順利的進入插件的源碼,在加載插件時,最好直接加載插件工程Debug目錄下的插件dll。
感謝關注!
轉到:
ESFramework 可復用的通信框架(序)
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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