应用软件框架简介.ppt

上传人:牧羊曲112 文档编号:5974044 上传时间:2023-09-10 格式:PPT 页数:38 大小:899.50KB
返回 下载 相关 举报
应用软件框架简介.ppt_第1页
第1页 / 共38页
应用软件框架简介.ppt_第2页
第2页 / 共38页
应用软件框架简介.ppt_第3页
第3页 / 共38页
应用软件框架简介.ppt_第4页
第4页 / 共38页
应用软件框架简介.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《应用软件框架简介.ppt》由会员分享,可在线阅读,更多相关《应用软件框架简介.ppt(38页珍藏版)》请在三一办公上搜索。

1、2023/9/10,Proprietary and Confidential Information,1,2023/9/10,Proprietary and Confidential Information,2,PLDJames.Zhang9/10/2023,应用软件框架简介,2023/9/10,Proprietary and Confidential Information,3,目的,什么是应用框架Mocor平台的应用软件框架,2023/9/10,Proprietary and Confidential Information,4,框架(Framework)的定义支撑或围住其他物体的结构,尤

2、指用作建筑物之基础的支撑骨架.术语”框架”对不同的人,含义不同.建筑师用这个词描述建筑物的骨架或结构.软件架构师用这个词描述有助于软件应用开发的一组可重用的设计和代码.在应用开发领域,无论有没有框架,所有事情照样能做.然而,框架能为应用提供很多好处,采用应用框架方法对应用开发大有裨益.,应用框架,2023/9/10,Proprietary and Confidential Information,5,第一个被广泛应用的框架是模型-视图控制器(MVC),是一个由施乐公司开发的Smalltalk用户界面框架.这种使用观察者设计模式的MVC方法已经被很多用户界面系统采用.著名的用户界面框架有MacA

3、pp和MFC.框架概念并不局限于用户界面框架,也用于通用应用开发.Sun的Java环境和MS的.Net环境,不仅提供了新的语言和虚拟机,还提供了它们自己的框架.它们都是旨在支持所有业务类型的应用系统的通用框架.,应用框架的历史,2023/9/10,Proprietary and Confidential Information,6,业务应用层表示客户化应用,由应用开发者负责开发.应用框架是应用的半成品,软件架构师开发它.其中特定领域框架层由针对特定业务领域的专有组件组成.跨领域框架层由不包含业务领域知识的框架组件组成,能够被多个不同业务领域的应用共享.,应用框架的分层,2023/9/10,Pr

4、oprietary and Confidential Information,7,使用应用框架有如下优点模块化 把应用分割成多个组件或模块.模块化的开发互不影响,效率提高.可重用性 代码的可重用性.可扩展性 客制化,开发者可在框架中插入自定义的业务逻辑.,为何使用应用框架,2023/9/10,Proprietary and Confidential Information,8,简单性 框架封装了处理流程的控制逻辑,对开发者透明.免去开发者编写协调逻辑之苦.可维护性应用框架分层,最底层包含没有任何业务假设的框架组件,层次越往上,其组件依赖的业务假设就越多.每当需求变化时,只有业务假设被打破的层中

5、的组件需要被修改和测试.,为何使用应用框架,2023/9/10,Proprietary and Confidential Information,9,通用点提取应用层的某些重复出现且又没有太多变化的部分,作为通用点,封装成框架层的组件.开发者将引用框架组件实现的通用点,而不用亲自去开发它们.扩展点在框架中安置一个空的占位符,将来被基于框架之上构建的业务应用填上客制化的实现.白盒框架抽象类组成的框架.开发者需要继承框架中的抽象类来建立一个具体类.白盒框架使用继承法支持扩展点.黑盒框架直接可用的类组成的框架.开发者通过组合很多组件来达到预期的目的.黑盒框架借助组合法来支持扩展点.灰盒框架同时采用继

6、承法和组合法,既包含抽象类,又包含具体类.设计模式利用设计模式解决开发应用框架中的一些共性问题.框架的设计没有银弹,需要在不同的方法之间权衡,创造出适合目的的应用框架.,应用框架的开发技术,2023/9/10,Proprietary and Confidential Information,10,NO FREE LUNCH框架的开发需要额外的代价框架开发用户培训开发应用框架就像在股市投资,好的投资应该对你的投资目标有利,而不是看它们今天是否赚钱.,应用框架经济学,2023/9/10,Proprietary and Confidential Information,11,Mocor平台应用软件框

7、架,2023/9/10,Proprietary and Confidential Information,12,APP(MMI)实现具体的应用功能,体现给用户界面显示和方便快捷的人机交互操作.应用实现的基础是MMK提供的消息机制和窗口管理机制,应用不必关心MMK的内部细节,只需要关心本模块内的消息回调实现.GUI人机交互的图形界面实现,抽象封装了图形操作接口,包括文字,图形,图像.一方面应用可以直接调用API实现基本图像的绘制,也可以利用GUI控件实现标准图形数据的创建,显示,控制和销毁.控件的实现同样基于MMK.MMK即MMI Kerenl,即Mocor平台的应用软件框架.主要作用是消息派发

8、和窗口管理.消息派发主要负责派发内部消息和外部按键触笔定时器以及其他task发给MMI的消息.窗口管理模块负责应用窗口控件的创建,显示,控制和销毁.,Mocor平台应用软件框架,2023/9/10,Proprietary and Confidential Information,13,Application,Applet,Window,Control是MMK中四个重要的概念.模板模式MMK这些核心部件的设计使用了设计模式中的模板模式(也叫好莱坞原则,好莱坞演员平时都在家里,导演拍片时会打电话给演员,演员不会自己找导演).应用的各个模块如APP,GUI都依赖于MMK,等MMK来调用各自的回调函数

9、.这正是别调用(Call)我,让我来调用(Call)你.,应用应用程序窗口控件,2023/9/10,Proprietary and Confidential Information,14,Application的概念,MMI的每个应用模块就是Application,用于注册和处理外部消息.外部消息可以被多个Application注册,Kernel会依次分发消息给各个Application,由Application处理。应用的声明:MMI_APPLICATION_T g_cc_app;注册外部消息:REG_APP(APP_MN_FDN_UPDATE_CNF,APP_MN_DEACTIVATE_P

10、DP_CONTEXT_IND,&g_cc_app)消息处理函数CC_HandlePsMsg,消息处理函数的设计就是之前提到的框架中的扩展点.需要注册外部消息的应用:g_main_app,g_cc_app,g_sms_app,2023/9/10,Proprietary and Confidential Information,15,Applet的概念,Applet:可看做windows系统上应用程序的概念.可以包含一个或多个窗口,也可以没有窗口.窗口间的数据交换可以借助Applet来完成.Applet的消息处理函数,用来处理送给Applet的各种消息,包括Applet的启动销毁,定时器和其他指定

11、发给Applet的消息.Applet还要管理其所属的窗口的生命周期.,2023/9/10,Proprietary and Confidential Information,16,Applet的重要属性,句柄句柄是用来唯一标识应用程序窗口控件运行时实例的ID,是动态生成的.GUIDGUID是用来唯一标识接口类的ID,是由用户指定的.相同GUID的应用程序可以有多个实例,类似于PC上可以开多个IE,多个QQ.消息处理函数应用中包含的窗口列表,2023/9/10,Proprietary and Confidential Information,17,Window的概念,Window:窗口是最终用户可

12、以直接看到的一个个实在的屏幕,是直接和用户打交道的,专门处理用户的按键输入等操作,并且将最终用户输入后的处理结果显示在屏幕上。窗口的消息处理函数,用来处理送给窗口的各种消息,包括按键,定时器消息等等。窗口还要管理其所属的控件,将部分消息交给控件处理。,2023/9/10,Proprietary and Confidential Information,18,Window的重要属性,句柄静态ID消息处理函数窗口中包含的控件列表当前active的控件优先级状态,是否打开,是否获得focusTitle,Softkey,2023/9/10,Proprietary and Confidential In

13、formation,19,Control的概念,Control:控件,可以完成某种特定功能,例如:编辑功能、文本显示功能、动画功能等。使用控件可以使开发人员专注于应用的功能开发,而不是过多考虑界面的开发。可添加新控件,更改现有控件风格,2023/9/10,Proprietary and Confidential Information,20,Control的重要属性,句柄静态IDGUID父窗口消息处理函数创建销毁等回调函数,2023/9/10,Proprietary and Confidential Information,21,MMK消息派发,MMI跑在APP_Task,是一个while(1

14、)的死循环.APP_Task先处理内部消息,再处理外部消息.内部消息派发给窗口,控件应用程序.外部消息派发给应用.处理完消息之后,Kernel根据屏幕是否置脏,统一进行刷屏,2023/9/10,Proprietary and Confidential Information,22,MMK消息派发,内部消息分别根据目标句柄的类型,派发给应用程序,窗口和控件.按键消息,会优先派发给窗口的Active控件,再派发给窗口.,2023/9/10,Proprietary and Confidential Information,23,消息分类,根据消息的接收情况来划分,消息分为两类:外部消息:主要包括PS

15、消息、key消息、Timer消息和一些由其它task发送过来的消息;内部消息:MMI模块内部发送、接收和处理的消息,不与其它模块发生任何关系.注:在App_Task的消息循环当中,总是处理完内部消息之后再处理外部,2023/9/10,Proprietary and Confidential Information,24,外部消息,外部消息可分为以下几类系统消息:主要为PS消息和其它一些task发送给mmi的消息,只有Application在注册后才能够处理这条消息。一条系统消息可以被多个Application注册和处理。按键消息:直接被发送给处于Focus状态的窗口进行处理。定时器消息:由于定

16、时器时间到所产生的消息,由定时器的owner进行处理,Applet,Window,Control都可以启动timer。,2023/9/10,Proprietary and Confidential Information,25,内部消息,窗口相关消息,包括MSG_OPEN_WINDOW,MSG_CLOSE_WINDOW,MSG_LOSE_FOCUS,MSG_GET_FOCUS,MSG_FULL_PAINT控件相关消息,包括MSG_CTL_OPEN,MSG_CTL_CLOSE,MSG_CTL_PAINTMMI各个模块自己定义的消息,2023/9/10,Proprietary and Confid

17、ential Information,26,内部消息处理,不需要应用模块进行注册由Window,Control处理消息队列由MMI Kernel维护MMK的消息定义在mmk_msg.h中用户自定义消息在mmi_appmsg.h,2023/9/10,Proprietary and Confidential Information,27,消息发送,异步方式,用MMK_PostMsg()函数来实现。将消息发送到内部消息队列中,马上返回。同步方式,用MMK_SendMsg()函数来实现。消息发送给指定窗口或控件,处理完后才会返回。,2023/9/10,Proprietary and Confident

18、ial Information,28,按键消息处理,按键分为五种状态,PRESS,RELEASE,LONG_PRESS,LONG_RELEASE,REPEATPRESS和RELEASE是对应的.LONG_PRESS和REPEAT需要开启定时器.按键消息会优先派发给Focus窗口的Active控件处理,2023/9/10,Proprietary and Confidential Information,29,触笔消息处理,触笔分为四种状态,PRESS_DOWN,PRESS_UP,PRESS_MOVE,PRESS_LONGDOWN和UP是对应的.LONG需要开启定时器.PRESS_DOWN会改变F

19、ocus窗口的Active控件,2023/9/10,Proprietary and Confidential Information,30,定时器消息处理,定时器按使用范围可分为系统定时器和用户定时器.系统定时器的ID是固定的,用户定时器的ID是动态生成的.定时器按生命周期可分为一次性定时器和周期定时器.一次性定时器到期自动销毁,周期定时器需要用户手动销毁.,2023/9/10,Proprietary and Confidential Information,31,同一个屏幕上会存在多个窗口,必然导致窗口覆盖的问题.最早创建的窗口位于Zorder的最底端,后创建的窗口根据优先级依次向上叠加,最

20、后创建的且优先级较高的窗口位于Zorder的最顶端.用户可以通过切换窗口焦点来改变Zorder,但优先级低的窗口无法覆盖优先级高的窗口.系统刷新是从最靠近顶端的全屏非透明窗口开始,依次向上绘制屏幕.,窗口Zorder序,2023/9/10,Proprietary and Confidential Information,32,CAF简介,4.新产品介绍,CAF=COM APPLICATION FRAMEWORK以函数声明的方式向平台和第三方应用提供二进制兼容的接口,支持从文件系统加载并运行COM组件,为封闭式平台进化为开放式平台打通了道路,是MMK的重要扩展.桥接模式将抽象部分和它的实现部分解

21、耦,使它们可以独立的变化,即接口和实现分离.客户类使用接口来访问实现类中的具体方法,实现类的变化并不影响客户类,因为就客户类而言,它仅仅使用接口层.,2023/9/10,Proprietary and Confidential Information,33,CAF简介,CAF开放的接口都是以虚表的形式。虚表中的函数指针指向真正的实际函数地址,这样就解决了动态链接问题,做到了接口和实现分离.,2023/9/10,Proprietary and Confidential Information,34,CAF简介,4.新产品介绍,类厂模式定义一个用于创建对象的接口,让子类决定将那一个类实例化.IMo

22、dule类中的IMODULE_CreateInstance接口就使用了类厂模式.单件模式确保一个类只创建一个实例(instance)的设计,它支持开发者更好的控制对象的创建.IModule类就使用了单件模式.,2023/9/10,Proprietary and Confidential Information,35,CAF简介,用户通过统一的接口ISHELL_CreateInstance创建动态模块(IModule)和动态接口类(MyInterface).动态模块中实现CAFMODULE_Load来创建动态模块,实现CAFMODULE_CreateInstance来创建动态接口类实例并返回给用

23、户.,2023/9/10,Proprietary and Confidential Information,36,MMK的调试,可以查看全局变量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 xe004,2023/9/10,Proprietary and Confidential Information,37,Q&A,最早的应用框架是什么,常用的应用框架有哪些?Mocor平台的应用软件框架中使用了哪些设计模式?,2023/9/10,Proprietary and Confidential Information,38,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号