体系结构课件-16 插件架构.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扩展案例:基于VC++实现插件系统 普通的输出函数的DLL方式(导出函数) 使用C++的多态类(导出类) 使用COM类别(category)机制 * * * 对于不同的软件系统来说,侧重的角度也有所不同。例如,对于管理信息系统来说,比较侧重于从逻辑视图和开发视图来描述系统,而对于实时控制系统来说,则比较注重于从进程视图和物理视图来描述系统 * 展示php代码 * 案例:基于C#实现插件管理器 Net技术实现插件机制的步骤 动态加载 Assembly类的几个静态的Load(Load,LoadFile,LoadFrom)方法来动态加载 获得所有类型 判定是否为插件接口类型 创建插件实例 案例:基于C#实现插件管理器 设计契约:应用程序契约 设计契约:插件契约 插件代码 插件代码 宿主程序代码 扩展案例:音频播放器 通过模拟的音频播放器来介绍插件的实现技术 一般音频播放器都有这样一些基本功能: 装载音频文件(LoadFile) 播放(Play) 暂停(Pause) 停止(Stop) 本例将提供这四个功能。但宿主程序本身不会直接实现这些功能,而是调用插件的实现。每个插件支持一种音频格式,所以每个插件的功能实现都是不同的。 扩展案例:音频播放器——插件的实现 创建一个动态链接库Plug.dll,为了支持四个基本功能,它输出相应的四个函数: Void LoadFile(const char *szFileName); Void Play(); Void Pause(); Void Stop(); 扩展案例:音频播放器——插件的实现 为了使宿主程序在运行时能知道这个插件可以支持什么格式的音频文件,插件程序还应输出一个函数供宿主程序查询用: Void GetSupportedFormat(char *szFormat) if(szFormat!=0) {strcpy(szFormat,“mp3”);} 至此,这个插件就制作完了。可以依样画葫芦再做一个Plug2.dll,它“支持”.wma文件。 扩展案例:音频播放器——宿主的实现 宿主是一个基于对话框的标准Windows程序。 它启动时会有哪些信誉好的足球投注网站约定目录(可以约定所有插件都存放在宿主程序所在目录的Plugins子目录下) 使用Win32函数Loadliabrary加载所有插件。 每加载一个插件DLL,就调用另一个Win32函数GetSupportedFormat的地址,并调用此函数返回插件所支持的格式名(即是音频文件的的扩展名) 然后把(格式名,DLL句柄)二元组保存下来。 THU SAGroup * 扩展案例:音频播放器——宿主的实现 当用户通过菜单打开文件时,宿主程序会根据扩展名决定调用哪个插件的LoadFile函数 并指明此插件DLL的句柄为当前使用的插件的DLL句柄(比如保存到变量m_hInst中) 此后当用户通过按钮调用Play等其他功能时,就调用句柄为m_hInst的插件的相应功能。 THU SAGroup * 扩展案例:音频播放器——宿主的实现 THU SAGroup * typedef void(*PLAY)(); if(m_hInst) { PLAY Play = (PLAY)::GetProcAddress(m_hInst,”Play”); Play(); } 另外,当程序退出时,应该调用FreeLiabrary函数卸载插件 小结 作业 通过插件机制实现音频播放器,或者自拟题目实现插件系统 THANKS Thank You,谢谢! 在Java?web开发中,MVC框架充当了UI层和业务逻辑层的适配器的作用。MVC框架实现了UI层和业务逻辑层最大程度的分离。 * 提供特定的,具体的功能 * 展示vs插件,代码code map插件 * 音频播放器 Wav、Wma、ogg、mp3、ACC和MP3比起来,它的音质比较好,也能够节省大约30%的储存空间与带宽、APE提供的一种无损压缩格式 * 插件不是简单的功能扩展 插件依赖于宿主程序的接口 插件有明确的范围边界 扩展宿主程序自身的功能 插件独立于宿主程序 /pcedu/teach/base/0709/1117976.html 对一般用户来讲,“扩展”和“插件”都是能够解决一些问题的附加软件,分辨不清也不影响使用,所以我们在向大家介绍Firefox的时候一般都使用“插件”这个更容易理解的词.但对非Windows用户来说,准确理解“扩展”和“插件”的区别是很重要的.因为“扩展”是Firefox自身的功能,与操作系统无关,而“插件”却是独立的程序,在不同平台下的安装包也截然不同.另外,使用Portable版本的Firefox用户也需要注意,只有“扩展”可以Portable,而“插件”则需在每台机器上都装一遍. * 所谓插

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档