C#插件式程序开发.ppt_第1页
C#插件式程序开发.ppt_第2页
C#插件式程序开发.ppt_第3页
C#插件式程序开发.ppt_第4页
C#插件式程序开发.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、浅谈C#插件式程序的开发,Jene Marlin 2010-8-2,什么是插件式程序,提起插件式程序,我们首先想起的就是firbox.用过firebox浏览器的人都知道它是一个插件式程序。当一个功能需要时,完全可以从网上下载一个插件后,重启后,就能使用。这个功能给我们带来了许多的方便之处。这就是插件式程序带来的好处。 插件的本质在于不修改程序主体(平台)的情况下对软件功能进行扩展与加强,当插件的接口公开后,任何公司或个人都可以制作自己的插件来解决一些操作上的不便或增加新的功能,也就是实现真正意义上的“即插即用”软件开发。(先谢谢网络共享的朋友 )。 平台+插件软件结构是将一个待开发的目标软件分

2、为两部分, 一部分为程序的主体或主框架,可定义为平台,这是预先编译后的程序 。 另一部分为功能扩展或补充模块,可定义为插件。 这个就是后来要进行安装的插件程序。,为什么开发插件式程序,假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了。但是有一天,用户打来了电话他们要求增加新的功能。确定了用户的需求后,你竟然发现原有的软件架构已经无法胜任新增任务的需求你需要重新设计这个应用了!但问题是,就算你又用了一个开发周期完成了用户需要的应用,却不能保证用户的需求不会再次变更。也就是说,需求蔓延的可能性依然存在。因此,这种情况下插件构架更能显示出它的优越性。 可以这么说,用它可以带来方便的地方

3、。而且开发它,也很简单。而且这样做主程序根本 就不需要改动。需要插件时,拿来就能用。插件更新,也只要更新这个插件就行。 从程序开发角度来说,一般都是先要开发主程序,决定那些功能由主程序来完成,然后再建立接口,声明接口的内容,这些内容决定着插件的扩展的功能,及方向的。这些都是由主程序开发者预先准备好的。 插件开发者,从主程序开发者那里得到接口的内容,并书写继承这些接口的类,来完成具体的功能。 一个程序能实现的功能,基本上插件都能实现。,插件式程序的实例,本节,我将通过一个最简单的实例来说明插件式程序的开发。希望能快速的带领刚学习插件式程序开发的朋友们快速的学习及进步。 本例主要介绍插件式程序的开

4、发过程。 这个插件式程序的功能。 在主程序加载时,自动的加载插件中功能,并能完成接口中定义的功能 。 这个例子也是最简单的插件程序,说实话,没有什么意义,但是我写出来,主要就是介绍这个插件式程序开发的思想 。这对一个想学习插件式程序开发朋友会有一定的帮助。,插件,主程序,接口,怎样开发插件式程序,首先我们要知道: 1.已经存在一个平台,即一个主程序。 2.而我们要在这个主程序进行功能扩展。就要用到插件。 但是这个插件怎样才能被主程序使用呢?这个就是我们要进行解决的问题! 我告诉大家要用到接口这个功能。你只要记住就好了。当然你也可以用其它的功能, 这里我就不多说了。 有基础的朋友都知道,接口光是

5、进行声明,并不进行代码的具体的实现。这为我们提供了一个最大的方便。请看下图。从下图中,我们可以看出,接口连接着主程序与插件,并负责着它们的信息及功能的联系。当然这个接口是唯一的。它即被插件使用,也要被主程序使用。所以,我们的第一步就是要先建立接口的DLL文件。,怎样建立接口的DLL文件,为什么生成DLL文件? 只有生成 DLL文件后,才能被主程序及插件程序引用。 怎样生成DLL文件? 生成接口的DLL文件,同生成类的DLL文件一样。 在VS中,打开新建项目类库,输入文件名后,保存即可, 在做完接口的声明后,右键单击解决方案资源管理器,再次单击生成即可。 using System; using

6、System.Collections.Generic; using System.Text; namespace pluginsinterface public interface inter string show(); void a(); ,先开发主程序,为什么先开发主程序? 我们都知道,先有主程序,后才有插件。 主程序的开发原理是什么 ? 先要建立一个文件夹,在这个文件夹内放入插件,当主程序需要加载插件,就从这个文件夹内加载插件程序。 在这里,我们要用到System. Reflection这个命明空间。并利用它下面的Assembly类。并在解决方案管理器中,添加接口dll的引用。还要在命

7、名空明处添加空间的引用。 下面贴出一个简单的插件管理的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using pluginsinterface; using System.Reflection;,先开发主程序,namespace myapp public partial class Form1 : For

8、m public Form1() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) string path = C:Documents and SettingsAdministrator.4CC7D91B5B2041FMy DocumentsVisual Studio 2005ProjectsmyappmyappbinDebugpluginclass.dll; string pathname = System.IO.Path.GetFileNameWithoutExtension(path);

9、System.Reflection.Assembly asd = System.Reflection.Assembly.LoadFile(path); Type t = asd.GetTypes(); er i = (er)System.Activator.CreateInstance(asd.GetType(t0.FullName); this.Text = i.show(); ,开发插件,上面已经完成了主程序及接口的操作。下面我们就来开发插件。 新建一个项目类库。并在这个项目中引用上面已经做好的接口的DLL文件

10、,添加接口文件的命明空间。 在类中,继承这个接口。并完成这些接口中内容的代码实现。然后进行生成操作。这个项目就生成了一个DLL文件。这个DLL文件就是插件。你把这个插件放到指定的地址后,主程序就能加载这个插件完成一些功能。 我们接着上面的那个例子。 using System; using System.Collections.Generic; using System.Text; using pluginsinterface; using System.Windows.Forms; namespace pluginclass public class class1 : er public string show() return 11111111“; public void a() MessageBox.Show(show (); ,后话,插件:是对主程序的功能的扩展。是主程序生命的延续。而且对一个项目的开发进度也起到了一个积极的作用。试想一下:一个项目,有许多功能要进行实现。但是你没有办法一次性的完成。而用插件,你就可以一个功能一个功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论