国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

淺談C#中一種類插件系統編寫的簡單方法(插件間、插件宿主間本身不需要通信)

2019-11-14 13:58:39
字體:
來源:轉載
供稿:網友

1.背景

三年多前還在上研時,用C#+反射機制寫過插件系統,后來又用MEF寫過插件系統。插件系統本身具有易于擴展的優勢,所以在實際項目中使用很頻繁。即使在B/S項目中,插件的思想也是大行其道,比如前端單頁面+AMD編程便可以理解為一種插件機制,以及后臺擴展項目統一打包為一個jar放入主系統jar文件中一起發布,也可以理解為插件思想的運用。

這里我們回到C/S插件系統編寫的問題上。由于之前諸多項目編寫是將插件編譯成dll,然后進行解析。這樣做有其好處,即宿主中可以對各個模塊解析,完成插件間、插件和主程序間的通信。但是在實際項目中,同樣也有其劣勢:

a.每一個插件被編譯成了dll,各模塊無法單獨運行,必須依托于主程序。

b.修改插件時,由于生成的是dll,無法快速直觀的查看修改以及調試。

c.每一個插件必須依賴于某一個規范。

當我們并不需要插件之間、插件和主程序之間有通信發生時,我們是否可以舍棄這種dll插件形式呢?

2.設計思路

此項目背景,即各模塊之間無需通信。并且為了適應各模塊能獨立運行以及各模塊需要單獨調試的需求,這里我直接將各模塊設計為單獨的系統,即編譯后生成exe。在主系統中,通過對配置文件的解譯,生成界面以及綁定相關回調事件。各插件exe以配置規則放入主程序文件夾下即可。

                       

3.進一步探討

a.C#調用exe,使用PRocess和 ProcessStartInfo配合完成。

 

 b.完成各模塊(exe)的單例模式。

由于是直接調用exe,無法利用傳統的單例模式實現。這里可以做一個字典表來存儲,目前哪些模塊已經被調用。

但是,當循環監聽模塊是否退出時,會導致系統卡頓,這里使用多線程來進行模塊開啟,解決監聽模塊導致的界面卡頓。

 

 c.主程序退出時,所有模塊(exe)退出。

用字典表存儲各模塊的實際進程,主程序退出時,將各進程殺死關閉。

 

4.項目例子展示

宿主界面:

 

點擊服務發布模塊:

 

 

 

                                                                                                   ——歡迎轉載,但保留版權,請于明顯處標明出處:http://www.survivalescaperooms.com/naaoveGIS/

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赫章县| 托克托县| 澳门| 巫山县| 新乐市| 屯留县| 阿坝县| 克拉玛依市| 福安市| 嵊州市| 利津县| 阿瓦提县| 罗江县| 资源县| 青冈县| 大同市| 临朐县| 洪湖市| 英德市| 绥德县| 富宁县| 陕西省| 日土县| 广平县| 布尔津县| 于田县| 阳春市| 乐清市| 海安县| 镇沅| 鹿邑县| 台东市| 宜都市| 牟定县| 襄汾县| 奉贤区| 额敏县| 公主岭市| 南安市| 柳州市| 富宁县|