应用软件框架简介.ppt

上传人:hyn****60 文档编号:70972750 上传时间:2023-01-31 格式:PPT 页数:38 大小:991.50KB
返回 下载 相关 举报
应用软件框架简介.ppt_第1页
第1页 / 共38页
应用软件框架简介.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《应用软件框架简介.ppt》由会员分享,可在线阅读,更多相关《应用软件框架简介.ppt(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、PLDJames.Zhang1/31/2023应用软件框架简介应用软件框架简介1/31/20232Proprietary and Confidential Information目的目的什么是应用框架Mocor平台的应用软件框架1/31/20233Proprietary and Confidential Information框架(Framework)的定义支撑或围住其他物体的结构,尤指用作建筑物之基础的支撑骨架.术语”框架”对不同的人,含义不同.建筑师用这个词描述建筑物的骨架或结构.软件架构师用这个词描述有助于软件应用开发的一组可重用的设计和代码.在应用开发领域,无论有没有框架,所有事情照样

2、能做.然而,框架能为应用提供很多好处,采用应用框架方法对应用开发大有裨益.应用框架应用框架1/31/20234Proprietary and Confidential Information第一个被广泛应用的框架是模型-视图控制器(MVC),是一个由施乐公司开发的Smalltalk用户界面框架.这种使用观察者设计模式的MVC方法已经被很多用户界面系统采用.著名的用户界面框架有MacApp和MFC.框架概念并不局限于用户界面框架,也用于通用应用开发.Sun的Java环境和MS的.Net环境,不仅提供了新的语言和虚拟机,还提供了它们自己的框架.它们都是旨在支持所有业务类型的应用系统的通用框架.应用

3、框架的历史应用框架的历史1/31/20235Proprietary and Confidential Information业务应用层表示客户化应用,由应用开发者负责开发.应用框架是应用的半成品,软件架构师开发它.其中特定领域框架层由针对特定业务领域的专有组件组成.跨领域框架层由不包含业务领域知识的框架组件组成,能够被多个不同业务领域的应用共享.应用框架的分层应用框架的分层1/31/20236Proprietary and Confidential Information使用应用框架有如下优点模块化 把应用分割成多个组件或模块.模块化的开发互不影响,效率提高.可重用性 代码的可重用性.可扩展性

4、 客制化,开发者可在框架中插入自定义的业务逻辑.为何使用应用框架为何使用应用框架1/31/20237Proprietary and Confidential Information简单性 框架封装了处理流程的控制逻辑,对开发者透明.免去开发者编写协调逻辑之苦.可维护性应用框架分层,最底层包含没有任何业务假设的框架组件,层次越往上,其组件依赖的业务假设就越多.每当需求变化时,只有业务假设被打破的层中的组件需要被修改和测试.为何使用应用框架为何使用应用框架1/31/20238Proprietary and Confidential Information通用点提取应用层的某些重复出现且又没有太多变

5、化的部分,作为通用点,封装成框架层的组件.开发者将引用框架组件实现的通用点,而不用亲自去开发它们.扩展点在框架中安置一个空的占位符,将来被基于框架之上构建的业务应用填上客制化的实现.白盒框架抽象类组成的框架.开发者需要继承框架中的抽象类来建立一个具体类.白盒框架使用继承法支持扩展点.黑盒框架直接可用的类组成的框架.开发者通过组合很多组件来达到预期的目的.黑盒框架借助组合法来支持扩展点.灰盒框架同时采用继承法和组合法,既包含抽象类,又包含具体类.设计模式利用设计模式解决开发应用框架中的一些共性问题.框架的设计没有银弹,需要在不同的方法之间权衡,创造出适合目的的应用框架.应用框架的开发技术应用框架

6、的开发技术1/31/20239Proprietary and Confidential InformationNO FREE LUNCH框架的开发需要额外的代价框架开发用户培训开发应用框架就像在股市投资,好的投资应该对你的投资目标有利,而不是看它们今天是否赚钱.应用框架经济学应用框架经济学1/31/202310Proprietary and Confidential InformationMocor平台应用软件框架平台应用软件框架1/31/202311Proprietary and Confidential InformationAPP(MMI)实现具体的应用功能,体现给用户界面显示和方便快捷

7、的人机交互操作.应用实现的基础是MMK提供的消息机制和窗口管理机制,应用不必关心MMK的内部细节,只需要关心本模块内的消息回调实现.GUI人机交互的图形界面实现,抽象封装了图形操作接口,包括文字,图形,图像.一方面应用可以直接调用API实现基本图像的绘制,也可以利用GUI控件实现标准图形数据的创建,显示,控制和销毁.控件的实现同样基于MMK.MMK即MMI Kerenl,即Mocor平台的应用软件框架.主要作用是消息派发和窗口管理.消息派发主要负责派发内部消息和外部按键触笔定时器以及其他task发给MMI的消息.窗口管理模块负责应用窗口控件的创建,显示,控制和销毁.Mocor平台应用软件框架平

8、台应用软件框架1/31/202312Proprietary and Confidential InformationApplication,Applet,Window,Control是是MMK中四个重要的中四个重要的概念概念.模板模式模板模式MMK这些核心部件的设计使用了设计模式中的模板模式(也叫好莱坞原则,好莱坞演员平时都在家里,导演拍片时会打电话给演员,演员不会自己找导演).应用的各个模块如APP,GUI都依赖于MMK,等MMK来调用各自的回调函数.这正是别调用(Call)我,让我来调用(Call)你.应用应用应用程序应用程序窗口窗口控件控件1/31/202313Proprietary a

9、nd Confidential InformationApplication的概念的概念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,消息处理函数的设计就是之前提到的框架中

10、的扩展点.需要注册外部消息的应用:g_main_app,g_cc_app,g_sms_app 1/31/202314Proprietary and Confidential InformationApplet的概念的概念Applet:可看做windows系统上应用程序的概念.可以包含一个或多个窗口,也可以没有窗口.窗口间的数据交换可以借助Applet来完成.Applet的消息处理函数,用来处理送给Applet的各种消息,包括Applet的启动销毁,定时器和其他指定发给Applet的消息.Applet还要管理其所属的窗口的生命周期.1/31/202315Proprietary and Confi

11、dential InformationApplet的重要属性的重要属性句柄句柄是用来唯一标识应用程序窗口控件运行时实例的ID,是动态生成的.GUIDGUID是用来唯一标识接口类的ID,是由用户指定的.相同GUID的应用程序可以有多个实例,类似于PC上可以开多个IE,多个QQ.消息处理函数应用中包含的窗口列表1/31/202316Proprietary and Confidential InformationWindow的概念的概念Window:窗口是最终用户可以直接看到的一个个实在的屏幕,是直接和用户打交道的,专门处理用户的按键输入等操作,并且将最终用户输入后的处理结果显示在屏幕上。窗口的消息

12、处理函数,用来处理送给窗口的各种消息,包括按键,定时器消息等等。窗口还要管理其所属的控件,将部分消息交给控件处理。1/31/202317Proprietary and Confidential InformationWindow的重要属性的重要属性句柄静态ID消息处理函数窗口中包含的控件列表当前active的控件优先级状态,是否打开,是否获得focusTitle,Softkey1/31/202318Proprietary and Confidential InformationControl的概念的概念Control:控件,可以完成某种特定功能,例如:编辑功能、文本显示功能、动画功能等。使用控

13、件可以使开发人员专注于应用的功能开发,而不是过多考虑界面的开发。可添加新控件,更改现有控件风格1/31/202319Proprietary and Confidential InformationControl的重要属性的重要属性句柄静态IDGUID父窗口消息处理函数创建销毁等回调函数1/31/202320Proprietary and Confidential InformationMMK消息派发消息派发MMI跑在APP_Task,是一个while(1)的死循环.APP_Task先处理内部消息,再处理外部消息.内部消息派发给窗口,控件应用程序.外部消息派发给应用.处理完消息之后,Kernel

14、根据屏幕是否置脏,统一进行刷屏1/31/202321Proprietary and Confidential InformationMMK消息派发消息派发内部消息分别根据目标句柄的类型,派发给应用程序,窗口和控件.按键消息,会优先派发给窗口的Active控件,再派发给窗口.1/31/202322Proprietary and Confidential Information消息分类消息分类 根据消息的接收情况来划分,消息分为两类:外部消息:主要包括PS消息、key消息、Timer消息和一些由其它task发送过来的消息;内部消息:MMI模块内部发送、接收和处理的消息,不与其它模块发生任何关系.注

15、:在App_Task的消息循环当中,总是处理完内部消息之后再处理外部1/31/202323Proprietary and Confidential Information外部消息外部消息外部消息可分为以下几类系统消息:主要为PS消息和其它一些task发送给mmi的消息,只有Application在注册后才能够处理这条消息。一条系统消息可以被多个Application注册和处理。按键消息:直接被发送给处于Focus状态的窗口进行处理。定时器消息:由于定时器时间到所产生的消息,由定 时 器 的 owner进 行 处 理,Applet,Window,Control都可以启动timer。1/31/20

16、2324Proprietary 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_PAINTMMI各个模块自己定义的消息1/31/202325Proprietary and Confidential Information内部消息处理内部消息处理不需要应用模块进行注册由Window,Control处理消息队列由MMI

17、Kernel维护MMK的消息定义在mmk_msg.h中用户自定义消息在mmi_appmsg.h1/31/202326Proprietary and Confidential Information消息发送消息发送异步方式,用MMK_PostMsg()函数来实现。将消息发送到内部消息队列中,马上返回。同步方式,用MMK_SendMsg()函数来实现。消息发送给指定窗口或控件,处理完后才会返回。1/31/202327Proprietary and Confidential Information按键消息处理按键消息处理按键分为五种状态,PRESS,RELEASE,LONG_PRESS,LONG_R

18、ELEASE,REPEATPRESS和RELEASE是对应的.LONG_PRESS和REPEAT需要开启定时器.按键消息会优先派发给Focus窗口的Active控件处理1/31/202328Proprietary and Confidential Information触笔消息处理触笔消息处理触笔分为四种状态,PRESS_DOWN,PRESS_UP,PRESS_MOVE,PRESS_LONGDOWN和UP是对应的.LONG需要开启定时器.PRESS_DOWN会改变Focus窗口的Active控件1/31/202329Proprietary and Confidential Informatio

19、n定时器消息处理定时器消息处理定时器按使用范围可分为系统定时器和用户定时器.系统定时器的ID是固定的,用户定时器的ID是动态生成的.定时器按生命周期可分为一次性定时器和周期定时器.一次性定时器到期自动销毁,周期定时器需要用户手动销毁.1/31/202330Proprietary and Confidential Information同一个屏幕上会存在多个窗口,必然导致窗口覆盖的问题.最早创建的窗口位于Zorder的最底端,后创建的窗口根据优先级依次向上叠加,最后创建的且优先级较高的窗口位于Zorder的最顶端.用户可以通过切换窗口焦点来改变Zorder,但优先级低的窗口无法覆盖优先级高的窗口

20、.系统刷新是从最靠近顶端的全屏非透明窗口开始,依次向上绘制屏幕.窗口窗口Zorder序序1/31/202331Proprietary and Confidential InformationCAF简介简介4.新产品介绍新产品介绍CAF=COM APPLICATION FRAMEWORK以函数声明的方式向平台和第三方应用提供二进制兼容的接口,支持从文件系统加载并运行COM组件,为封闭式平台进化为开放式平台打通了道路,是MMK的重要扩展.桥接模式桥接模式将抽象部分和它的实现部分解耦,使它们可以独立的变化,即接口和实现分离.客户类使用接口来访问实现类中的具体方法,实现类的变化并不影响客户类,因为就客

21、户类而言,它仅仅使用接口层.1/31/202332Proprietary and Confidential InformationCAF简介简介CAF开放的接口都是以虚表的形式。虚表中的函数指针指向真正的实际函数地址,这样就解决了动态链接问题,做到了接口和实现分离.1/31/202333Proprietary and Confidential InformationCAF简介简介4.新产品介绍新产品介绍类厂模式类厂模式定义一个用于创建对象的接口,让子类决定将那一个类实例化.IModule类中的IMODULE_CreateInstance接口就使用了类厂模式.单件模式单件模式确保一个类只创建一个

22、实例(instance)的设计,它支持开发者更好的控制对象的创建.IModule类就使用了单件模式.1/31/202334Proprietary and Confidential InformationCAF简介简介用户通过统一的接口ISHELL_CreateInstance创建动态模块(IModule)和动态接口类(MyInterface).动态模块中实现CAFMODULE_Load来创建动态模块,实现CAFMODULE_CreateInstance来创建动态接口类实例并返回给用户.1/31/202335Proprietary and Confidential InformationMMK的

23、调试的调试可以查看全局变量s_zorder_system,根据窗口zorder序分析死机的场景.也可以通过s_handle_list句柄池分析窗口控件应用程序对应的句柄和指针.可以借助MMK_RunWinProc的trace分析上下文.能分析出哪个窗口(win_id)在干什么(msg_id),如MMK_RunWinProc,win_handle=0 x2f9a0029,win_id=0 x60012,msg_id=0 xe0041/31/202336Proprietary and Confidential InformationQ&A最早的应用框架是什么,常用的应用框架有哪些?Mocor平台的应用软件框架中使用了哪些设计模式?1/31/202337Proprietary and Confidential Information

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com