我们手机平台的几个基础模型
我们手机平台的几个基础模型
转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd
作者联系方式:Li XianJing <xianjimli at hotmail dot com>
更新时间:2006-12-19
我们从设计这个手机平台开始,就一直不遗余力的贯彻三个基本设计模型:C/S模型、插件式设计和MVC模型。随着平台的演化,这些模型已经开始显现出威力。这里我们简单介绍一下,欢迎交流。
C/S模型:把多进程共享的功能集中到服务器中。好处是:
1. 串行化对临界资源的访问。比如对声音设备的访问,电话、短信、彩信、相机和媒体播放器等等,可能要播放声音或者使用MIC,我们通过一个mplayerservice的后台服务进程来仲裁和调度,保证对声音设备的有序访问。
2. 避免使用共享内存,提高平台的稳定性。共享内存是个好东西,它是在进程之间共享数据最快的方法。但是用得过多,或者用得不好,很容易引起崩溃或者死锁,导致系统的稳定性下降。采用C/S模型可以减少对共享内存的使用。
3. 简化应用程序的开发。我们最大限度的抽取界面无关的代码,这些代码一部分以函数库的形式提供,一部分以服务的方式提供。比如MMI服务进程做了大量的工作,如处理短信的编/解码和管理电话状态等等。这样,MMI应用程序的开发得到很大简化,电话和短信等应用程序的实现都只要两三周时间了。
4. 隔离硬件平台,让应用程序与硬件无关。比如,关机状态的ALARM处理是硬件相关,由于硬件方案没有确定,目前没有确定具体的实现方案。由于这是在ALARM服务进程中处理的,到时候硬件方案确定时,只需要修改alarm服务进程一个地方,相关应用程序都不必关心。
5. 限制用户权限。我们手机平台与其它类似平台的一个很大差别就是,应用程序不在root用户下运行,降低权限可以提高数据的安全性。但有的操作必须在root用户下才能执行,我们让特定服务进程处理这些操作,这样就解决了用户权限的问题。
6. 便于自动测试。服务进程是与界面无关的,大部分功能都可以自动测试。
插件式设计:独立的功能以插件方式提供。好处是:
1. 隔离功能变化。通过插件方式,增加新功能时,不需要修改现有代码。比如在文件管理器中,把文件发送出去,现在有彩信和邮件两种方式。以后可能还会增加通过MSN或者无线传输发送。采用插件式设计,到时候只要增加两个插件就行了。
2. 方便第三方定制。我们精力有限,可能只实现一些常用功能,其它高级功能可以由第三方进行定制开发,插件式设计为定制开发提供了一种简单的方式。比如基于MMI短信插件,可以方便的进行短信过滤或者远程控制。
3. 简化系统复杂度。把具体的功能从框架中剥离出来,尽管这些插件仍然要自己实现,工作量似乎没有减少,但是分离合理,各个组件的复杂度大为降低,实现起来更为简单。
4. 减小应用程序之间的耦合。桌面是一个很好的例子,它与很多应用程序都有关联,比如电话、名片、短信、彩信、邮件、日程和闹钟等等,基于插件式设计,桌面只是一个框架,具体功能由应用程序提供插件来实现,桌面与它们没有直接的耦合。
MVC模型:用MVC模型分离界面和逻辑代码。好处是:
1. 分离界面和实现,隔离界面的变化。界面是最容易变化的,在手机中也是如此,SPEC组和测试组在改善可用性时,通常会调整界面,这是一个持续的过程。把实现代码从界面代码中分离出来,从而免受界面修改带来的影响。
2. 保证界面一致更新。这也正是MVC模型的优点之一。在手机中,界面更新一致性的问题,很容易引起麻烦。比如在短信中,新事件列表、短信列表、短信选择和短信阅读等界面,它们都对应同一份数据,一处更新(如删除),要同时更新到相关界面上。通过MVC模型,这种更新变得相当自然。
3. 便于自动测试。分离界面和实现,这是自动测试的前提,这里不多说了。
~~end~~