worldwind插件机制总结.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
插件机制总结 共分四个部分: .插件机制概述:插件的运行特点 .插件书写格式:插件源文件和类的书写 .相关类说明:插件链接和插件管理 .相关类概述:插件应用类的开发平台 一、插件机制概述 .特点 插件机制支持多种语言的插件形式,并有较高的运行效率。添加插件有两种方式: 外部插件 在项目输出的文件夹中直接添加插件源文件或编译好的程序集。 ()程序初始化和运行中动态的编译执行由 ,,完成的源文件,在框架内编译完成,不需要第 三方的链接库。()也可以从预编译好的文件加载插件。对脚本语言的快速编译,在加载时 编译运行,和内部代码有相同的运行效率。 内部插件 在项目中添加插件文件代码。在项目生成的时候直接编译到程序集当中。 插件机制也有一些缺点: 安全性,即外部脚本文件中的不安全或恶意的代码。但调试人员可以通过源文件查看。 缺少不同版本的插件开发平台。 插件的书写要与主程序集的版本兼容。 插件机制借鉴版 本中的插件机制,与版本中的插件不兼容。 .运行机制 主程序调用搜索 目录及其子目录,将插件文件(包含格式)读入内存,如果需要编译则进行编 译;然后查找已编译的程序集。 每当确定插件类型,添加插件信息类列表, 最后加载运行插 件。在运行过程中可以用插件管理器来管理插件。 查找过程如下: () () (); 链接实现部分: 构造函数创建实例 (,); 查找程序集内部的的插件类 (()); 查找外部插件类,在文件夹中 (); 加载插件 (); 插件相关类的关系图: .插件的信息头 在源文件开头以下格式书写插件信息,这些信息可以被类读取。 头信息是可选的,并推荐使用。例如: :, , () ? 1111 .编写源文件 一般插件类的包含两个部分,即两个类:插件加载类 ()和应用类(功能实现类)。 第一个是插件加载类:继承 插件基类,相当于应用类的容器。主要从载了两个方法, () 代码将在插件被加载的时候执行,并完成与主进程的传递参数 ,或添加渲染目标,或启动监 听(配合监听处理程序完成插件初始化 )。 () 卸载插件。是加载的逆向过程。 第二个类是应用类,即具体实现功能的类,作为插件类的成员使用。 一般使用到主启动项目()、插件开发项目()等项目中的类及参数。 对于比较复杂的插件可以包含更多的类型。 以为例 此例中()是从插件基类继承的成员参数,作为传递的参数;并添加实例为渲染目标。 另外,应用类继承于,实现渲染功能,由插件加载类添加到渲染物列表。 () { (); (); } } { 5 ():(””,,) { ; } () { 现在时间”(); (,,,); (,,,); } } 三、插件机制相关类及说明 插件的运行机制主要有两个部分组成: 插件运行相关,, 插件管理相关, .插件运行关键类 插件基类:抽象类,所有插件(加载)类的基类, 由链接 属性: ()和 指向主应用程序类的句柄:这两个属性一般作 为参数传递给插件子类 (插件加载类),传递的 方式是虚继承的方式,这是主应用程序和插件 class PluginEngine Plugin m_Application: MainApplication m_isLoaded: bool m_PluginDirectory: string + Load() : void + PluginLoad(MainApplication, string) : void + PluginUnload() : void + Unload() : void ?property? + Application() : MainApplication + IsLoaded() : bool + ParentApplication() : MainApplication + PluginDirectory() : string 类信息传递的纽带。和在使用上是等价的,但多使用后者以避免一些命名冲突。 方法: () 加载插件类的入口, 子类必须重写该方法。程序运行中实际上是由插件基类 方法,但具体的实现就由子类来完成。 ()来调用(虚) (,) 加载插件的方法,这个方法不需要重写,可以由插件类直接调用(最终也将调用 这个方法类似一个保护机制, ()方法) (继承的方法)来加载插件,而且比较方便安全。 .在运行过程中(而不只是初始化时)插件加载和卸载。 .子类可以直接使用 插件信息类:存储插件的信息及插件的实例, 由直接创建实例。 它只表示插件的外部信息,与插件的功能和实 现没有关系。 比如,插件的实例,插件(由读取文件名称得 到),名称、描述、开发者、站点、相关说明 些是由类读取源文件的头信息得到 ),初始化加 (这 class Plugi nEngine Plugi nlnfo m_description

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档