浅谈.NETFramework3.5中的WPF插件开发

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

十余年的清丰网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整清丰建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“清丰网站设计”,“清丰网站推广”以来,每个客户项目都认真落实执行。

先前研究过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的示例代码比较少,自己找了两个,大家研究下。

文章名称:浅谈.NETFramework3.5中的WPF插件开发
网站路径:http://www.hantingmc.com/qtweb/news3/103453.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联