




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Date 1Proprietary and Confidential Information PLD James.Zhang * 应用软件框架简介 Date 2Proprietary and Confidential Information 目的 什么是应用框架 Mocor平台的应用软件框架 Date 3Proprietary and Confidential Information 框架(Framework)的定义 支撑或围住其他物体的结构, 尤指用作建筑物之基础的支 撑骨架. 术语”框架”对不同的人,含义 不同.建筑师用这个词描述建 筑物的骨架或结构.软件架构 师用这个词描述有助于软件 应用开发的一组可重用的设 计和代码. 在应用开发领域,无论有没有 框架,所有事情照样能做.然 而,框架能为应用提供很多好 处,采用应用框架方法对应用 开发大有裨益. 应用框架 Date 4Proprietary and Confidential Information 第一个被广泛应用的框架是模型-视图控制器(MVC), 是一个由施乐公司开发的Smalltalk用户界面框架. 这 种使用观察者设计模式的MVC方法已经被很多用户 界面系统采用. 著名的用户界面框架有MacApp和 MFC. 框架概念并不局限于用户界面框架, 也用于通用应用 开发. Sun的Java环境和MS的.Net环境, 不仅提供了 新的语言和虚拟机, 还提供了它们自己的框架. 它们 都是旨在支持所有业务类型的应用系统的通用框架. 应用框架的历史 Date 5Proprietary and Confidential Information 业务应用层表示客户化应用, 由应用开发者负责开发. 应用框架是应用的半成品, 软件架构师开发它. 其中特 定领域框架层由针对特定业务领域的专有组件组成. 跨 领域框架层由不包含业务领域知识的框架组件组成, 能 够被多个不同业务领域的应用共享. 应用框架的分层 Date 6Proprietary and Confidential Information 使用应用框架有如下优点 模块化 把应用分割成多个组件或模块. 模块化的开发互不影 响, 效率提高. 可重用性 代码的可重用性. 可扩展性 客制化, 开发者可在框架中插入自定义的业务逻辑. 为何使用应用框架 Date 7Proprietary and Confidential Information 简单性 框架封装了处理流程的控制逻辑, 对开发者透明. 免去开发者编写 协调逻辑之苦. 可维护性 应用框架分层, 最底层包含没有任何业务假设的框架组件, 层次越 往上, 其组件依赖的业务假设就越多. 每当需求变化时, 只有业务假 设被打破的层中的组件需要被修改和测试. 为何使用应用框架 Date 8Proprietary and Confidential Information 通用点 提取应用层的某些重复出现且又没有太多变化的部分, 作为通用点, 封 装成框架层的组件. 开发者将引用框架组件实现的通用点, 而不用亲自 去开发它们. 扩展点 在框架中安置一个空的占位符, 将来被基于框架之上构建的业务应用填 上客制化的实现. 白盒框架 抽象类组成的框架. 开发者需要继承框架中的抽象类来建立一个具体类 . 白盒框架使用继承法支持扩展点. 黑盒框架 直接可用的类组成的框架. 开发者通过组合很多组件来达到预期的目的 . 黑盒框架借助组合法来支持扩展点. 灰盒框架 同时采用继承法和组合法, 既包含抽象类, 又包含具体类. 设计模式 利用设计模式解决开发应用框架中的一些共性问题. 框架的设计没有银弹, 需要在不同的方法之间权衡, 创造出适合目的的 应用框架. 应用框架的开发技术 Date 9Proprietary and Confidential Information NO FREE LUNCH 框架的开发需要额外的代价 框架开发 用户培训 开发应用框架就像在股市投资, 好的投资应该 对你的投资目标有利, 而不是看它们今天是否 赚钱. 应用框架经济学 Date 10Proprietary and Confidential Information Mocor平台应用软件框架 Date 11Proprietary and Confidential Information APP(MMI) 实现具体的应用功能, 体现给用户界面显示和方便快捷的人机 交互操作. 应用实现的基础是MMK提供的消息机制和窗口管理 机制, 应用不必关心MMK的内部细节, 只需要关心本模块内的 消息回调实现. GUI 人机交互的图形界面实现, 抽象封装了图形操作接口, 包括文字, 图形,图像. 一方面应用可以直接调用API实现基本图像的绘制, 也可以利用GUI控件实现标准图形数据的创建,显示,控制和销毁 . 控件的实现同样基于MMK. MMK 即MMI Kerenl, 即Mocor平台的应用软件框架. 主要作用是消息 派发和窗口管理. 消息派发主要负责派发内部消息和外部按键 触笔定时器以及其他task发给MMI的消息. 窗口管理模块负责 应用窗口控件的创建,显示,控制和销毁. Mocor平台应用软件框架 Date 12Proprietary and Confidential Information Application, Applet, Window, Control是MMK中 四个重要的概念. 模板模式 MMK这些核心部件的设计使 用了设计模式中的模板模式( 也叫好莱坞原则,好莱坞演员 平时都在家里, 导演拍片时会 打电话给演员, 演员不会自己 找导演). 应用的各个模块如 APP, GUI都依赖于MMK, 等 MMK来调用各自的回调函数. 这正是别调用(Call)我, 让我 来调用(Call)你. 应用应用程序窗口控件 Date 13Proprietary and Confidential Information Application的概念 MMI的每个应用模块就是Application, 用于注册和处理外 部消息. 外部消息可以被多个Application注册,Kernel会依次分发 消息给各个Application, 由Application处理。 应用的声明: MMI_APPLICATION_T g_cc_app; 注册外部消息: REG_APP(APP_MN_FDN_UPDATE_CNF, APP_MN_DEACTIVATE_PDP_CONTEXT_IND, &g_cc_app) 消息处理函数CC_HandlePsMsg, 消息处理函数的设计就 是之前提到的框架中的扩展点. 需要注册外部消息的应用:g_main_app, g_cc_app, g_sms_app Date 14Proprietary and Confidential Information Applet的概念 Applet:可看做windows系统上应用程序的概念. 可 以包含一个或多个窗口, 也可以没有窗口. 窗口间的数 据交换可以借助Applet来完成. Applet的消息处理函数, 用来处理送给Applet的各种 消息, 包括Applet的启动销毁, 定时器和其他指定发给 Applet的消息. Applet还要管理其所属的窗口的生命周期. Date 15Proprietary and Confidential Information Applet的重要属性 句柄 句柄是用来唯一标识应用程序窗口控件运行时 实例的ID, 是动态生成的. GUID GUID是用来唯一标识接口类的ID, 是由用户指 定的. 相同GUID的应用程序可以有多个实例, 类 似于PC上可以开多个IE, 多个QQ. 消息处理函数 应用中包含的窗口列表 Date 16Proprietary and Confidential Information Window的概念 Window:窗口是最终用户可以直接看到的一个个实 在的屏幕,是直接和用户打交道的,专门处理用户的 按键输入等操作,并且将最终用户输入后的处理结果 显示在屏幕上。 窗口的消息处理函数,用来处理送给窗口的各种消息 ,包括按键,定时器消息等等。 窗口还要管理其所属的控件,将部分消息交给控件处 理。 Date 17Proprietary and Confidential Information Window的重要属性 句柄 静态ID 消息处理函数 窗口中包含的控件列表 当前active的控件 优先级 状态,是否打开,是否获得focus Title,Softkey Date 18Proprietary and Confidential Information Control的概念 Control:控件,可以完成某种特定功能,例如:编 辑功能、文本显示功能、动画功能等。 使用控件可以使开发人员专注于应用的功能开发,而 不是过多考虑界面的开发。 可添加新控件,更改现有控件风格 Date 19Proprietary and Confidential Information Control的重要属性 句柄 静态ID GUID 父窗口 消息处理函数 创建销毁等回调函数 Date 20Proprietary and Confidential Information MMK消息派发 MMI跑在APP_Task, 是一个while(1)的死 循环. APP_Task先处理内 部消息, 再处理外部 消息. 内部消息派发给窗口, 控件应用程序. 外部 消息派发给应用. 处理完消息之后, Kernel根据屏幕是否 置脏, 统一进行刷屏 Date 21Proprietary and Confidential Information MMK消息派发 内部消息分别根 据目标句柄的类 型, 派发给应用 程序, 窗口和控 件. 按键消息, 会优 先派发给窗口的 Active控件, 再 派发给窗口. Date 22Proprietary and Confidential Information 消息分类 根据消息的接收情况来划分,消息分为两类 : 外部消息:主要包括PS消息、key消息、 Timer消息和一些由其它task发送过来的消息 ; 内部消息:MMI模块内部发送、接收和处理 的消息,不与其它模块发生任何关系. 注:在App_Task的消息循环当中,总是处理 完内部消息之后再处理外部 Date 23Proprietary and Confidential Information 外部消息 外部消息可分为以下几类 系统消息:主要为PS消息和其它一些task发送给 mmi的消息,只有Application在注册后才能够处 理这条消息。一条系统消息可以被多个 Application注册和处理。 按键消息:直接被发送给处于Focus状态的窗口 进行处理。 定时器消息:由于定时器时间到所产生的消息, 由定时器的owner进行处理, Applet, Window, Control都可以启动timer。 Date 24Proprietary and Confidential Information 内部消息 窗口相关消息,包括MSG_OPEN_WINDOW, MSG_CLOSE_WINDOW, MSG_LOSE_FOCUS, MSG_GET_FOCUS, MSG_FULL_PAINT 控件相关消息,包括MSG_CTL_OPEN, MSG_CTL_CLOSE,MSG_CTL_PAINT MMI各个模块自己定义的消息 Date 25Proprietary and Confidential Information 内部消息处理 不需要应用模块进行注册 由Window,Control处理 消息队列由MMI Kernel维护 MMK的消息定义在mmk_msg.h中 用户自定义消息在mmi_appmsg.h Date 26Proprietary and Confidential Information 消息发送 异步方式,用MMK_PostMsg()函数来实现。 将消息发送到内部消息队列中,马上返回。 同步方式,用MMK_SendMsg()函数来实现。 消息发送给指定窗口或控件,处理完后才会返回。 Date 27Proprietary and Confidential Information 按键消息处理 按键分为五种状态, PRESS, RELEASE, LONG_PRESS, LONG_RELEASE, REPEAT PRESS和 RELEASE是对应 的. LONG_PRESS和 REPEAT需要开启 定时器. 按键消息会优先派 发给Focus窗口的 Active控件处理 Date 28Proprietary and Confidential Information 触笔消息处理 触笔分为四种状态, PRESS_DOWN, PRESS_UP, PRESS_MOVE, PRESS_LONG DOWN和UP是对应 的. LONG需要开启定时 器. PRESS_DOWN会改 变Focus窗口的 Active控件 Date 29Proprietary and Confidential Information 定时器消息处理 定时器按使用范围可分为系统定时器和用户定时器. 系 统定时器的ID是固定的, 用户定时器的ID是动态生成的. 定时器按生命周期可分为一次性定时器和周期定时器. 一次性定时器到期自动销毁, 周期定时器需要用户手动 销毁. Date 30Proprietary and Confidential Information 同一个屏幕上会存在多个窗 口, 必然导致窗口覆盖的问题. 最早创建的窗口位于Zorder 的最底端, 后创建的窗口根据 优先级依次向上叠加, 最后创 建的且优先级较高的窗口位 于Zorder的最顶端. 用户可以通过切换窗口焦点 来改变Zorder, 但优先级低的 窗口无法覆盖优先级高的窗 口. 系统刷新是从最靠近顶端的 全屏非透明窗口开始, 依次向 上绘制屏幕. 窗口Zorder序 Date 31Proprietary and Confidential Information CAF简介 4. 新产品介绍 CAF = COM APPLICATION FRAMEWORK 以函数声明的方式向平台和第三方应用提供二进 制兼容的接口, 支持从文件系统加载并运行COM 组件, 为封闭式平台进化为开放式平台打通了道 路, 是MMK的重要扩展. 桥接模式 将抽象部分和它的实现部分解耦, 使它们可以独 立的变化, 即接口和实现分离. 客户类使用接口 来访问实现类中的具体方法, 实现类的变化并不 影响客户类, 因为就客户类而言, 它仅仅使用接 口层. Date 32Proprietary and Confidential Information CAF简介 CAF开放的接口都是以虚表的形式。 虚表中的函数指针指向真正的实际函数地址, 这 样就解决了动态链接问题, 做到了接口和实现分 离. Date 33Proprietary and Confidential Information CAF简介 4. 新产品介绍 类厂模式 定义一个用于创建对象的接口,让子类决定将那 一个类实例化.IModule类中的 IMODULE_CreateInstance接口就使用了类厂模 式. 单件模式 确保一个类只创建一个实例(instance)的设计,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建泉州石牛山景区招聘5人考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025湖南衡阳市水务投资集团有限公司招聘30人模拟试卷及答案详解(新)
- 2025年绍兴新昌县卫健系统第一次公开招聘编外人员6人考前自测高频考点模拟试题及答案详解(名师系列)
- 2025广东肇庆市人力资源和社会保障局选聘法律顾问模拟试卷(含答案详解)
- 2025年广东广州市海珠区委统战部招聘雇员1人模拟试卷及参考答案详解一套
- 2025洛阳中旅银行星途财富智旅宝理财产品托管合同
- 2025湖南永州市教育局直属学校(单位)招聘教师46人模拟试卷附答案详解
- 2025年5月汉中市铁路中心医院招聘模拟试卷及参考答案详解一套
- 2025安徽合肥滨投文化创意发展有限公司招聘3人模拟试卷及1套完整答案详解
- 2025内蒙古赤峰市林西县体制单位面向林西招录考前自测高频考点模拟试题完整答案详解
- 2025年陕西省专业技术人员继续教育公需课答案
- 2025年土方坍塌应急预案演练脚本
- 医院常用消毒液的使用及配置方法
- 2022英威腾MH600交流伺服驱动说明书手册
- 2025年中国药典培训试题及答案
- 新疆教育惠民政策课件
- 非法言论主题班会课件
- 急性呼吸衰竭的诊断与治疗
- 2025年高校教师资格证之高等教育法规题库(综合题)
- 管道保温检查管理制度
- 2025至2030中国数字PCR(dPCR)和实时PCR(qPCR)行业发展趋势分析与未来投资战略咨询研究报告
评论
0/150
提交评论