温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行.NET Framework 3.5中的WPF插件开发

发布时间:2021-10-28 10:21:18 来源:亿速云 阅读:178 作者:柒染 栏目:编程语言

这篇文章将为大家详细讲解有关如何进行.NET Framework 3.5中的WPF插件开发,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

插件还有其他称呼,如add-on或plug-in。

先前研究过SharpDevelop,SharpDevelop采用框架——插件的可扩展的体系结构,毕竟代码水平比较高,对它的插件开发方式没有学习彻底。

.NET Framework 3.5 的System.Addin命名空间让插件开发变的简单很多了。

1.什么是AddIns

在应用程序运行期间允许动态添加程序集。

插件开发可以在给开发完成的应用程序添加功能。我们可以创建一个主机应用程序,随时间的推移给它添加越来越多的功能这些功能可以是开发团队编写的,也可以由其他供应商也可以创建插件,扩展该应用程序。

2.AddIns(MAF)的设计目标如下

应用程序容易开发插件

在运行期间高效查找插件

开发主机程序应是一个很简单的过程,但不像开发插件那么容易

插件和主机应用程序应独立进行维护和升级

3.MAF体系结构

MAF体系结构基于一个包含7个程序集的管道。这个管道解决了插件的版本问题。因为管道中的程序集之间的依赖性很低,所以合同、主机程序和插件升级到新版本可以完全互不干扰。

如何进行.NET Framework 3.5中的WPF插件开发

undefined

下图是上图的中文说明:

如何进行.NET Framework 3.5中的WPF插件开发

下图是插件开发结构类关系图

如何进行.NET Framework 3.5中的WPF插件开发

有了这个模型,插件端和主机端可以完全独立地升级了,只是需要使用映射层。例如,如果主机的一个新版本使用全新的方法和属性,合同就仍可以保持不变,只有适配器需要修改。也可以定义新的合同。适配器可以修改,也可以同时使用几个合同。

下图显示了MAF体系结构的外观为一个单一的插件。如果我们要创造更多的插件(如演示应用程序) ,我们就必须建立新的类来继承插件适配器来完成该功能。

如何进行.NET Framework 3.5中的WPF插件开发

4.插件模型文件夹结构

如何进行.NET Framework 3.5中的WPF插件开发

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

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

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

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

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

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

如何进行.NET Framework 3.5中的WPF插件开发

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

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

关于如何进行.NET Framework 3.5中的WPF插件开发就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

wpf
AI