应用软件框架简介
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012-1-23 Proprietary and Confidential Information 4
应用框架的历史
• 第一个被广泛应用的框架是模型-视图控制器(MVC), 是一个由施乐公司开发的Smalltalk用户界面框架. 这种 使用观察者设计模式的MVC方法已经被很多用户界面 系统采用. 著名的用户界面框架有MacApp和MFC. • 框架概念并不局限于用户界面框架, 也用于通用应用开 发. Sun的Java环境和MS的.Net环境, 不仅提供了新的 语言和虚拟机, 还提供了它们自己的框架. 它们都是旨 在支持所有业务类型的应用系统的通用框架.
GUI Menu Editbox Textbox Image engine … Listbox Input Method Label Text engine
MMK Message Dispatch Window Mangemanet Timer Keyboard Touchpanel CAF
2012-1-23
2012-1-23
Proprietary and Confidential Information
18
Control的概念 的概念
• Control:控件,可以完成某种特定功能,例如:编辑 功能、文本显示功能、动画功能等。 • 使用控件可以使开发人员专注于应用的功能开发,而 不是过多考虑界面的开发。
2012-1-23
Proprietary and Confidential Information
22
消息分类
• 根据消息的接收情况来划分,消息分为两类: 外部消息:主要包括PS消息、key消息、Timer 消息和一些由其它task发送过来的消息; 内部消息:MMI模块内部发送、接收和处理的 消息,不与其它模块发生任何关系. • 注:在App_Task的消息循环当中,总是处理完 内部消息之后再处理外部
2012-1-23
Proprietary and Confidential Information
• 可添加新控件,更改现有控件风格
2012-1-23
Proprietary and Confidential Information
19
Control的重要属性 的重要属性
• • • • • • 句柄 静态ID GUID 父窗口 消息处理函数 创建\销毁等回调函数
2012-1-23
Proprietary and Confidential Information
2012-1-23 Proprietary and Confidential Information 12
应用\应用程序 窗口 应用 应用程序\窗口 控件 应用程序 窗口\控件
• Application, Applet, Window, Control是MMK中四个重要的 是 中四个重要的 概念. 概念 • 模板模式 MMK这些核心部件的设计使用 了设计模式中的模板模式(也叫 好莱坞原则,好莱坞演员平时都 在家里, 导演拍片时会打电话给 演员, 演员不会自己找导演). 应 用的各个模块如APP, GUI都依 赖于MMK, 等MMK来调用各自 的回调函数. 这正是别调用(Call) 我, 让我来调用(Call)你.
2012-1-23
Proprietary and Confidential Information
7
为何使用应用框架
• 简单性 框架封装了处理流程的控制逻辑, 对开发者透明. 免去开发者编写协 调逻辑之苦. • 可维护性 应用框架分层, 最底层包含没有任何业务假设的框架组件, 层次越往 上, 其组件依赖的业务假设就越多. 每当需求变化时, 只有业务假设被 打破的层中的组件需要被修改和测试.
2012-1-23 Proprietary and Confidential Information 13
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…
2012-1-23
Proprietary and Confidential Information
8
应用框架的开发技术
• 通用点 提取应用层的某些重复出现且又没有太多变化的部分, 作为通用点, 封装 成框架层的组件. 开发者将引用框架组件实现的通用点, 而不用亲自去开 发它们. • 扩展点 在框架中安置一个空的占位符, 将来被基于框架之上构建的业务应用填上 客制化的实现. • 白盒框架 抽象类组成的框架. 开发者需要继承框架中的抽象类来建立一个具体类. 白盒框架使用继承法支持扩展点. • 黑盒框架 直接可用的类组成的框架. 开发者通过组合很多组件来达到预期的目的. 黑盒框架借助组合法来支持扩展点. • 灰盒框架 同时采用继承法和组合法, 既包含抽象类, 又包含具体类. • 设计模式 利用设计模式解决开发应用框架中的一些共性问题. 框架的设计没有银弹, 需要在不同的方法之间权衡, 创造出适合目的的应 用框架.
2012-1-23
Proprietary and Confidential Information
Байду номын сангаас
5
应用框架的分层
• 业务应用层表示客户化应用, 由应用开发者负责开发. 应 用框架是应用的半成品, 软件架构师开发它. 其中特定领 域框架层由针对特定业务领域的专有组件组成. 跨领域框 架层由不包含业务领域知识的框架组件组成, 能够被多个 不同业务领域的应用共享.
Proprietary and Confidential Information
11
Mocor平台应用软件框架 平台应用软件框架
• APP(MMI) 实现具体的应用功能, 体现给用户界面显示和方便快捷的人机交 互操作. 应用实现的基础是MMK提供的消息机制和窗口管理机制, 应用不必关心MMK的内部细节, 只需要关心本模块内的消息回调 实现. • GUI 人机交互的图形界面实现, 抽象封装了图形操作接口, 包括文字,图 , , , 形,图像. 一方面应用可以直接调用API实现基本图像的绘制, 也可 以利用GUI控件实现标准图形数据的创建,显示,控制和销毁. 控件 的实现同样基于MMK. • MMK 即MMI Kerenl, 即Mocor平台的应用软件框架. 主要作用是消息派 发和窗口管理. 消息派发主要负责派发内部消息和外部按键\触笔\ 定时器以及其他task发给MMI的消息. 窗口管理模块负责应用\窗 口\控件的创建,显示,控制和销毁.
2012-1-23
Proprietary and Confidential Information
16
Window的概念 的概念
• Window:窗口是最终用户可以直接看到的一个个实在 的屏幕,是直接和用户打交道的,专门处理用户的按 键输入等操作,并且将最终用户输入后的处理结果显 示在屏幕上。 • 窗口的消息处理函数,用来处理送给窗口的各种消息, 包括按键,定时器消息等等。 • 窗口还要管理其所属的控件,将部分消息交给控件处 理。
2012-1-23
Proprietary and Confidential Information
15
Applet的重要属性 的重要属性
• 句柄 句柄是用来唯一标识应用程序\窗口\控件运行时实 例的ID, 是动态生成的. • GUID GUID是用来唯一标识接口类的ID, 是由用户指定 的. 相同GUID的应用程序可以有多个实例, 类似于 PC上可以开多个IE, 多个QQ. • 消息处理函数 • 应用中包含的窗口列表
20
MMK消息派发 消息派发
• MMI跑在APP_Task, 是一个while(1)的死循 环. • APP_Task先处理内部 消息, 再处理外部消息. • 内部消息派发给窗口, 控件应用程序. 外部消 息派发给应用. • 处理完消息之后, Kernel根据屏幕是否置 脏, 统一进行刷屏
2012-1-23
APP_TASK
初始化
内部消息队列 为空 否 Dispatch内部消息 刷屏
是
获得外部消息
Dispatch外部消息 刷屏
释放内部消息
释放外部消息
Proprietary and Confidential Information
21
MMK消息派发 消息派发
• 内部消息分别根 据目标句柄的类 型, 派发给应用程 序, 窗口和控件. • 按键消息, 会优先 派发给窗口的 Active控件, 再派 发给窗口.
2012-1-23
Proprietary and Confidential Information
10
Mocor平台应用软件框架 平台应用软件框架
APP Call Manger Brower Camera Phone Book Multimedia Player Calendar … SMS\MMS File Manger Ebook STK Java Mobile TV CAF APP MSN Email Game …
2012-1-23
Proprietary and Confidential Information
14
Applet的概念 的概念
• Applet:可看做windows系统上应用程序的概念. 可以 包含一个或多个窗口, 也可以没有窗口. 窗口间的数据 交换可以借助Applet来完成. • Applet的消息处理函数, 用来处理送给Applet的各种消 息, 包括Applet的启动销毁, 定时器和其他指定发给 Applet的消息. • Applet还要管理其所属的窗口的生命周期.
2012-1-23 Proprietary and Confidential Information 9
应用框架经济学
• NO FREE LUNCH 框架的开发需要额外的代价 • 框架开发 • 用户培训 • 开发应用框架就像在股市投资, 好的投资应该 对你的投资目标有利, 而不是看它们今天是否 赚钱.
3
应用框架
• 框架(Framework)的定义 支撑或围住其他物体的结构, 尤指用作建筑物之基础的支撑 骨架. 术语”框架”对不同的人,含 义不同.建筑师用这个词描述 建筑物的骨架或结构.软件架 构师用这个词描述有助于软件 应用开发的一组可重用的设计 和代码. 在应用开发领域,无论有没有 框架,所有事情照样能做.然而, 框架能为应用提供很多好处, 采用应用框架方法对应用开发 大有裨益.
应用软件框架简介
PLD James.Zhang 1/23/2012
2012-1-23
Proprietary and Confidential Information
2
目的
• 什么是应用框架 • Mocor平台的应用软件框架
2012-1-23
Proprietary and Confidential Information
2012-1-23
Proprietary and Confidential Information
6
为何使用应用框架
• 使用应用框架有如下优点 • 模块化 把应用分割成多个组件或模块. 模块化的开发互不影响, 效率提高. • 可重用性 代码的可重用性. • 可扩展性 客制化, 开发者可在框架中插入自定义的业务逻辑.
2012-1-23
Proprietary and Confidential Information
17
Window的重要属性 的重要属性
• • • • • • • • 句柄 静态ID 消息处理函数 窗口中包含的控件列表 当前active的控件 优先级 状态,是否打开,是否获得focus Title,Softkey
应用框架的历史
• 第一个被广泛应用的框架是模型-视图控制器(MVC), 是一个由施乐公司开发的Smalltalk用户界面框架. 这种 使用观察者设计模式的MVC方法已经被很多用户界面 系统采用. 著名的用户界面框架有MacApp和MFC. • 框架概念并不局限于用户界面框架, 也用于通用应用开 发. Sun的Java环境和MS的.Net环境, 不仅提供了新的 语言和虚拟机, 还提供了它们自己的框架. 它们都是旨 在支持所有业务类型的应用系统的通用框架.
GUI Menu Editbox Textbox Image engine … Listbox Input Method Label Text engine
MMK Message Dispatch Window Mangemanet Timer Keyboard Touchpanel CAF
2012-1-23
2012-1-23
Proprietary and Confidential Information
18
Control的概念 的概念
• Control:控件,可以完成某种特定功能,例如:编辑 功能、文本显示功能、动画功能等。 • 使用控件可以使开发人员专注于应用的功能开发,而 不是过多考虑界面的开发。
2012-1-23
Proprietary and Confidential Information
22
消息分类
• 根据消息的接收情况来划分,消息分为两类: 外部消息:主要包括PS消息、key消息、Timer 消息和一些由其它task发送过来的消息; 内部消息:MMI模块内部发送、接收和处理的 消息,不与其它模块发生任何关系. • 注:在App_Task的消息循环当中,总是处理完 内部消息之后再处理外部
2012-1-23
Proprietary and Confidential Information
• 可添加新控件,更改现有控件风格
2012-1-23
Proprietary and Confidential Information
19
Control的重要属性 的重要属性
• • • • • • 句柄 静态ID GUID 父窗口 消息处理函数 创建\销毁等回调函数
2012-1-23
Proprietary and Confidential Information
2012-1-23 Proprietary and Confidential Information 12
应用\应用程序 窗口 应用 应用程序\窗口 控件 应用程序 窗口\控件
• Application, Applet, Window, Control是MMK中四个重要的 是 中四个重要的 概念. 概念 • 模板模式 MMK这些核心部件的设计使用 了设计模式中的模板模式(也叫 好莱坞原则,好莱坞演员平时都 在家里, 导演拍片时会打电话给 演员, 演员不会自己找导演). 应 用的各个模块如APP, GUI都依 赖于MMK, 等MMK来调用各自 的回调函数. 这正是别调用(Call) 我, 让我来调用(Call)你.
2012-1-23
Proprietary and Confidential Information
7
为何使用应用框架
• 简单性 框架封装了处理流程的控制逻辑, 对开发者透明. 免去开发者编写协 调逻辑之苦. • 可维护性 应用框架分层, 最底层包含没有任何业务假设的框架组件, 层次越往 上, 其组件依赖的业务假设就越多. 每当需求变化时, 只有业务假设被 打破的层中的组件需要被修改和测试.
2012-1-23 Proprietary and Confidential Information 13
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…
2012-1-23
Proprietary and Confidential Information
8
应用框架的开发技术
• 通用点 提取应用层的某些重复出现且又没有太多变化的部分, 作为通用点, 封装 成框架层的组件. 开发者将引用框架组件实现的通用点, 而不用亲自去开 发它们. • 扩展点 在框架中安置一个空的占位符, 将来被基于框架之上构建的业务应用填上 客制化的实现. • 白盒框架 抽象类组成的框架. 开发者需要继承框架中的抽象类来建立一个具体类. 白盒框架使用继承法支持扩展点. • 黑盒框架 直接可用的类组成的框架. 开发者通过组合很多组件来达到预期的目的. 黑盒框架借助组合法来支持扩展点. • 灰盒框架 同时采用继承法和组合法, 既包含抽象类, 又包含具体类. • 设计模式 利用设计模式解决开发应用框架中的一些共性问题. 框架的设计没有银弹, 需要在不同的方法之间权衡, 创造出适合目的的应 用框架.
2012-1-23
Proprietary and Confidential Information
Байду номын сангаас
5
应用框架的分层
• 业务应用层表示客户化应用, 由应用开发者负责开发. 应 用框架是应用的半成品, 软件架构师开发它. 其中特定领 域框架层由针对特定业务领域的专有组件组成. 跨领域框 架层由不包含业务领域知识的框架组件组成, 能够被多个 不同业务领域的应用共享.
Proprietary and Confidential Information
11
Mocor平台应用软件框架 平台应用软件框架
• APP(MMI) 实现具体的应用功能, 体现给用户界面显示和方便快捷的人机交 互操作. 应用实现的基础是MMK提供的消息机制和窗口管理机制, 应用不必关心MMK的内部细节, 只需要关心本模块内的消息回调 实现. • GUI 人机交互的图形界面实现, 抽象封装了图形操作接口, 包括文字,图 , , , 形,图像. 一方面应用可以直接调用API实现基本图像的绘制, 也可 以利用GUI控件实现标准图形数据的创建,显示,控制和销毁. 控件 的实现同样基于MMK. • MMK 即MMI Kerenl, 即Mocor平台的应用软件框架. 主要作用是消息派 发和窗口管理. 消息派发主要负责派发内部消息和外部按键\触笔\ 定时器以及其他task发给MMI的消息. 窗口管理模块负责应用\窗 口\控件的创建,显示,控制和销毁.
2012-1-23
Proprietary and Confidential Information
16
Window的概念 的概念
• Window:窗口是最终用户可以直接看到的一个个实在 的屏幕,是直接和用户打交道的,专门处理用户的按 键输入等操作,并且将最终用户输入后的处理结果显 示在屏幕上。 • 窗口的消息处理函数,用来处理送给窗口的各种消息, 包括按键,定时器消息等等。 • 窗口还要管理其所属的控件,将部分消息交给控件处 理。
2012-1-23
Proprietary and Confidential Information
15
Applet的重要属性 的重要属性
• 句柄 句柄是用来唯一标识应用程序\窗口\控件运行时实 例的ID, 是动态生成的. • GUID GUID是用来唯一标识接口类的ID, 是由用户指定 的. 相同GUID的应用程序可以有多个实例, 类似于 PC上可以开多个IE, 多个QQ. • 消息处理函数 • 应用中包含的窗口列表
20
MMK消息派发 消息派发
• MMI跑在APP_Task, 是一个while(1)的死循 环. • APP_Task先处理内部 消息, 再处理外部消息. • 内部消息派发给窗口, 控件应用程序. 外部消 息派发给应用. • 处理完消息之后, Kernel根据屏幕是否置 脏, 统一进行刷屏
2012-1-23
APP_TASK
初始化
内部消息队列 为空 否 Dispatch内部消息 刷屏
是
获得外部消息
Dispatch外部消息 刷屏
释放内部消息
释放外部消息
Proprietary and Confidential Information
21
MMK消息派发 消息派发
• 内部消息分别根 据目标句柄的类 型, 派发给应用程 序, 窗口和控件. • 按键消息, 会优先 派发给窗口的 Active控件, 再派 发给窗口.
2012-1-23
Proprietary and Confidential Information
10
Mocor平台应用软件框架 平台应用软件框架
APP Call Manger Brower Camera Phone Book Multimedia Player Calendar … SMS\MMS File Manger Ebook STK Java Mobile TV CAF APP MSN Email Game …
2012-1-23
Proprietary and Confidential Information
14
Applet的概念 的概念
• Applet:可看做windows系统上应用程序的概念. 可以 包含一个或多个窗口, 也可以没有窗口. 窗口间的数据 交换可以借助Applet来完成. • Applet的消息处理函数, 用来处理送给Applet的各种消 息, 包括Applet的启动销毁, 定时器和其他指定发给 Applet的消息. • Applet还要管理其所属的窗口的生命周期.
2012-1-23 Proprietary and Confidential Information 9
应用框架经济学
• NO FREE LUNCH 框架的开发需要额外的代价 • 框架开发 • 用户培训 • 开发应用框架就像在股市投资, 好的投资应该 对你的投资目标有利, 而不是看它们今天是否 赚钱.
3
应用框架
• 框架(Framework)的定义 支撑或围住其他物体的结构, 尤指用作建筑物之基础的支撑 骨架. 术语”框架”对不同的人,含 义不同.建筑师用这个词描述 建筑物的骨架或结构.软件架 构师用这个词描述有助于软件 应用开发的一组可重用的设计 和代码. 在应用开发领域,无论有没有 框架,所有事情照样能做.然而, 框架能为应用提供很多好处, 采用应用框架方法对应用开发 大有裨益.
应用软件框架简介
PLD James.Zhang 1/23/2012
2012-1-23
Proprietary and Confidential Information
2
目的
• 什么是应用框架 • Mocor平台的应用软件框架
2012-1-23
Proprietary and Confidential Information
2012-1-23
Proprietary and Confidential Information
6
为何使用应用框架
• 使用应用框架有如下优点 • 模块化 把应用分割成多个组件或模块. 模块化的开发互不影响, 效率提高. • 可重用性 代码的可重用性. • 可扩展性 客制化, 开发者可在框架中插入自定义的业务逻辑.
2012-1-23
Proprietary and Confidential Information
17
Window的重要属性 的重要属性
• • • • • • • • 句柄 静态ID 消息处理函数 窗口中包含的控件列表 当前active的控件 优先级 状态,是否打开,是否获得focus Title,Softkey