惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

www.infosecurity-magazine.com
www.infosecurity-magazine.com
Security Archives - TechRepublic
Security Archives - TechRepublic
TaoSecurity Blog
TaoSecurity Blog
Cloudbric
Cloudbric
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
S
Schneier on Security
L
LangChain Blog
Jina AI
Jina AI
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements
T
Tenable Blog
B
Blog RSS Feed
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
T
The Exploit Database - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
W
WeLiveSecurity
I
InfoQ
The Hacker News
The Hacker News
雷峰网
雷峰网
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
P
Privacy International News Feed
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
V
V2EX
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cybersecurity and Infrastructure Security Agency CISA
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - love .net FrameWork

SQL Server 2005 中的分区表和索引应用 Windows Forms 分页控件 一生回味的100句凡人语录 经典短句 一生中必看的30个故事 别人看不懂的悲伤 Most of the 10 classic love sentence 5月28日 《魔兽争霸3》微操作基础教程 数据访问抽象基础类 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login” - love .net FrameWork 看到一很好的SQL代码 拼接sql语句 关于ibatis.net框架(NPetshop学习) Stratrgy 策略模式 Factory Method 工厂方法模式(创建型模式) SQL各种日期转换代码大全 在ASP.NET中使用Session常见问题集锦(转) Sys.ArgumentOutOfRangeException: Value must be an integer - love .net FrameWork
WPF 插件开发(.NET Framework 3.5 System.Addin)
love .net FrameWork · 2009-07-22 · via 博客园 - love .net FrameWork

      .NET Framework 3.5提供了一个框架,即System.Addin命名空间,通过该命名空间我们可以进行插件开发,用程序集System.AddIn来保存和创建插件。这个框架也称为Managed AddIn Framework(MAF)。
      插件还有其他称呼,如add-on或plug-in。
      先前研究过SharpDevelop,SharpDevelop采用框架——插件的可扩展的体系结构,毕竟代码水平比较高,对它的插件开发方式没有学习彻底。
      .NET Framework 3.5 的System.Addin命名空间让插件开发变的简单很多了。

1.什么是AddIns
      在
应用程序运行期间允许动态添加程序集。
      插件开发可以在给开发完成的应用程序添加功能。我们可以创建一个主机应用程序,随时间的推移给它添加越来越多的功能这些功能可以是开发团队编写的,也可以由其他供应商也可以创建插件,扩展该应用程序。
2.AddIns
(MAF)的设计目标如下
      应用程序容易开发插件
      在运行期间
高效查找插件
      开发主机程序应是一个很简单的过程,但不像开发插件那么容易
      插件和主机应用程序应独立进行维护和升级
3.MAF体系结构
    
MAF体系结构基于一个包含7个程序集的管道。这个管道解决了插件的版本问题。因为管道中的程序集之间的依赖性很低,所以合同、主机程序和插件升级到新版本可以完全互不干扰。
     
     其中心是合同程序集。这个程序集包含一个合同接口,其中列出了插件必须实现、可以由主机程序调用的方法和属性。合同的左边是主机端,右边是插件端。图中还 显示了程序集之间的依赖性。最左端的主机程序集与合同程序集没有依赖性,插件程序集与合同程序集也没有依赖性,这两个程序集都没有实现合同定义的接口,只是有一个对视图程序集的引用。主机应用程序引用主机视图;插件引用插件视图。视图包含抽象的视图类,该类定义的方法和属性与合同相同。
      下图是上图的中文说明:
      
       下图是插件开发结构类关系图
       
    
      有了这个模型,插件端和主机端可以完全独立地升级了,只是需要使用映射层。例如,如果主机的一个新版本使用全新的方法和属性,合同就仍可以保持不变,只有适配器需要修改。也可以定义新的合同。适配器可以修改,也可以同时使用几个合同。
       下图显示了MAF体系结构的外观为一个单一的插件。如果我们要创造更多的插件(如演示应用程序) ,我们就必须建立新的类来继承插件适配器来完成该功能。
     
 4
.插件模型文件夹结构
  

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

       MAF需要使用反射来动态加载,才能获得插件的所有信息。而且,对于许多插件而言,这还会增加主机应用程序的启动时间。因此,MAF使用一个 高速缓存,来保存管道组件的信息。该高速缓存是由安装插件的程序创建的,如果主机应用程序有管道目录的写入权限,该高速缓存就由主机应用程序创建。

      在目录结构中有一个PipelineSegments.store文件,它是一个外接程序,有两个任务:

  •   将有关所有外接程序和管线段的信息注册到缓存文件中。

  •   通过搜索缓存查找外接程序的指定宿主视图的外接程序

      在AddIns文件夹里面会有一个Addins.store文件,它的作用就是让程序查找插件显示在应用程序中。

     应用插件开发对应用系统来讲确实有很大好处,很多应用程序都使用了插件开发,例如:Visual Studio、Eclipse、还有浏览器IE、FF,虽然我们不是这些软件的开发商,但是我们仍然可以在这些软件里添加我们需要的功能,插件开发更容易维护和升级系统,而且对提高程序运行效率也有很大帮助。

      网上关于Addins的示例代码比较少,自己找了两个,大家研究下。

       示例程序下载

       提示:AddinsSample要修改下HostAppWPF 项目下 Settings.settings 里值的文件路径

       1./Files/lc329857895/AddInTest.rar

       2./Files/lc329857895/AddInsSample.rar