中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現插件構架

發布時間:2021-07-16 10:48:55 來源:億速云 閱讀:152 作者:chen 欄目:編程語言

這篇文章主要講解了“C#如何實現插件構架”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C#如何實現插件構架”吧!

假設你設計的程序已經部署到用戶的計算機上,并且能夠正常運行了。但是有一天,用戶打來了電話——他們要求增加新的功能。確定了用戶的需求后,你竟然發現原有的軟件架構已經無法勝任新增任務的需求——你需要重新設計這個應用了!但問題是,就算你又用了一個開發周期完成了用戶需要的應用,卻不能保證用戶的需求不會再次變更。也就是說,需求蔓延的可能性依然存在。因此,這種情況下C#實現插件構架更能顯示出它的優越性。

一. 幾個解決方案的對比

我總結了一下我所接觸到的C#實現插件構架,大致上可分為以下幾類:

1.腳本式

使用某種語言把插件的程序邏輯寫成腳本代碼。而這種語言可以是 Python ,或是其他現存的已經經過用戶長時間考驗的腳本語言。甚至,你可以自行設計一種腳本語言來配合你程序的特殊需要。當然,用當今***的 XML 是再合適不過了。

這種形式的特點在于,稍有點編程知識的用戶就可以自行修改你的腳本( ^_^ 假如你不加密它的話)。我們無法論證這是好處還是壞處。因為,這種情況所造成的后果是不可預知的。

2.動態函數庫 DLL

插件功能以動態庫函數的形式存在。主程序通過某種渠道(插件編寫者或某些工具)獲得插件 DLL 中的函數簽名,然后在合適的地方調用它們。用過 Matlab 的讀者都知道, Matlab 中的各項功能幾乎都是些動態鏈入的函數。

3.聚合式

顧名思義,就是把插件功能直接寫成 EXE 。主程序除了完成自己的職責外,還負責調度這些“插件”。我不喜歡這種形式。這使插件與插件之間,主程序與插件之間(主要是這一點)的信息交流困難了許多。巴比倫塔的失敗 [1] 從某種程度上講就是信息交流無法實現造成的。

4.COM 組件

COM [2] 的產生給這個世界增添了幾分活力。只有接口!我們的插件需要做的只是實現程序定義的接口。主程序不需要知道插件怎樣實現預定的功能,它只需要通過接口訪問插件,并提供主程序相關對象的接口。這樣一來,主程序與各插件之間的信息交流就變得異常簡單。并且,插件對于主程序來說是完全透明的。

二. 決策

C# 是面向對象的程序設計語言。它提供了 interface 關鍵字來直接定義接口。同時, System.Reflection 命名空間也提供了訪問外部程序集的一系列相關對象。這就為我們在C#實現插件構架打下了堅實的基礎。

感謝各位的閱讀,以上就是“C#如何實現插件構架”的內容了,經過本文的學習后,相信大家對C#如何實現插件構架這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漠河县| 朝阳区| 北票市| 新邵县| 布拖县| 栾川县| 金华市| 盖州市| 蓝田县| 株洲县| 南宫市| 镇安县| 葫芦岛市| 康保县| 鹤峰县| 金昌市| 本溪市| 登封市| 元氏县| 松溪县| 新化县| 南华县| 隆化县| 和顺县| 迁西县| 油尖旺区| 肇州县| 镇赉县| 寿宁县| 松原市| 翁牛特旗| 开鲁县| 津南区| 宁强县| 文山县| 佛冈县| 常山县| 门头沟区| 丹棱县| 光泽县| 南部县|