成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#實(shí)現(xiàn)插件構(gòu)架淺析

開發(fā) 后端
這里介紹C#實(shí)現(xiàn)插件構(gòu)架,C# 是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。它提供了 interface 關(guān)鍵字來直接定義接口。同時(shí), System.Reflection 命名空間也提供了訪問外部程序集的一系列相關(guān)對象。

C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#實(shí)現(xiàn)插件構(gòu)架,包括介紹幾個(gè)解決方案的對比等方面。

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

一. 幾個(gè)解決方案的對比

我總結(jié)了一下我所接觸到的C#實(shí)現(xiàn)插件構(gòu)架,大致上可分為以下幾類:

1.腳本式

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

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

2.動態(tài)函數(shù)庫 DLL

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

3.聚合式

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

4.COM 組件

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

二. 決策

C# 是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。它提供了 interface 關(guān)鍵字來直接定義接口。同時(shí), System.Reflection 命名空間也提供了訪問外部程序集的一系列相關(guān)對象。這就為我們在C#實(shí)現(xiàn)插件構(gòu)架打下了堅(jiān)實(shí)的基礎(chǔ)。

【編輯推薦】

  1. C# this關(guān)鍵字詳解
  2. C#調(diào)用析構(gòu)方法詳解
  3. C#釋放托管資源簡單描述
  4. C#單路代理簡單分析
  5. C#文法產(chǎn)生式概述
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-18 10:14:19

C#插件構(gòu)架

2009-08-31 16:48:02

C#實(shí)現(xiàn)IDispos

2009-09-01 18:29:24

C#實(shí)現(xiàn)多個(gè)接口

2011-06-03 10:15:13

2009-08-28 15:57:56

C#線程傳遞參數(shù)

2009-08-21 09:20:44

C#異步套接字

2009-09-09 11:29:32

C# TextBox事

2009-08-13 18:15:06

C#繼承構(gòu)造函數(shù)

2009-09-02 17:24:44

C#關(guān)機(jī)代碼

2009-09-07 09:36:29

C# DisposeDispose方法

2009-08-28 16:03:15

C#程序?qū)崿F(xiàn)鼠標(biāo)移動

2009-08-26 09:54:45

C#打印預(yù)覽C#打印

2009-08-07 17:25:37

C# SortedLi

2009-08-17 18:34:50

C# ChangeCo

2009-08-14 17:45:52

C# ArrayLis

2009-09-09 16:53:49

C# XmlSeria序列化

2009-09-04 13:55:04

C#文檔自動化

2009-08-12 16:26:30

C#讀取XML文檔

2009-09-10 12:00:09

C# listbox

2009-09-07 05:24:22

C#窗體繼承
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲综合激情 | 国产精品一区久久久 | 涩在线 | 免费观看av | 日韩av在线中文字幕 | 一区二区三区四区国产 | 亚洲国产高清在线观看 | 中文字幕一区二区三区不卡 | 国产精品视频在线播放 | 日日干日日操 | 亚洲一区二区三 | 99精品国产一区二区三区 | 欧美成人一区二区三区 | 蜜桃在线视频 | 欧洲精品久久久久毛片完整版 | 亚洲福利一区二区 | av免费观看网站 | 五月花丁香婷婷 | 怡红院怡春院一级毛片 | 欧美日韩亚洲一区 | 欧美一级网站 | 国产精品99久久久久久久久久久久 | 在线看片国产精品 | 欧美国产中文字幕 | 亚洲精品www久久久久久广东 | 欧美三区在线观看 | 亚洲欧美视频一区 | 91影院在线观看 | 日韩精品视频在线观看一区二区三区 | 精品九九在线 | 日韩视频 中文字幕 | 精品国产乱码久久久久久果冻传媒 | 天天想天天干 | 麻豆av网站 | 欧美三级视频 | 一区欧美 | 九九热精品在线 | 中文字幕电影在线观看 | 成人免费在线观看 | 午夜成人免费视频 | 日韩在线一区二区三区 |