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

淺談.NET Framework 3.5中的WPF插件開發(fā)

開發(fā) 后端
NET Framework 3.5提供了一個WPF插件開發(fā)框架,即System.Addin命名空間,通過該命名空間我們可以進(jìn)行插件開發(fā),用程序集System.AddIn來保存和創(chuàng)建插件。這個框架也稱為Managed AddIn Framework(MAF)。
插件還有其他稱呼,如add-on或plug-in。

先前研究過SharpDevelop,SharpDevelop采用框架——插件的可擴(kuò)展的體系結(jié)構(gòu),畢竟代碼水平比較高,對它的插件開發(fā)方式?jīng)]有學(xué)習(xí)徹底。

.NET Framework 3.5 的System.Addin命名空間讓插件開發(fā)變的簡單很多了。

1.什么是AddIns

在應(yīng)用程序運行期間允許動態(tài)添加程序集。

插件開發(fā)可以在給開發(fā)完成的應(yīng)用程序添加功能。我們可以創(chuàng)建一個主機(jī)應(yīng)用程序,隨時間的推移給它添加越來越多的功能這些功能可以是開發(fā)團(tuán)隊編寫的,也可以由其他供應(yīng)商也可以創(chuàng)建插件,擴(kuò)展該應(yīng)用程序。

2.AddIns(MAF)的設(shè)計目標(biāo)如下

應(yīng)用程序容易開發(fā)插件

在運行期間高效查找插件

開發(fā)主機(jī)程序應(yīng)是一個很簡單的過程,但不像開發(fā)插件那么容易

插件和主機(jī)應(yīng)用程序應(yīng)獨立進(jìn)行維護(hù)和升級

3.MAF體系結(jié)構(gòu)

MAF體系結(jié)構(gòu)基于一個包含7個程序集的管道。這個管道解決了插件的版本問題。因為管道中的程序集之間的依賴性很低,所以合同、主機(jī)程序和插件升級到新版本可以完全互不干擾。

其中心是合同程序集。這個程序集包含一個合同接口,其中列出了插件必須實現(xiàn)、可以由主機(jī)程序調(diào)用的方法和屬性。合同的左邊是主機(jī)端,右邊是插件端。圖中還 顯示了程序集之間的依賴性。最左端的主機(jī)程序集與合同程序集沒有依賴性,插件程序集與合同程序集也沒有依賴性,這兩個程序集都沒有實現(xiàn)合同定義的接口,只是有一個對視圖程序集的引用。主機(jī)應(yīng)用程序引用主機(jī)視圖;插件引用插件視圖。視圖包含抽象的視圖類,該類定義的方法和屬性與合同相同。

下圖是上圖的中文說明:

下圖是插件開發(fā)結(jié)構(gòu)類關(guān)系圖

有了這個模型,插件端和主機(jī)端可以完全獨立地升級了,只是需要使用映射層。例如,如果主機(jī)的一個新版本使用全新的方法和屬性,合同就仍可以保持不變,只有適配器需要修改。也可以定義新的合同。適配器可以修改,也可以同時使用幾個合同。

下圖顯示了MAF體系結(jié)構(gòu)的外觀為一個單一的插件。如果我們要創(chuàng)造更多的插件(如演示應(yīng)用程序) ,我們就必須建立新的類來繼承插件適配器來完成該功能。

4.插件模型文件夾結(jié)構(gòu)

插件模型文件夾結(jié)構(gòu)

除了AddIns目錄之外,其他目錄都直接包含管道特定部分的程序集。AddIns目錄為每個插件程序集包含一個子目錄。插件也可以保存在完全獨立于其他管道組件的目錄中。

MAF需要使用反射來動態(tài)加載,才能獲得插件的所有信息。而且,對于許多插件而言,這還會增加主機(jī)應(yīng)用程序的啟動時間。因此,MAF使用一個 高速緩存,來保存管道組件的信息。該高速緩存是由安裝插件的程序創(chuàng)建的,如果主機(jī)應(yīng)用程序有管道目錄的寫入權(quán)限,該高速緩存就由主機(jī)應(yīng)用程序創(chuàng)建。

在目錄結(jié)構(gòu)中有一個PipelineSegments.store文件,它是一個外接程序,有兩個任務(wù):

將有關(guān)所有外接程序和管線段的信息注冊到緩存文件中。

◆通過搜索緩存查找外接程序的指定宿主視圖的外接程序

在AddIns文件夾里面會有一個Addins.store文件,它的作用就是讓程序查找插件顯示在應(yīng)用程序中。

Addins.store文件

應(yīng)用插件開發(fā)對應(yīng)用系統(tǒng)來講確實有很大好處,很多應(yīng)用程序都使用了插件開發(fā),例如:Visual Studio、Eclipse、還有瀏覽器IE、FF,雖然我們不是這些軟件的開發(fā)商,但是我們?nèi)匀豢梢栽谶@些軟件里添加我們需要的功能,插件開發(fā)更容易維護(hù)和升級系統(tǒng),而且對提高程序運行效率也有很大幫助。

網(wǎng)上關(guān)于Addins的示例代碼比較少,自己找了兩個,大家研究下。

【編輯推薦】

  1. Visual Studio 2010截圖曝光 以WPF開發(fā)UI
  2. 為WPF項目創(chuàng)建單元測試
  3. 詳解Silverlight和WPF互相擴(kuò)展
  4. 教你如何理解WPF中的Template類
  5. 詳談WPF開發(fā)中的數(shù)據(jù)虛擬化
責(zé)任編輯:彭凡 來源: cnblogs
相關(guān)推薦

2009-12-14 16:59:57

.NET Framew

2009-05-26 09:09:50

.NET FramewStream.Read基礎(chǔ)類

2009-12-10 14:04:09

.Net Framew

2009-06-29 10:19:42

.NET Micro性能優(yōu)化

2009-08-26 14:27:03

C# Framewor

2010-01-06 11:21:49

.NET Framew

2009-12-14 10:19:23

.NET Framew

2009-12-15 11:28:34

.NET Framew

2009-12-28 11:41:04

WPF 3.5特點

2009-04-24 09:14:20

.NET多線程鎖機(jī)制

2009-11-23 09:34:05

WPF本質(zhì)

2011-06-28 09:51:08

.NET對象相等

2009-08-25 18:16:02

.NET Framew.NET Framew

2009-08-18 11:08:24

.Net Framew

2018-09-11 11:20:11

微軟Windows 10.NET Framew

2009-07-27 13:01:28

TreeViewASP.NET

2009-07-27 14:50:24

ChartAreas控ASP.NET 3.5

2009-07-16 15:02:33

Shapes命名空間Net Micro F

2009-07-07 12:09:04

注冊表開發(fā).NET Compac

2009-07-29 09:38:06

Web開發(fā)ASP.NET
點贊
收藏

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

主站蜘蛛池模板: 精品视频免费 | 91av在线免费观看 | 久久久一 | 欧美成视频在线观看 | 91亚洲一区| 精品欧美一区二区三区久久久 | 国产福利在线免费观看 | 国产91丝袜在线熟 | 最新av中文字幕 | 日韩二 | 在线小视频 | 国产精品久久久久久久久免费 | 日韩高清一区二区 | 国产精品18久久久久久白浆动漫 | 91porn成人精品 | 久久精品国产一区二区电影 | 中文字幕一区二区三区四区五区 | 久久久亚洲| 国产精品99999999 | 美女天堂在线 | 中文字幕在线一区二区三区 | 中文字幕国产精品 | 人人干人人干人人 | 一级毛片在线播放 | 精精国产xxxx视频在线 | 久久久久久久亚洲精品 | 日韩视频三区 | 天天拍天天插 | 亚洲福利在线视频 | 欧美精品91 | 亚洲精品乱码久久久久久按摩 | 精品在线一区 | 久久国产美女视频 | 亚洲欧美日韩激情 | 亚洲国产网 | 日本黄色大片免费 | 日韩免费中文字幕 | 国产日韩欧美二区 | 久久夜夜 | 黄色骚片 | 一区二区国产在线观看 |