手机管家在线系统的设计与实现

手机管家在线系统的设计与实现

ID:33323772

大小:10.03 MB

页数:78页

时间:2019-02-24

上传者:xinshengwencai
手机管家在线系统的设计与实现_第1页
手机管家在线系统的设计与实现_第2页
手机管家在线系统的设计与实现_第3页
手机管家在线系统的设计与实现_第4页
手机管家在线系统的设计与实现_第5页
资源描述:

《手机管家在线系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

目录4.1系统通信机制设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。284.1.1浏览器客户端与服务器的数据交互机制设计⋯⋯⋯⋯⋯⋯⋯⋯⋯294.1.2手机客户端与服务器的数据交互机制设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯324.1.3服务器端对监听请求列表的维护⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯334.2通讯管理模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯354.2.1短信管理模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.354.2.2通话记录管理模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.404.3通讯录管理模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯414.3.1VCard规范⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一434.3.2常用功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.444.4日程计划管理模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯474.4.IFulICalendar插件介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯494.4.2常用功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯494.5工具箱模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.514.5。l常用功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯534.6与手机端的对接⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯554.7本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。59第五章手机管家在线系统的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯605.1通讯信息管理模块实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.605.1.1短信管理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。605.1.2通话记录管理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯625.2通讯录管理模块实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯635.3日程计划管理模块实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯655.4工具箱模块实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯675.5本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。68第六章总结和未来展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。706.1项目总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。706.2未来展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯71参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯74 目录攻读硕士学位期间发表的学术论文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..77致谢⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..78VII T曲leofContentTableofContentChapter1Introduction⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··11.1Background⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··11.2MainContentofResearch⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。21.3ResearchStatus⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.。21.4MainJobofPaper⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯41.5ContentOrganizationofPaper⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..4Chapter2UnderlyingTechnologyandDevelopmentToolsSelection⋯⋯⋯⋯⋯⋯⋯..52.1DescriptionoftheUnderlyingTechnology⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52.1.1Intemet-basedRemoteControlTechnology⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.52.1.2TCPProtoc01andHTTPProtocol⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.62.1.3JAVASCRIPT、AJAXandJQuery⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯72.1.4ServerPushTechnology.⋯...............。⋯⋯⋯⋯.⋯.......,⋯...。..,.⋯.....,......⋯⋯82.1.5.NETFrameworkandASRNET⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..102.2DevelopmentToolsSelection⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯132.2.1DevelopmentLanguageSelection....⋯⋯..........⋯................,.⋯......⋯⋯⋯132.2.2IntegratedDevelopmentEnvironmentSelection.....,..........,,,........,,⋯.....142.2.3DatabaseSelection⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..142.2.4InformationServerSelection⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.142.3Summary⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.15Chapter3TheOverallDesignofOnlineSmartphoneManagementSystem⋯⋯⋯163.1SystemDesignGoals⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.163.2SystemDesignPrinciples⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯.163.3SystemFrameworkDesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..173.4SystemFunctionModuleDivision⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯193.5LogicalDatabaseStructureDesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.203.6Summary⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.27Chapter4TheDetailedDesignofOnlineSmartphoneManagementSystem⋯⋯..284.1SystemCommunicationMechanismDesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.28TY TableofContent4.1.1BrowserClientandServerDataInteractionMechanismDesign⋯.。..⋯.。294.1.2MobleClientandServerDataInteractionMechanismDesign⋯⋯⋯⋯⋯324.1.3TheMaintenanceoftheRequestsList⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..334.2CommunicationManagementModuleDesign⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯354.2.1ShortMessageServiceManagementModule.⋯...⋯⋯⋯⋯⋯⋯..⋯....⋯-...354.2.2CallRecordsManagementModule⋯⋯⋯⋯⋯......⋯..........⋯....⋯⋯⋯。.⋯..404.3ContactManagementModuleDesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯414.3.1VCardSpecification.。⋯.....⋯.⋯⋯⋯⋯。...⋯.。⋯...⋯⋯.⋯⋯.⋯..⋯⋯.⋯⋯⋯⋯-.434.3.2FrequentlyUsedFunctionsandImplementaion⋯...⋯....⋯...⋯⋯⋯⋯⋯⋯.444.4ScheduleManagementModuleDesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·474.4.1FullCalendarPluginIntroduction⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯“494.4.2FrequentlyUsedFunctionsandImplementaion⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·,494.5ToolboxModuleDesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··514.5.1FrequentlyUsedFunctionsandImplementaion⋯.⋯⋯..⋯.⋯⋯⋯⋯⋯⋯⋯.524.6DockingwiththeMobileTerminal⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··554.7Summary⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·59Chapter5SystemFunctionDisplay⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·605.1CommunicationsManagementModuleFunctionDisplay⋯⋯⋯⋯⋯⋯⋯⋯··605.1.1ShortMessageServiceManagement⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.605.1.2CallRecordsManagementModule⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯625.2ContactManagementModuleDisplay⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·635.3ScheduleManagementModuleDisplay⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··655.4ToolboxModuleDisplay⋯⋯⋯⋯⋯⋯⋯⋯。⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··675.5Summary⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·68Chapter6ConclutionandProspect⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·706.1ConclusionofPaper⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯”706.2ProspectofStudy⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯71Reference⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..74PublishedPaper⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯77Acknowledgements⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·78Y 第一章绪论1.1开发背景手机自90年代在中国普及后,一直作为最重要的通讯方式,便捷着人们的工作和生活,随着手机制造商、运营商的不断努力,手机上出现了形式、功能多样的各种应用,如定制的即时通讯、新闻浏览、天气预报等,这些最初的应用都是固化在手机的内置芯片中,无法动态扩展。之后出现了可以运行JAVA程序的手机系统,该类手机尽管可以动态安装和删除程序,但由于没有后台概念,所以无法保证同时运行多个程序,进而用户体验仍然较差。智能手机的出现使得手机发展到一个新的时期,它已经变得不再是一个简简单单的通讯工具,而是作为一种便捷的娱乐终端,给人们的工作和生活提供了多种多样的应用。由于智能机具有独立的操作系统,所以可以由用户自行安装各种第三方提供的大型应用软件,不断满足用户对更多智能化、个性化服务的要求,同时操作系统的多任务管理能力可以将在一台手机上同时听歌、上网的愿望成为了现实,移动设备上的用户体验得到飞速的提高。随着各种应用软件的不断增多,手机需要处理的信息随之也就越来越多,但手机本身存在诸多局限性,比如:操作的不便捷性导致诸如短信编辑、联系人管理处理效率低下;屏幕的尺寸局限导致阅读体验不佳等等。这些缺点是手机等便携设备的硬伤,试想如果可以将部分功能转移到个人电脑上来完成,那么个人电脑强大的信息处理能力以及良好的用户体验无疑将是对手机端个人信息管理的一种很好的补充。目前手机和PC的连接方式主要有USB数据线、红外线、蓝牙以及Wi.Fi连接【32I,但它们均存在一个共同的缺点,即它们均采用胖客户端,用户不仅需要在使用之前安装相应客户端软件和驱动程序,而且还需要定期的更新、维护客户端。互联网的发明和快速发展,使得它呈现出分布范围广、技术成熟的特点[161。若借助互联网的这些特点建立基于互联网的远程手机控制机制,用户只要在手机端安装客户端软件并登陆服务器,即可实时同步手机的各种信息到服务器上,并且可以随时随地在任意一台已联网电脑的浏览器上远程查看或操控自己的手机。这种机制的建立不仅可以免去用户安装Pc端客户端软件的烦恼,而且丰富了智能移动终端的控制方式,更能为智能手机用户提供各种新颖的、多种多样的扩展应用。1 \手机管家在线系统的设计与实现1.2研究的主要内容建立手机端与WEB端的信息交互机制,其实就是建立手机客户端与服务器、WEB端与服务器之间的信息交互机制,这其中的关键就是两两之间通讯机制的设计和建立,本文研究的重点就是解决WEB端与服务器端以及手机端与服务器端的信息交互机制,使得指令、数据可以高效地、实时地、安全地在三者之间传输,从而达到较高的用户体验;其次,如何规划设计和实现通讯信息管理、通讯录管理、日程计划管理以及工具箱等四大模块的前后台也是重要部分,这不仅影响到手机用户的日常使用习惯,更与手机内各种数据内容是否合理地、正确地、完整地传递关系密切。1.3国内外研究现状本文所做主要工作是研究WEB端远程管理智能手机的应用,与常规WEB应用不同点在于传递信息的主动方在服务器,而非客户端,并且来自客户端的连接不仅有传统的PC端浏览器,而且还有手机端,因此建立适用于该应用的消息推送机制是研究的重点。目前,这样的推送平台国外较为多样,常见的有:(1)EMN(OMAEmailNotification)技术[40】这是一个专门的邮件推送平台,整个系统由邮件服务器、推送代理网关以及移动设备组成。当用户从客户端(PC或移动客户端)发送邮件到邮件服务器时,后者会通过PushRAP协议向推送代理服务器发送推送通知,之后推送代理网关将EMN(即邮件通知)信息发送到终端(通过PushOTA方式,即空中下载技术,典型的方式是利用短信息),通知终端接收邮件。(2)C2DM(AndroidCloudtoDeviceMessaging)技术【41】该系统是Google公司专为Android手机定制的用于帮助开发者从服务器端推送数据至手机客户端的服务平台,它提供了一个简单、轻量级的机制使得服务器端可以通知移动端去获取信息。该平台的主要工作流程有:1)启用C2DM,需要使用到推送服务的终端均需要运行C2DM服务程序;2)注册,即终端在程序首次运行时,需要向C2DM服务器发送id以及本程序id进行注册;3)发送消息以及接收消息。(3)APNS(ApplePushNotificationService)技术【42] 第一章绪论Apple公司于2009年提出基于XMPP协议的APNS推送平台,用于终端通过与服务器建立持续的IP连接,将来自第三方应用程序的提示信息推送至设备。APNS平台利用deviceToken作为终端标识,在安装带有推送服务程序的终端首次连接苹果的推送服务器(APNS)时获取,之后若第三方应用服务器有信息需要推送至该终端时,则会将信息生成Notifietion信息并推送至APNS,之后由APNS将消息推送到终端(矧。(4)BES(BlackBerryPushService)技术【431该平台是RjM公司基于TCP/IP协议建立的专用于黑莓手机的PushMail邮件推送系统。它由Push发起方、BlackBerry基础架构以及黑莓终端组成,Push发起方将Push请求,连同希望推送的终端及推送数据发送至基础架构,基础架构返回确认信息并加入推送队列,在基础架构将数据推送给指定终端后,等待终端的确认信息,并将响应发回给Push发起方。(5)MPNS(MicrosoftPushNotificationService)技术【44】该项技术是由微软公司推出的消息推送机制,它与APNS和C2DM都基本类似,即通过终端与推送服务器保持连接,并在两端提供接口供第三方应用实现推送功能。(6)J-Push(极光推送)技术[45】该技术是由中国的和讯华谷信息技术公司于2011年推出的面向开发者的第三方消息推送服务。原理也同以上类似,它可以为Android、IOS设备提供推送服务。推送技术是系统的核心所在,目前已有一些基于服务器推送技术而实现的侧重于各个方面的远程控制智能手机的相关系统,这里列举了较为知名的部分应用,并逐一就各个应用的侧重点进行简单的介绍:(1)WebkeyWebkeyf461是由PeterMora和ZokanPapp两位设计开发的针对Android手机的远程控制系统,用户可以通过网页对手机进行截图、拨打电话、编写短信、导出通讯录等操作,可以说是一个较为完善的手机远程控制系统,并且可以凭借对Dyndns的支持和路由器的端口映射,在公共互联网实现对手机的远程控制,但它存在一些缺点:1)由于该系统是实时显示手机端屏幕的,在WEB端仍是基于手机屏幕进行操作,所以在操作体验上较差,同时实时屏幕也会导致响应较慢。2)需要手机端启动服务才可以通过WEB端访问管理界面,而这个服务一般是不会打开的,所以智能手机若在不能立即获得的地方,则无法使用该系统进行管理。(2)AirDroid 手机管家在线系统的设计与实现AirDroi∥7l是一款针对Android手机的WEB端管理工具,利用路由器的wifi功能就可以与PC端相连,连接成功后,通过WEB页面可对手机进行通讯录管理、短信编辑发送、文件管理、图片浏览等操作,但它不能算作真正的远程管理,因为该软件把远程操作局限在局域网环境,因此无法在范围更广的公共互联网区域实现对手机的管理。(3)蜡笔同步蜡笔同步【481是国内第一款实现通讯录、短信、通话记录以及日程计划实时同步的在线系统,注册用户不仅可以在网页上实时地查看、管理绑定手机端的各种信息,同时还具备在网页上发送短信、推送文件到手机、捏造虚拟短信等功能,可以说较完善地、全面地实现了智能手机的远程管理功能,但目前该在线系统对绑定手机的远程控制功能仍较为缺乏,无法满足用户诸如手机防盗、远程静音等更多个性化需求。1.4本文主要工作在该系统的设计与实现过程中,本文主要工作有:制定手机管家应用需求和总体架构;设计和实现手机端与服务器、WEB端与服务器之间的信息交互机制;参与指令以及信息数据传输的协议制定;服务器端通讯信息管理、通讯录管理、日程计划管理及工具箱等四大模块的前后台设计;参与手机客户端与服务器端对接工作;参与系统的日常维护以及代码的调试工作等等。1.5章节安排第一章,阐述了手机管家在线系统的开发背景、意义以及国内外研究现状,并对本文的主要工作进行了简单的阐述。第二章,对手机管家在线系统中项目中所使用的基本知识以及各个开发工具选型理由进行了解释和说明。笫三章,详细描述了手机管家总体设计、各功能模块划分以及数据库逻辑结构设计。第四章,详细描述了手机管家在线系统通信部件、各功能模块主要功能的设计思路与实现方法以及服务器端与手机客户端的系统对接工作。第五章,展示系统各个模块主要功能的实现。第六章,总结手机管家在线系统项目并着眼未来展望该项目的应用前景。4 第二章基础技术说明以及开发工具选型2.1基础技术说明2.1.1基于互联网的远程控制技术远程控制技术开始于工业领域,由于现在的工厂和生产地在地域上越来越分散,所以如果希望可以总揽各个环节的生产状况,或对分散的各个生产线以及工厂上的控制网络进行状态监控,则需要实行集中化控制,由此,远程控制技术应运而生【27】。在该技术的起步阶段,往往采用基于专线的远程控制,但这种远程控制技术在初期的投入很高,需要为控制设备铺设专门的线路,建设周期长,并且由于这种项目针对性强,因此技术无法实现得到有效推广。但这种远程控制项目由于使用专线接入,因此具有很好的安全性,速度也可以得到很好的保证,所以在一些安全性、实时性要求极高的项目中仍然采用。之后随着家庭电话、公用电话网的普及,这项技术得到了较好的发展,由于电话网的广泛铺设,因此采用公用电话网的远程控制项目在建设成本和项目周期上都有了很好的改善,但因为大部分电话网中的通信采用了时分多路复用技术,所以在传输速率和误码率上都表现不好,线路可靠性较差。无线技术的产生使得远程控制项目有了更多的选择,由于采用这种技术在建立网络时无需布线,这样不仅节省了网络布线的开销,同时也让各个连接终端更具灵活性,不需受到连线的限制。但无线电的带宽限制使得传输数据量和实时性均不高,并且容易受到干扰,远距离传输需要设立中继器,更远的则要使用卫星,所以建设成本也普遍较高,这种技术一般在固定行业如航天、航海等领域较为常见。因特网的广泛使用使得这项技术的发展有了新的思路,基于因特网的远程控制技术具备以下几个特点:(1)项目周期短、成本低[16】。作为现今分布最广泛的网络之一,项目初期网络铺设成本很低,只需充分利用现有的网络资源,将各自的局域网连入因特网,即可实现控制网络的广泛分布。(2)传输方式多样【2】o因特网发展至今,从链路层、网络层、传输层到应用层,各层均提供了多样的选择,如使用TCP协议作为网络传输层协议,TCP提供了高可靠性 手机管家在线系统的设计与实现保证的机制,数据可以在信道中得到安全、完整的传输;若换做UDP协议,系统虽然丧失了可靠性保证,但却具备了高效性。项目的设计可以根据实际需求制定相应的通讯协议。(3)维护费用小。因为因特网是一项成熟的技术,所以在各个企事业单位,均可以较容易找到专业的维护人员,而不需找专门人才。(4)发展较快。借助互联网的发展势头,基于因特网的远程控制技术也可以得到持续不断的、迅猛的发展,网络的普遍提速、某个网络技术的更新换代等等,这些都可以让这项技术获益良多。以上特点,使得基于因特网的远程控制技术的研究有了很大的意义,它不仅可以拓宽因特网的利用范围,而且还可以在降低成本的前提下扩大了控制范围,从而为更多~般的应用领域(如家庭、个人通讯等)提供远程控制机制。因此,这是一项很有前途和潜力的技术‘281。2.1.2TCP协议与HTTP协议传输控制协议(TransmissionControlProtocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议【321。在简化的计算机网络OSI模型中,它完成第四层,即传输层所要求的功能,其下层为IP协议所在的网络层,上层为应用层,很多主机的应用层往往需要可靠的、流式的网络连接,但IP协议无法提供这样的机制,所以这些自然的需要交由传输层解决,TCP正是这样的协议,它在建立连接之后,通信双方都同时可以进行数据的传输,如同全双工的管道,TCP为了保证不丢包,它会给每个包提供一个序号,这样可以使得接收端对发送方的所有包实现按序接收,接收方在每收到一个包便发回一个确认,如果发送端在一个往返时延(RTT)内没有收到发送包的确认,则认为包已丢失并重传。TCP协议还会运用校验和函数在发送前和接收后来检验数据的正确性,这样的机制保证了网络传输数据的可靠性18J。超文本传输协议(Hyper-TextTransferProtocol,HTTP)是互联网上应用最广泛的一种网络协议,是一个基于请求与响应模式的、无状态的、应用层的协议,底层使用TCP控制传输,从而保证数据的顺序组织和正确性【39]。一次数据交互的过程是这样的:首先客户端向服务器发送一个请求,这个请求包含请求行、消息报头以及请求正文,之后服务器在解析请求并处理后,则返回一个HTTP响应到客户端,完成一次HTTP连接请求,HT7rP响应也是由三个部分组成,分别是:状态行、消息报头以及响应正文。6 第二章基础技术说明以及开发工具选型2.1.3JAVASCRIPT、AJAX与JQueryJavaScript是一种由Netscape和LiveScript发展而来的面向对象的基于对象和事件驱动并具有相对安全性的客户端解释性脚本语言,其最初目的是为了解决服务器端语言如Perl所遗留的速度问题,从而为用户提供流畅的浏览效果,但现今随着该项技术的不断发展,这项技术不仅可以提高用户的浏览速度,同时还可以为HTML网页添加用户操作响应、嵌入动态文本、控制cookies、检测用户的浏览器信息等等。它不需要服务器端的支持,可以直接嵌入HTML页面,所以减少了对服务器的负担。一般来说,完整的JavaScript包含:1)ECMAScript,描述了该语言的语法和基本对象。2)文档对象模型(DOM),描述了处理页面内容的方法和接口。3)浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口[1U。AJAX全称为AsynchronousJavaScriptandXml(异步JavaScript与XML技术),是一套综合了多项技术的客户端网页开发技术。在传统的WEB应用中,每当用户提交表单向WEB服务器发出一个请求时,WEB服务器都会在处理后传回一个新的页面,然后客户端通过刷新,将这个页面显示出来,然而大量被传回的页面往往和前一个页面在HTML码上相差不大或是存在大量重复内容,这样导致效率低下同时浪费了很多带宽。AJAX可以通过操作XmlHttpRequest对象以异步的方式向服务器提出请求并取回必须的数据(并不是整个HTML页面),并在客户端通过JavaScript处理来自服务器的回应,刷新相应内容区域,这样不仅减小了服务器的负荷,同时也让用户感觉服务器响应“变”快了。AJAx最大的优点就是能在不更新整个页面的前提下维护数据,这使得WEB页面可以更快速的响应用户的请求,并避免页面上不必更改内容在网络上的重复传输【31。AJAX的请求流程如图2.1所示。JQuery是继Prototype之后的又一个优秀的跨浏览器的开源JavaScript库,它拥有简洁的语法和跨平台的兼容性,使得JavaScript开发人员可以很方便的进行遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax等操作【5J,尤其它强大的选择器和完善的AjaX封装,可以让开发人员专注于业务逻辑而无需关心复杂的浏览器兼容性。 第二章基础技术说明以及开发工具选型即时报价系统等,这些应用需要客户端时刻获取来自服务器端的最新数据,而客户端并不能准确判断本地数据何时会脏,需要向服务器发出一次请求。所以,对于这种应用需求,最好的方式是服务器能够自发地、实时地向客户端传送最新的数据,而无需客户端发出请求。服务器推即是这样的一种技术,它的基础思想是服务器主动发送信息。服务器发送一批数据,客户端接收,同时保持与服务器的连接并等待下一批数据的接收。常见的实现方案主要有[17】:(1)基于客户端套接口的服务器推技术,这种技术的两种实现模型是:1)利用FlashXMLSocket,它是在HTML页面中嵌入一个使用了XMLSocket类的Flash程序。JavaScript通过调用此Flash程序提供的套接口接口与服务器端的套接口进行通信,但该方案的缺点就是客户端必须安装Flash播放器;XMLSocket没有HTTP隧道功能,不能自动穿过防火墙;防火墙和代理服务器可能对非HTTP通道端口有限制。2)利用JavaApplet套接口,通过java.net.Socket或java.net.DatagramSocket或java.net.MulticastSocket建立与服务器端的套接口连接,从而实现服务器推送,这种实现模型的缺点是需要客户端安装java虚拟机,并且JavaApplet在收到服务器返回的消息后,无法通过JavaScript去更新HTML页面的内容。(2)基于HTTP长连接的服务器推技术(COMET),也称为反向Ajax技术,它的精髓就在于用服务器与JavaScript来维持与服务器的长连接,同时完成服务器端事件的浏览器端响应【41。一般而言,这种技术也有两种实现模型:1)基于Iframe及htmlfile的流方式,它通过在HTML页面中加入一个Iffame,其中的src属性设为对一个长连接的请求,服务器就能通过这个lffame帧向客户端传输数据了。2)基于AJAX的长轮询方式,JavaScript调用XMLHttpRequest对象发出HTTP请求,其响应处理函数会在服务器Response后执行,对HTML页面动态更新内容而无需刷新页面。其服务器模型如图2.3所示。9 手机管家在线系统的设计与实现浏览-霉印■—墨I1..。.............................。......一服务图2.3AJAXWEB模型2.1.5.NETFramework和ASP.NET.NET框架是微软公司用来实现XML、WebServices、SOA(面向服务的体系结构)和敏捷性的技术,.NET框架由两部分组成,即框架类库和公共语言运行库Il2|。.NET框架类库是微软提供的成千上万用于构建应用程序的类,这其中的每个类都可以有属性、方法以及事件,这三个类的成员公开给外界,可以让程序员方便地了解并使用这些基础类,从而使系统中最普遍、最繁琐的编程任务更易于完成。如File类用于表示硬盘中的文件并完成与文件操作相关的任务、Random类用于生成随机数等。微软使用命名空间来管理这一万多个框架基础类,命名空间仅仅是一个类别,如用于处理SQLSERVER数据库的类都位于System.Data.SqlClient命名空间中,当编辑的页面需要使用一个基础类库时,必须先指出这个类所关联的命名空间。程序集(assembly)就是保存这些类所在硬盘上的DLL文件,如ASP.NET框架中所有的类都位于System.Web.dll的程序集中,程序集是.NET框架中最基本的部署、安全和版本控件单位,它分为私有的和共享的两类,前者只能用于一个应用程序,而后者可以用在同一个服务器端上的所有应用程序,同样,在应用程序能使用程序集中的类之前,也必须为这个程序集添加一个引用。所以在程序集和命名空间的框架类管理机制中,如果希望使用.NET框架中的任何类,必须要做两件事情,第一,在应用程序中引用包含这个类的程序集;第二,应 第二章基础技术说明以及开发工具选型用程序导入这个类所关联的命名空间。公共语言运行库(CLR)用于执行MSIL(微软中间语言)代码。.NET框架只理解MSIL,当使用C拌和VisualBasic.NET这样的语言编写应用程序时,其相应的编译器会首先将代码转换为MSIL,这是一种面向对象的、底层的、平台无关的汇编语言,当程序正式运行时,JITTER(Just.In.Time编译器)把生成的MSIL代码实时编译成机器码并运行。ASRNET是微软.NETFramework的一部分,它用于处理WEB开发相关的问题,在项目研发过程中可以利用ASP.NET相关技术构建WEB应用程序。在ASENET中,准备用于处理的请求,必须封装为HttpWorkerRequest类型的对象,这是一个抽象类,定义在System.W曲命名空间中,是一个很底层的类,可以通过其相关的成员方法获得一些关于处理请求的信息,如请求的协议、请求参数、请求体内容等等。System.W曲.HttpRuntime类中的ProcessRequest静态方法是整个ASRNET服务器处理的入口,当HttpRuntime收到请求之后,将会通过HttpWorkerRequest传递的参数进行分析和分解,并创建用于应用程序处理用的对象,主要有HttpRequest类型实例和HttpResponse类型实例,前者包含了请求中的各种参数,如请求类型、Url、请求参数、请求中的Cookie参数等等,后者则提供了回应给客户端的状态码、Cookie集合、字符流等等。另外还有HttpConteXt类型的上下文对象用来在ASRNET服务器的处理过程中传递所有需要的参数,如当前请求的HttpRequest请求参数对象、HttpResponse回应处理对象、HttpSessionState会话状态对象以及HttpApplicationState全局状态管理对象等等;HttpApplication类型的对象用于处理请求,利用.NET中的事件机制,通过在处理过程中依次发出的多个事件,将这个处理过程分解为多个步骤,在处理管道中完成请求的处理[211。 手机管家在线系统的设计与实现请求响砬图2.4HttpApplication处理管道在ASP.NET4.0版本中,提供了19个标准事件[”1,管道内部的处理过程是固定的,在服务器处理请求的各个阶段,伴随着处理的进行,依次触发的对应事件大致有:1)BeginRequest_一标志着ASP.NET服务器处理工作的开始;2)AuthenticateRequest和PostAuthenticateRequest--检查当前请求用户的身份;3)ResolveRequestCache和PostResolveRequestCache一缓存结果的检查:4)PostMapRequestHandler--获得了一个用于处理请求的处理程序Handler;5)AcquireRequestState和1, 第二章基础技术说明以及开发工具选型PostAcquireRequestState--获取用户在以前保存的专属数据:6)PreRequestHandlerExecute和PostRequestHandlerExecute--进行处理工作;7)ReleaseRequestState和PostReleaseRequestState一释放状态数据;8)UpdateRequestCache和PostUpdateRequestCache--缓存结果的更新;9)EndRequest_一处理请求结束,这个事件之后,处理的结果将被回应到浏览器,完成服务器的处理工作。程序员可以借助自定义的请求处理程序对相应事件进行捕获并处理,ASENET中提供了两种处理程序接口,分别是用于同步处理的IHttpHandler接口和用于异步处理模式的IHttpAsyncHandler接口。2.2开发工具选型针对WEB应用研发的开发工具选型工作主要包括开发语言的选型、集成开发环境的选型、数据库的选型以及信息服务器的选型。2.2.1开发语言选型ASP.NET技术是由微软在.NETFramework框架中用于开发WEB应用程序的类库,它提供了ASP.NET网页处理、扩充以及HTTP通道的应用程序与通信处理等功能,使用ASRNET技术,其主要优点有:1)可管理性。由于ASENET使用基于文本的、分级的配置系统,从而简化了配置服务器环境以及WEB应用的工作,并且在不同环境中也可以较方便的改变配置以适应新的环境;2)易于部署。只需简单地将由ASENET所支持语言编写的动态页面复制到服务器上,即可完成部署,甚至都不需要重新启动服务器;3)跟踪和调试。ASP.NET的跟踪服务可在应用程序级别和页面级别调试过程中启用,可以选择查看页面信息,或者使用应用程序级别的跟踪查看工具查看信息。同时支持使用.NETFramework调试工具进行本地、远程调试;4)移动设备支持。ASP.NET支持任何设备的任何浏览器,开发人员可以使用针对桌面浏览器的编程技术来处理新的移动设备;5)扩展性和可用性。ASP.NET被设计为可扩展的、具有特别专有功能来提高集群的、多处理器环境的性能。ASENET是独立于语言之外的,因此开发人员可以选择最适于应用程序的语言,一般而言,C弹是相对其他比较常用的,它是微软公司推出的一种基于.NET框架、面向对象的高级编程语言,衍生自C和C++,但在继承C和C+十强大功能的同时去掉一些它1气 手机管家在线系统的设计与实现们的复杂性,例如没有宏和多重继承,它综合了VisualBasic简单的可视化控件和C++的高效率,因此,Ci;}其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持使它成为针对.NET开发的首选语言。2.2.2集成开发环境选型MicrosoftVisualStudio(简称VS)是微软公司的开发工具包系列产品,其中包含了诸如UML工具、代码管理控制工具、集成开发环境等等。使用VS可以用来创建Windows平台下的Windows应用程序和WEB应用,也可用来创建智能设备应用程序和Office插件等等。VS系列自VisualStudio,NET版本将.NET框架引入了受控代码开发环境以来,便可使用ASP.NET开发WEB应用程序,经过版本的不断更新,VS对。NET框架的支持力度越来越大,因此,VisualStudio是基于ASENET的WEB应用开发的首选工具。2.2.3数据库选型MS-SQLSERVER是由Micriosoft、Sybase和Ashton—Tate三家公司共同开发的关系型数据库管理系统,它相对DB2、Oracle等大型商业数据库操作简单,较易部署,但又有着不俗的表现,所以广泛应用于中小型系统的数据库后台系统,同时,它也是与Windows平台上中型数据库的首选。2.2.4信息服务器选型IntemetInformationServices(简称IIS,即互联网信息服务)是由微软公司提供的基于运行MicrosoftWindows的互联网基本服务,是一种WEB服务组件,其中包括WEB服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等服务。相比其他信息服务器,IIS具有以下优势:1)作为操作系统的服务组件的形式提供,与Windows操作系统具有较高的集成度,配合程度也较高,具有较好的性能表现;2)配置简单,IIS的图形化管理界面较易部署3)自从IIS6对安全性作出大幅改进以来,IIS与,NET平台相互倚靠,安全方面具有不俗的表现。14 第二章基础技术说明以及开发工具选型2.3本章小结本章首先详细介绍了设计手机管家在线系统的一些基础且必不可少的知识,其中包括:基于互联网的远程控制技术,TCP协议与HTTP协议,JAVASCRIPT、AJAX与JQuery技术,服务器推技术,.NETFramework和ASP.NET技术等等。其次针对系统的开发工具选型作了简单介绍,其中包括:开发语言选型、集成开发环境选型、数据库选型以及信息服务器选型。 手机管家在线系统的设计与实现第三章手机管家在线系统的总体设计由于移动设备的低带宽,低功耗的限制,所以在设计手机管家在线系统时不仅要保证手机客户端在低带宽、低功耗的状态下长期运行,同时还需要系统能够在任何时刻实时地、高效地获取到手机端信息,所以系统各个部分的相互联系、分工以及信息在各部分之间的传输机制成为系统的重中之重。本章在前一章基础知识之上,将继续根据该项目的系统设计目标与原则制定出系统的总体框架,并在此基础上对将要实现的系统进行功能模块划分以及数据库的逻辑结构设计。3.1系统设计目标该项目旨在为智能手机用户提供一个用于在线管理绑定手机的信息管理系统,注册用户只要登录网站,便可在网页上方便地对手机端诸如短信息、通话记录、通讯录以及日程计划等各种信息的管理,改善手机端因操作不便、屏幕尺寸过小等弊端而导致的用户体验不佳的问题,不仅如此,用户还可以通过该在线系统发送指令,对绑定手机进行远程控制,如发送短信息、设置静音、返回定位信息等等,从而提高智能手机用户的工作效率、增强智能手机的安全性。3.2系统设计原则手机管家在线系统应该在准确、低流量的信息传输机制的基础上实现手机信息在WEB端实时、友好地在线管理。(1)准确信息可以在信息传输管道中准确的传输是该系统的基础性需求,由于手机端网络信号的不稳定性以及智能移动终端与PC端的平台差异性,所以该系统的信息传输与类似PC端之间或手机端之间同构网络内部的信息传递较为不同,因此在本系统中,如何在PC端与手机端这样的异构网络之间建立准确的信息传输机制是非常重要的。(2)高效、低流量由于手机具有较低的电量和数据流量,目前一般的智能手机只具有一天到两天的待机时问,数据流量则根据用户所选择的套餐而定,但一般而言也仅仅在50M到100M之间,因此,这样的制约要求手机端设计的客户端可以尽量在节电的前提下保证与服务16 第三章手机管家在线系统的总体设计器端的信息传输,同时信息传输机制以及数据协议的合理设计不仅可以减少数据流量的使用,而且由于数据传输是手机端电量消耗的主要部分,因此这个举措也在一定程度上降低了手机端的电量消耗㈤。(3)实时手机管家在线系统要求手机端或WEB端的新操作、新信息可以在WEB端或手机端得到实时地展现和处理,例如手机端的新短信如果没有在收到的第一时间发送至WEB端,则用户则无法在网页上及时看到新短信的内容,或者用户在页面上的短信发送命令没有及时地传输到手机端上,则用户绑定的手机无法按照用户的需求实时地通过手机端将短信发送出去,因此,在两者之间建立的信息传输机制需要及时地将信息投递给对方并获取对方产生的新信息。(4)界面友好手机管家在线系统是为智能手机用户提供了一个用于手机信息管理、远程控制的平台,因此在WEB端的设计中,需要照顾到PC、手机端操作的差异性,使得用户在WEB端页面中可以容易地、高效地完成对手机的控制和手机端信息的查看。3.3系统总体框架手机管家在线系统由三个部分构成,分别是手机客户端、WEB端以及服务器端。(1)手机端手机客户端常驻于手机后台,主要作用是:1)监听手机事件,对感兴趣的事件(如短信息的发送、接收,拨打、接听电话,联系人更改,增加、删除日程计划等)进行捕获并通过数据交互通道同步至服务器端。2)监听WEB端发来的操作指令(如发送短信,手机静音,新建、编辑和删除联系人等)并进行相应操作,处理后向服务器反馈操作结果。(2)WEB端WEB端则为用户提供友好的操作接口和显示界面,可以让用户在页面上对绑定手机方便地、实时地进行信息的检索和操作指令的下达,并且还会对一些表单的部分填写信息做初步的正确性验证。(3)服务器端服务器端是整个手机管家在线系统的中心环节,其主要作用有:1)为整个系统提 手机管家在线系统的设计与实现供必要的服务环境以满足系统需求,如利用服务器的存储容量优势通过数据库持久化用户手机上的各种信息(如短信息、联系人、通话记录、日程计划等)、借助应用程序服务器软件将业务逻辑提供给客户端去调用等等。2)沟通手机端与WEB端之间的通信,例如手机端产生的新数据(即需同步信息)经由手机端与服务器的数据通道到达服务器端,服务器解析该信息内容并成功保存至数据库后,会向手机端反馈处理结果,同时服务器会查看保存的在线WEB端列表,如果相应用户WEB端在线,则会对该用户登陆的WEB端发出通知并更新相应部分内容,从而实现WEB端与手机端的同步更新。同理,用户在WEB端对手机进行的远程操作指令(如发送短信息、新建或修改联系人信息、手机静音等操作)经由WEB端与服务器的数据通道到达服务器端,服务器收到指令之后会向手机端发出操作指令,手机端对指令处理成功后,将状态码返回给服务器,最后服务器根据状态码将操作产生的信息变化持久化到数据库中,从而完成通过WEB端对手机端的指令下达。系统的总体框架如下图所示t表现层业务层应用支撑层信息服务器统一身份认证数据交互机制数据层基础层图3.1系统总体框架18 第三章手机管家在线系统的总体设计3.4系统功能模块划分基于手机的通用特性以及日常用户行为的普遍性,本文确定了该系统的服务器端从功能上主要由通讯信息(包括短信与通话记录)管理模块、通讯录管理模块、日程计划管理模块以及工具箱模块等四大功能模块构成,手机客户端则由资料备份、资料删除、资料恢复构成。图3.2服务器端功能模块划分以下是服务器端功能模块说明:通讯信息管理模块:主要负责用户的管理日常通讯信息的需求,如发送、群发、查看、删除手机短信,查看、删除通话记录等功能。通讯录管理模块:手机通讯录日常管理,如新建、编辑、查看、删除联系人通讯信息、联系人的分组管理等功能。日程管理模块:具有新建、编辑、查看、删除日程计划等功能。工具箱模块:为用户提供了多种实用的工具,如导出短信、通话记录、联系人以及日程计划,远程静音、远程定位、远程锁机等诸多实用功能。本文的后续章节则根据服务器端的四大功能模块的设计和实现一一展开说明。该系统的手机客户端的设计与实现不在本文的讨论范围,这里仅对手机客户端的各个功能模块做简要说明:资料备份模块:将手机端的通讯信息、通讯录、日程计划等资料上传至服务器端作为备份。资料删除模块:当手机端删除通讯信息、通讯录、日程计划等资料时,可以同时选择是19 手机管家在线系统的设计与实现否删除服务器端备份资料。资料恢复模块:将服务器端备份的通讯信息、通讯录、日程计划等资料恢复至手机端。3.5数据库逻辑结构设计数据库设计(DatabaseDesign)是指对于一个既定的应用环境,构造一个目前所能达到的、最优化的数据库模式,建立数据库以及应用系统,使它们能够互相协作,有效地存储数据,从而满足该系统用户的应用需求和数据持久化需求【6】。由于数据库是信息系统的核心和基础,而且数据库应用系统又较为复杂,所以数据库的设计就需要慎之又慎,不可能一蹴而就,而是一种“反复探寻,逐步求精”的过程[33】。通常,实体一关系图(Entity.RelationshipDiagram,简称E.R图)是建立数据模型的常用工具,图中会包含实体、关系和属性三种基本成分,其中实体用矩形表示,矩形框内写明实体名称,属性用椭圆框表示,并用无向边将其与相应实体联系起来;联系用菱形表示,框内写明联系名,并用无向边分别于有关实体连接起来,同时在无向边旁标上联系类型,有(一对一,用1:1表示;一对多,用1:n表示;多对多,用m:n表示)1191。建模人员正是用实体~关系图来表示现实问题的方方面面,另外,该模型通俗易懂,即使不熟悉建模的用户也能够轻易读懂,因此,E—R图常作为设计人员与用户的沟通工具,从而更准确地获得用户的实际需求及潜在需求。该系统的E.R图如下所示:图3.3系统E.R图 第三章手机管家在线系统的总体设计以下是数据库中一些关键表的字段详细说明:表3.1User用户表字段名类型宽度可否为空备注n锄e卜『、,arChar30否用户名,主键first—.nameN、,arChar50是名lastflameN、,arChar50是姓positionNVa疋bar100是职位companyNVa疋har200是公司passwordII、,arChar50否密码register__timeDateTime否注册时间bindj)honeN、自rChar20是绑定手机rankInt否级别mtroNVhChar500是简介用户表是这个系统的中心表,它记录了注册用户的基本信息,其中,用户密码通过MD5的32位加密保存;级别字段用于后续版本的系统扩展,可以为不同级别用户提供多种多样的服务;bind__phone是该用户的绑定手机,目前系统只支持一个用户名绑定一个手机号,刚注册时用户是没有绑定手机的,用户需要登录后在设置页面填写手机号完成绑定(或通过手机端相关页面进行操作)。2I 手机管家在线系统的设计与实现表3.2UserSet用户配置表字段名类型宽度可否为空备注USemameNWhat30否用户名,主键main—.defaultInt否主界面默认页sms——defaultInt否通讯界面默认页sms__pagesizeInt否短信每页显示数sms_deltipBit否短信删除提示sms_dehypeBit否删除方式sms_newtipBit否新短信到来提示sms_rmrepeatB“否群发时去除重复联系人cnt__pagesizeInt否联系人每页显示数cnt_deltipBit否联系人删除提示cnt——defaultsortBit否联系人默认排序cnt_showtypeBjt否联系人显示方式cnt_autoupdateBit否联系人自动更新crc_pagesizeInt否通话记录每页显示数crcdeltipBit否通话记录删除提示crc_newtipBit否新通话记录到来提示用户配置表记录了用户的详细配置信息,包括WEB端的页面配置、显示配置以及操作方式的配置。其中,主界面默认页可选通讯页、联系人管理页、日程管理页;删除方式可以选择彻底删除或删除到回收站,前者不留痕迹,手机及服务器端均删除该短信,后者则会在服务器端的用户短信回收站中保留一个备份。 第三章手机管家在线系统的总体设计表3.3PhoneList手机型号表字段名类型宽度可否为空各注p_idDecimal18否标示符,自动编号,主键companyN、,arChar50否手机厂商typeNvarChar50否手机型号手机型号表用于保存各大厂商的主要型号的手机信息,便于用户在填写个人手机信息时选择对应型号的手机,从而提供更有针对性的服务。表3.4Phone手机信息表字段名类型宽度可否为空备注numberNvarChar20否手机号,主键1melNChar15否手机的IMEI码belong_userNVarChar30否所属用户OSNVarChar50是手机操作系统phoneDecimal18否手机型号sync—.callBit否是否自动同步通话记录syncjnsgBit否是否自动同步短信息synccontactBit否是否自动同步联系人sync——scheduleBit否是否自动同步日程表手机信息表保存用户绑定过的手机信息,其中,手机型号是外键,参照手机型号表中的id字段,四个同步字段用于设置手机端同步方式,如果为true,则手机端会自动将新产生的通话记录、短信息、联系人以及日程表同步到服务器端,反之则由用户手动同步。 手机管家在线系统的设计与实现表3.5ContactMenu联系方式类型表字段名类型宽度可否为空意义cidDecimal18否标示符,自增,主键——type-nameN、,arChar50否类型名称type—name_engNVarChar50否类型英文名称type_groupN、,arChar50否类型分组类型方式类型表记录了各种联系方式的信息,主要用于生成联系方式的下拉菜单便于用户在填写联系人通讯录时选择,如联系人的QQ号即为即时通讯分组中的联系方式,英文标示为instinctqq。表3.6ContactName联系人表字段名类型宽度可否为空意义cnidDecimal18否标示符,自增,主键refidDecimal18否用户手机中联系人唯一标示符belong_userN、,arChar30否所属用户lastnameNVarChar50是姓first——nameNVarChar50日名疋groupingNvarChar50否分组companyNVarChar200是公司positionN、自rCbarlOO是职位introN、,打Char500是简介联系人表储存用户的通讯录中所有联系人的基本信息,这里并不包含每个联系人的联系方式,由于联系人和联系方式为一对多的关系,因此将其拆分为两个表,即联系人表和联系方式表。24 第三章手机管家在线系统的总体设计表3.7ContactMethod联系方式表字段名类型宽度可否为空备注cmidDecimal18否标示符,自增,主键contactidDecimal18否所属联系人contac£卯eDecimal18否联系方式类型contact——methodNVarChar200是联系方式联系方式表保存了用户通讯录中所有联系人的所有联系方式,其中,contact—id为外键,参照ContactName表的id;联系方式也是外键,参照联系方式类型表中的id;contact—method为联系方式内容。表3.8Schedule日程计划表字段名类型宽度可否为空备注SidDecimal18否标示符,自增,主键—^refidDecimal18否用户手机日程计划唯一标示符belong_userN、,arChar30否所属用户subjectNvarChar200是主题locationNVarChar200是地点starttime13ateTime否开始时间endtimeDateTime否结束时间日程计划表记录了用户的日程计划相关信息,其中,starttime指起始时间,endtime指结束时间。 手机管家在线系统的设计与实现表3.9CallRecord通话记录表字段名类型宽度可否为空备注cidDecimal18否唯一标示符,自增,主键——refidDecimal18否用户手机中通话记录标示符typeInt否通话记录类型from_phoneN、白rChar20否呼叫电话号码to__phoneN、褂Cbar20否接听电话号码tlmeDateTime否呼叫时间durationInt否通话时间belonguserN、,arChar30否骶霭甩户通话记录表记录了用户的拨打、接听电话情况,其中,type为通话记录类型,可选值为1——接听电话,2——拨打电话,3——未接电话;表3.10Message短信息表字段名类型宽度可否为空备注midDecimal18否标示符,自增,主键belonguserN、,arCbar30否妖属用户refidDecimal18否用户手机短信息唯一标示符fi'omjphoneNV打Char20否发送方号码to_phoneNVarChar20否接收方号码hmeDateTime否发送时间messageNVarChat500是短信内容短信息表记录用户手机的接收短信和发送短信。除外,还有UserContact表(保存注册用户填写的通讯方式)、HistoryOperation表(用于保存用户的历史操作)、PhoneNewOperate表(用于保存用于在离线状态下进行的手机操作,当手机登录服务器时,会自动获取离线操作,并完成实际操作)、HistoryMessage表(用户的删除短信)、HistoryCallRecord表、HistoryContactName表、HistoryContactMethod表等等。 第三章手机管家在线系统的总体设计3.6本章小结本章重点阐述了手机管家在线系统的总体设计思路,主要包括系统的设计目标、原则以及总体框架,并在此基础上对系统的功能模块进行了划分,最后介绍了数据库的逻辑结构设计。 手机管家在线系统的设计与实现第四章手机管家在线系统的详细设计手机管家在线系统主要有通讯管理模块、联系人管理模块、日程计划管理模块以及工具箱模块四大部分组成,下面分别介绍系统的通信机制以及各个功能模块的详细设计思路,最后简要介绍一下与手机客户端对接工作。4.1系统通信机制设计手机端和WEB端需要实时的获取对方的新操作指令和新信息,那么服务器端就需要一种机制可以随时将新信息“推”到客户端(手机端或WEB端),但如果采用客户端请求,服务器响应(即客户端“拉”)这种传统的机制,就需要通过客户端轮询(即每隔一段时间客户端就向服务器端发出获取新数据的请求),因为客户端不知道服务器端的新信息、新操作指令何时会产生,客户端想要主动获得服务器端最新数据的唯一途径就是不断的向服务器发出请求,但这样产生的问题是,若间隔时间过长,则会不能及时获得最新的信息,从而可能达不到系统实时性的要求,若间隔时间过短,-N客户端需要在轮询上消耗太多的资源;二则浪费了带宽。尤其对于手机这样资源有限的客户端,效率低下、带宽浪费较多则会成为软件的致命缺陷而难以推广【221。服务器推技术的产生正是为这类实时性要求较高的应用而服务的,它一改客户端请求,服务器应答的传统方式,而是通过相关技术,让服务器将新信息主动“推”到客户端,从而满足系统的实时性需求[241。在4.1.1和4.1.2章节中,本文将会对WEB浏览器端与服务器以及手机端与服务器两个方面分别详细描述它们之间数据交互机制的设计思路。系统的总体设计思想如图4.1所示: 第四章手机管家在线系统的详细设计图4.1服务器端与WEB端、手机端的信息交互设计思想4.1.1浏览器客户端与服务器的数据交互机制设计针对本应用的特性,综合服务器推技术各种方案的优劣,最终本文决定采用基于HTTP长连接的Ajax长轮询服务器推技术作为浏览器端和服务器端的数据交互机制,成熟的JQuery库对Ajax的异步请求做了封装,屏蔽了语法的复杂性和不用平台的差异性,可以让用户更多的关注业务逻辑本身。传统Ajax的异步请求是这样的【3】:(1)调用newXMLHttpRequest0或newActiveX0bject(“Msxml2.XMLHTTP’’)或newActiveXObject(Microsoft.XMLHTTP)gI]建XMLHTTP对象用于异步请求,这里的三种创建方式是为了适应不同的浏览器。(2)通过XMLHTTP对象的open方法,打开与服务器端的连接,同时定义指令的发送方式,服务网页(即uRL)和请求权限等。该方法有五个参数,分别是:1)request—type,即发送请求类型,常用的类型为POST或GET。2)url,即请求服务的网页。3)asynch,默认为true,即希望使用异步连接。4)usemame,若该网页需要身份验证,可制定用户名。5)password,用于身份验证的密码。通常调用时只制定前三个参数,如request.open(“GET",url,true)。’9 第四章手机管家在线系统的详细设计是对同一页面的重复访问(因为url相同),因此浏览器取出缓存的页面作为响应,从而导致无法再次向服务器发出请求,保持长连接,所以增加一个随机值参数避免重复同访问一个url。该请求返回会存在两种情况:1)对应登录名所绑定的手机端有新信息或新指令发送到服务器端。2)间隔时间到,需要重新请求。当1)情况发生时,请求返回时回调函数中的data即为服务器的响应内容(产生的新信息或新指令),浏览器根据响应内容作相应处理,如Logout(验证失败或手机端强制WEB端退出)——WEB端退出、PhoneLogin(手机端登录)——WEB端弹出通知、AddMessage(新发送或接收短信内容)——WEB端通过Ajax局部刷新短信列表等等。浏览器端处理完响应内容后,马上再次调用waitMessage函数,向服务器重新发出异步请求,继续监视手机端的新变化。这样手机端的新信息、新指令则实时的在WEB端得到展现,从而实现WEB端对手机端的实时监控。心跳机制的引入(即浏览器端发向服务器的异步请求在间隔时间到期时会被强制返回,并重新发出请求)不仅可以使服务器及时了解到WEB端的登录情况并作出响应(如通知绑定手机WEB端下线),同时也可以避免服务器端产生大量无效的死连接,加重服务器负担。另外,服务器的Session保存一般在20分钟左右,因此,若希望使浏览器的Session不会过时,也需要心跳机制的引入。根据经验,一般心跳可以设在15.20分钟,心跳如果过快,则浪费带宽,同时也加重服务器负担,若心跳过慢,则往往满足不了实时性的要求。WEB端发出指令时的处理是这样的,当用户点击WEB端的某个操作按钮时(如发送短信、编辑联系人等),浏览器会向服务器发出异步请求,请求的方式为:$.post(”Operate.ashx?ask=”+Math.random(),{action:”[command]",content:[string]},function(data){⋯⋯,),其qbOperate.ashX是服务器端用于接收WEB端操作请求的处理页面,传输数据中,action参数代表操作命令标示,比如说SendMsP发送短信,Deletecontact’一删除联系人等,content为该操作指令的必要信息。在服务器获得WEB端请求后,会查找手机端的在线列表,即与服务器端保持长连接的手机端的HTTP请求列表,若该WEB端对应手机端在线,即存在对应的HTTP监听请求,则将WEB端指令返回给手机端作为响应。手机端在获得响应后,会根据指令内容进行响应处理,处理完成后会将处理结果通过相应的函数接口(后缀为Res)发回给服务器端,服务器再根据手机端的处理结果完成持久化并将处理结果返回给WEB端ajax请求的回调函数,回调函数根据返回码data值判断服务器的处理结果,并对浏览器端作出必要的通知或局部数据刷 手机管家在线系统的设计与实现新。4.1.2手机客户端与服务器的数据交互机制设计手机客户端由于其本身的硬件以及特性与PC的差别颇大,所以在各方面的设计上往往不能照搬PC上WEB端的设计方案,手机端电量有限,数据流量也很宝贵,因此,数据的交互机制需要具有占用资源少,节省数据流量的特点【23f。客户端与服务器端通过Socket保持长连接是其中的一种解决方案,TCP提供的全双工数据流传输服务可以保证通道两端在任意时刻发送、接收数据,同时TCP协议具有超时重传和拥塞控制等可靠性保证,因此,传输层采用TCP协议的Socket长连接常常被一些实时性、安全性要求较高的系统中所使用,但该方案若使用在本系统的手机端则会出现一些问题,如1)手机本身有电量限制,如果使用Socket长时间保持连接,则耗电非常严重,这样的系统缺点对于该这种需要手机几天、甚至几个月保持长时间连接的应用将会是一个灾难。2)手机网络的情况复杂,常常会有信号时断时续的问题,因此需要实现很复杂的重连机制,并且手机网络会通过电信运营商的网关、防火墙等,长时间的Socket连接往往不被允许。因此,根据以上分析,本文采用了基于HTTP连接的信息交互机制。同时,客户端采用Java的NIO技术,使HTTP可以实现异步请求,不会长时间保持连接,从而解决了Socket连接的耗电问题。手机端在登录服务器成功后(即用户名和密码验证通过后),后台则会立即向服务器端发出HTTP请求,地址结构为:PhoneOversee.ashx?action=[type],其中,type取值为get,则表示向服务器获取数据,请求到达后,服务器会将其加入客户端请求列表中(和服务器维护的浏览器端发出的请求列表不同,但属于相同数据结构),在有需要推送至该手机端的新数据产生或请求超时之前不会被响应。手机端在服务器响应到达后,会根据响应正文进行处理,如Timeou卜一请求超时,不作处理、SendMsg-发送短信等。手机的操作结果会通过手机端的发送数据通道传至服务器,服务器再根据操作结果做相应同步处理和持久化操作。手机端在处理完服务器响应后,立即再次向服务器发出同样的异步请求,从而实时地获得服务器端的推送信息。同样,这里请求超时的设置也同浏览器端的思考是一样的,引入心跳机制的好处是:1)让服务器了解手机端登录状态。2)避免服务器端产生大量死链接。3)保持与服务器的会话不过时。手机端除了不断的通过HTTP请求向服务器发出监控请求,其自身也会在登录服务1’ 第四章手机管家在线系统的详细设计器后开启监控线程,将捕捉到的事件(如新短信到来、打出电话等)通过HTTP请求同步至服务器,地址为PhoneOperate.ashx。手机端监控环节由团队其他相关人员负责,这里不做赘述。4.1.3服务器端对监听请求列表的维护手机端和WEB端一旦登录,便与服务器端保持了连接,直到客户端离线。当大量客户端登录服务器并长时间保持连接时,服务器端就会积累很多客户端HTTP请求,如何维护这些HTTP请求以及如何在需要为某个请求响应时快速找到该请求对于服务器的处理效率影响显著。散列表(HashTable,也叫哈希表),它是根据键值(Key.Value)直接访问的数据结构[291,一个键通过哈希函数,得到的值映射到散列表中的一个位置作为访问索引,以加快查找的速度,在冲突较小的情况下,查找的时间复杂度可以接近O(1)。散列表可以用作储存客户端的请求的数据结构,当客户端登录成功时,服务器会保存该用户登录的登录名到Session中,之后当客户端发送HTTP监听请求时,服务器会取出Session中的登录名并进行哈希,根据得到的哈希值作为依据将登录名以及请求一同映射到哈希表中。相关类的结构如下所示:classAsynResult:IAsyncResult{privatebool—IsCompleted=false;privateAsyncCallbackcb;privateobjectextraData;//以上是实现IAsyncResult接E1privateStringuserName;//用户名privateStringtype;//请求类型,取GET(监听请求,客户端的HTTP长连接)或OP(客户端发出的操作请求,等待操作结果)privateHttpContextconteXt:∥HTTP请求上下文)构造好的哈希函数的方法,应能使冲突尽可能地小,因而应该具有较好的随机性,这样可以使得到的哈希值(即可看做散列地址)均匀地分布在哈希表的整个地址空间中。常见的哈希算法的构造方法有㈣:1)直接定址法,以关键字key或其加上某个常数值C作为哈希地址。2)除留余数法,以关键字key除以n所得余数作为哈希地址,n的选取一般为质数或不包含小于20质因子的合数,并且小于等于哈希表长。3)平方取中法,取关键字平方后的中间几位作为哈希地址。4)折叠法,适合用于关键字位数较多,而地址区间较小的情况。5)数值分析法,通过对关键字进行分析,发现其变化规律,从气1 手机管家在线系统的设计与实现而构造出响应的哈希函数。用于查找的哈希函数通常可以简单的划分为加法哈希、位运算哈希、乘法哈希、除法哈希,查表哈希和混合哈希。其中位运算哈希以其运算速度较快的特点得到广泛的使用,这类型哈希函数通过利用各种位运算(常见的是移位和异或)来充分混合输入元素,因此本文结合移位哈希的折叠法和除留余数法设计标准的旋转哈希函数:introtatingHash(Stringkey,intprime){inthash,i;for(hash=key.1ength(),i_0;i>28)^key[i];return(hash%prime);}通过得到的value在哈希表中找到相映射的HTTP请求,取出后根据处理结果返回响应。但在一些情况下,对不同的关键字进行哈希可能得到同一散列地址,即keyl≠key2,而f(keyl)=f(key2),这种情况称为碰撞,碰撞是制约查找效率的很重要的一个因素,它由三个因素决定:1)被哈希的关键字是否均匀分配在地址空间内。即哈希函数的选取是否得当,具有较强的随机性。2)处理碰撞的方法是否得当。3)哈希表的装填因子是否偏大。装填因子的定义为Q=填入哈希表的元素个数/哈希表的长度。其中,哈希表的长度一般选择2的N次幂,这样可以使其分布更均匀,同时碰撞的几率相对更小。处理碰撞的方法也是影响碰撞频率的一个重要方面,一般常见的处理碰撞方法有[291:1)开放定址法:Hi=(H(key)+di)MODm,i=l,2,...,k(k<=m.1)。即当碰撞发生时,运用该法形成一个地址序列,沿着这个序列逐个探测,直到找出一个“空”的开放地址。序列的取法通常有线性探测再散列、二次探测再散列以及伪随机探测再散列。2)再散列法:Hi_RHi(key),i=l,2,...,kRHi均是不同的散列函数,即在碰撞时计算另一个哈希函数地址,直到不会再产生碰撞,该方法虽不容易产生“集团”,但效率较低。3)链地址法:将产生碰撞的所有记录均存储在一个线性链表中。该方法彻底解决“集团”问题,但要多费一些存储空间。4)建立公共溢出区:发生碰撞时,则将记录均存放在溢出表中。由于该应用的特点,哈希表会有较多的插入、删除操作(即HTTP请求到来的添加以及响应后的删除),所以考虑应该使用插入、删除操作成本较小的链地址法作为该哈希表的碰撞处理算法,在哈希表的每个槽中存放指向第一个与该key相映射的记录指针,当查找时,只需要通过哈希找到哈希表中对应key的槽,再遍历一遍槽中的线性链表即可找到对应的HTTP请求。 第四章手机管家在线系统的详细设计通过在服务器内部分别建立用于存储手机端以及WEB端HTTP请求列表的哈希表,使得客户端请求得以在服务器内部得到较好的维护和较快的查找效率。4.2通讯管理模块设计该模块的主要作用是为用户提供便捷的通讯功能,用户通过通讯管理界面,不仅可以管理、查看手机上的短信息、通话记录等信息,而且还可以在WEB端不用点选手机按键,即可便捷地完成短信接收、短信发送、短信群发、短信模板编辑以及短信、通话记录的查看、删除等功能。通讯管理模块可分为短信管理模块和通话记录管理两个子模块。4.2.1短信管理模块短信管理属于通讯管理模块的子模块,用于日常的手机短信维护。常用的函数接口如表4.1、表4,2所示:表4.1短信管理WEB端常用函数接口命令请求方式成功返回失败返回发送短信Operate.ashx?action2SendMsAddMsg:@ref_idl$@phoneParamErrorg&phone22@phonel;@phone215@time1;@ref_id2$@phonError;⋯&content=@contente25@time2;...删除短信Operate.ashx?action=DeleteMDeleteMsg:@ref_idl;@ref_iParamErrorsg&id=@ref-idl;@ref_id2;⋯d2;...NotExistedError 手机管家在线系统的设计与实现表4.2短信管理手机端常用函数接口命令请求方式成功返回失败返回新增短信PhoneOperate.ashx?action=AdAddMsg:@ref_idParamErrordMsg&content=@type$@phoTimeParseErrorne$@content$@timeTypeErrorEITDl"发送短信PhoneOperate.ashx?action=Se0KParamError反馈ndMsgRes&content=-@ref_id$TimeParseError@phone$content$@timeError删除短信PhoneOperate.ashx?action=DeDeleteMsg:@refidl;@ref_iParamErrorleteMsg&id=@ref_id1$@refid2;...NotExistedd2$⋯Error删除短信PhoneOperate.ashx?action=De0KParamError反馈leteMsgRes&id=@refidl$@rErroreftd2;.。.其中,手机端的新增短信命令可以新增发送短信和接收短信,这里请求方式中的type为新增短信类型,1——接收短信;2——发送短信。下面本文根据用户的常用操作,介绍一下各个主要功能的设计思路。(1)WEB端短信发送用户完成短信编辑并发出短信发送指令时,则短信信息会通过AJAX的异步HTTP请求发送至服务器Operate.ashx页面,请求参数有phone和content,其中,phone包含收件人号码列表,并以分号分割,如phonel;phone2;⋯;content为短信内容。服务器端用于指令处理的主要代码如下所示:publicIAsyncResultBeginProcessRequest(HttpContextcontext,AsyncCallbackcb,objectextraData)//用于异步请求处理的函数接口{switch(context.Request.Params[”action”]y/用于匹配actionl拘状态机{ease”SendMsg”://匹配WEB端发送短信指令SendMsg();∥转入函数处理break; 第四章手机管家在线系统的详细设计⋯⋯//其他匹配指令的处理}AsynResultasyncResult=newAsynResult(context,cb,extraData,context.Session[”userName”].ToStrin90);//建立向wEB端响应l拘Responseif(!WaitToRetum)asyncResult.Send(null);//若不需等待手机端处理结果,则立即向wEB端发送elsef//否则,加入WEB端指令监听列表,等候手机端的处理结果asyncResult.ExtraData=RepToPhone;Weblnfos.Instance0.AddMessage(”operate”,asyncResult);}retumasyncResult;}当发送单一短信或群发短信时,系统在对内容转入后台进行处理时,通过Regex类完成对模板字段的匹配和替换,利用一个布尔变量接收匹配结果,若匹配成功,则调用字符串的Replace方法将相应的字段进行替换。举例说明:若试图对“姓”模板进行替换,则调用boolNameMatch=newRegex(”【姓】”).IsMatch(Content),如果NameMatch为true,贝JJNNContent=Content.Replace(”【姓】”,LastName)根据用户之前的联系人资料,自动取出联系人的姓对模板字段【姓】进行替换,从而避免用户对内容的重复填写。以下是发送短信的活动图: 手机管家在线系统的设计与实现图4.2发送短信活动图1)当WEB端请求到来时,服务器端会通过状态机的选择将请求分别转入不同的函数内部进行处理,发送短信的处理函数为SendMsg。2)函数通过解析请求参数将指令内容储存于特定变量中,这里Content(String)保存短信内容,Phones(String数组)保存接收方手机列表,另外这个步骤还会完成发送至手机端指令字符串的初始化。3)判断接收方列表中的手机号是否均被处理,若均被处理,则跳至步骤7)1R 第四章手机管家在线系统的详细设计4)对短信内容根据接收方资料进行模板替换,并对手机号码串进行整理,如手机号国家前缀码的去除等。5)根据处理后的短信内容生成指令字符串,并追加到需要发送至手机端指令字符串的后面,其中群发短信时发送至手机端指令的短信信息之间通过分号分割,每条短信信息由接收方手机号和短信内容组成,字段间用$分割。6)回到步骤3)7)将该请求加入WEB端请求列表,等待手机端的处理结果,并将形成的指令字符串通过手机端指令监听列表的管理类PhoneInfos将指令发送至手机端。相关代码如下所示:privatevoidSendMsgO//发送短信处理函数{RepToPhone=”AddMessage:”;//发送至手机端指令字符串初始化StringContent2Context.Request.Params[”content”】.ToStringO;String[】Phones2Context.Request.Params[”phones”].ToStringO.Split(newString[](”;”},StringSplitOptions.RemoVeEmp哆Entries);∥各个参数的读取foreach(StringPhoneinPhones)//对每一个接收人进行处理(Content=Tools.ParseMessage(Content);Phone=Tools.ParsePhoneNumber(Phone);RepToPhone+=Phone+”$”+Content+”!”:)//将生成的指令字符串发往手机客户端Phonelnfos.InstanceO.SendToClient(Context.Session[”userName”],RepToPhone);}privatevoidSendMsgRes0//手机端发送短信反馈处理函数{String[】Params2Context.Request.Params[”content”].ToStrin90.Split(newString[]{lt$II},StringSplitOptions.RemoveEmptyEntries);//读取各个参数//根据反馈信息建2Message对象Msg=newMessage(Params[O],Context.Session[”userName”】,Context.Session[”phone”】,Params[1],Params[2],Params[3]);UsersContr01.AddMessage(Ms曲;∥将Message对象持久化Weblnfos.Instance().SendToWeb(Context.Session[”userName”],Content,"SendMsgRes”)://将反馈结果发送至WEB端)当手机端获取到短信发送指令并处理结束后,则会向服务器端发出确认信息,HTTP请求地址为PhoneOperate.ashx,参数包括action=SendMsgRes,服务器通过该字段获取用户请求目的,即反馈发送短信情况,请求正文为发送短信后的反馈信息,包括手机端生成的短信序列号(该序列号在手机端是唯一的,因此可作为该用户的短信在服务器端的19 手机管家在线系统的设计与实现唯一标示),手机端发送短信时的时间等。WEB端在成功取得这些信息后,才会持久化到数据库中,并将新生成的短信内容返回至WEB端,WEB端Ajax回调函数在得到服务器的返回内容后,根据发送内容,将新产生的短信信息在WEB端刷新,使用户即时地在WEB端看到自己刚才手机端所发送的短信内容,到此则完成WEB端发送短信的整个流程。若中间环节存在错误,则WEB端可以根据服务器端发来的响应对用户进行必要的反馈,如ParamErro卜一传递参数个数错误、Erro卜手机端处理失败等等。同样手机端也可能在中间环节出现错误,女llParamErro卜一传递参数个数错误、TypeErro卜一短信类型错误、TimeParseErro卜一时间格式转换失败、Erro卜服务器端错误等等。(2)WEB端短信回复、转发和删除短信的回复和转发比较容易处理,WEB端通:过.Javascript响应函数即可实现功能。当用户点击删除按钮时,同短信发送指令类似,会向服务器发送一条HTTP请求,aciton参数取值DeleteMsg,id参数则传递了删除短信的序列号(这里的序列号指的是用户手机端的短信标示符,并非服务器端Message数据表中的自增序列号),若需要删除多条短信,则id参数中的序列号由分号隔开。指令传递至服务器,经相关函数处理后,则同短信发送一样,会将指令发送至手机端并等待处理结果返回,手机端获取指令经处理后,返回服务器端处理结果,服务器端根据结果完成数据的持久化和WEB端的反馈。4.2.2通话记录管理模块通话记录管理模块属于通讯管理的子模块,用于查看、管理通话记录。常用的指令函数接口如表4.3、4.4所示:表4.3通话记录管理WEB端常用函数接口命令请求方式成功返回失败返回删除通话Operate.ashx?action=DeletDeleteCallRecord:red_idl;@rPammError记录eCallRecord&id=@ref_idl;efid2;...NotExisted@ref_id2;...Error 第四章手机管家在线系统的详细设计表4.4通话记录管理手机端常用函数接口命令请求方式成功返回失败返回新增通话PhoneOperate.ashx?action=AddCallRecord:ree_idl;@ref_ParamError记录AddCallRecord&content=id2;⋯TypeError@typel$@phonel$@timelTimeParseError$@durationI;...Error删除通话PhoneOperate.ashx?action=DeleteCallRecord:@red_idl;@rParamError记录DeleteCallRecord&id=@reef_id2;...NotExistedf_idl;@ref__id2;...Error删除通话PhoneOperate.ashx?action=OKParamError记录反馈DeleteCallRecordRes&id=Error@ref_idl;@ref_id2;⋯其中,新增通话记录指令中,type为新增类型,系统约定1——已接来电;2——己拨电话;3——未接来电。由于之前在介绍短信管理模块时已经对一部分类似功能的实现做了详细描述,因此,这里对WEB端删除通话记录等操作不再做赘述。当手机有新的通话结束时,该类事件会被手机端的后台监控线程捕获,之后会对服务器发出同步请求,请求方式为PhoneOperate.ashx?action=AddCallRecord&content=@typel$@phonel$@timel$@durationl;⋯,请求到达服务器后,通过解析指令,服务器将相关参数分别取出并检查参数正确性,若遇到错误,如TypeErro卜一通话记录类型错误,即数字非1.3:TimeParseE仃。卜一时问转换错误;ParamEn.o卜一参数个数错误等等,则会将错误信息返回手机端作为响应,若参数检测无误,则完成数据的持久化,并在对手机端返回响应的同时会向WEB端发送通知,从而可以使用户在WEB端看到即时同步的新通话记录。4.3通讯录管理模块设计通讯录管理模块用于用户对手机端通讯录中的联系人进行管理,如联系人的新建、编辑、删除以及分组管理,该模块常用到的指令函数接口如表4.5、4.6所示:4l 手机管家在线系统的设计与实现表4.5通讯录管理WEB端常用函数接口命令请求方式成功返回失败返回联系人编辑Operate.ashx?acfion=SaveCoSaveContact:@ref_idParamErrorntact&content=@}contactid;TypeError@last_name;@first_name;Error@company;@title;@info;@contactmethodidI;@contact_methodl;@contacttypel;⋯联系人删除Operate.ashx?action=DeleteDeleteContact:@refidl;@rParamErrorContact&refid=@ref__idI;efid2;...NotExisted@refid2;⋯Error表4.6通讯录管理手机端常用函数接口命令请求方式成功返回失败返回联系人编辑PhoneOperate.ashx?action=SSaveContact:@ref_idl;@refParamErroraveContact&ref_id=@ref_id—id2;...VCardError1;@refj【d2;⋯&content=@COErrorritent联系人编辑PhoneOperate.ashx?action=SOKParamError反馈aveContactRes&content=@rErroref__id&content=@content联系人删除PhoneOperate.ashx?action=DeleteContact:@refidl;@rParamErrorDeleteContact&ref_id=@refef_id2;...NotExisted—idl;@ref_id2;...Error联系人删除PhoneOperate.ashx?action=OKParamError反馈DeleteContactRes&ref——id=Error@ref-idl$@refid25⋯联系人信息的组织常用VCard格式,这里content保存VCard格式信息,另外,refid 第四章手机管家在线系统的详细设计为相关联系人在手机端的序列号,该序列号在用户手机端是唯一的。下面首先介绍一下VCard规范相关知识4.3.1VCard规范VCard是用于公开交换个人信息的常用规范,可作为各种应用、系统之间的个人信息交换格式,或称为电子名片的文件格式标准【381,它可能包含的信息一般有:姓名、地址信息、电话号码等等。目前因特网国际标准化组织IMC所制定的VCard2.1标准已经得到国际上绝大多数厂商的支持,3.0版是一个包含在RFC2425和RFC2426中的IETF标准跟踪提案。不同的系统针对自身的特点,会在各自实现上有一些差别,本文根据手机端通讯录中联系人的通用编辑方式以及个人不同信息的重要程度,对VCard规范做了适当的精简,从而保证个人信息在手机端和WEB端实现高效率的传输。VCard标准格式由多个字段组成,每个字段一行表示,由三部分组成,分别是字段名、字段参数以及字段值。其中字段名和字段参数用分号(;)分割,而字段参数和字段值之间则用冒号(:)分割,格式如字段名[;字段参数]:字段值,其中,方括号部分的字段参数是可选的,并且允许有多个字参数。VCard格式文件一般以BEGIN:VCARD开始,并由END:VCARD结束,中间部分则是正文段,正文段首先第一行为版本信息,如VERSION:3.0,之后便是各个字段的信息,说明如下:43 手机管家在线系统的设计与实现FN:姓:名N:姓名ORG:所在单位TITLE:称谓或职位NOTE:个人备注信息TEL;TYPE=HOME,FAX:家庭传真TEL;TYPE=WORK,FAX:单位传真TEL;TYPE=HOME:家庭电话TEL;TYPE=WORK:单位电话TEL;TYPE=CELL:个人手机TEL;TYPE--OTHER:其他电话ADR;TYPE=HOME:街道;区;省市;邮编//家庭地址ADR;TYPE=WORK:街道;区;省市;邮编//单位地址ADR;TYPE=OTHER:街道;区;省市;邮编//其他地址URL;Type=HOME:家庭个人主页链接URL;Type=WORK:单位主页链接URL;Type=Other:其他主页链接EMAIL;TYPE=HOME:家庭电子邮箱地址EMAIL;TYPE=WORK:I作电子邮箱地址EMAIL;TYPE=OTHER:其他电子邮箱地址X.MSN:MSN账号名X.YAHOO:YAHOO账号名X.SKYPE:SKYPE账号名X—QQ:QQ账号名这些个人信息基本包含了通讯录中各种常用的联系方式,手机端和WEB端正是利用VCard标准协议交换通讯录中的联系人信息。4.3.2常用功畿设计通讯录管理模块主要作用即是用户对手机端的通讯录进行联系人的新建、编辑以及删除操作,下面分别介绍其实现细节:(1)WEB端新建、编辑联系人当用户需要完成新建或编辑联系人操作时,WEB端便通过HTTP请求将联系人信息发送至服务器端。指令格式见通讯录管理模块WEB端常用函数接口中的联系人编辑命令的请求方式,联系人编辑命令既可用于新建联系人、同时也可用于修改联系人信息,其中,contactid若为0,则用于新建联系人;若不为0,则用于编辑联系人,这时contactid储存手机端该联系人的序列号。服务器端读取到HTTP请求后,便与之前叙述相似,读取action参数并经过有限状态机的处理,转而调用相应的函数ContactSave,函数首先将44 第四章手机管家在线系统的详细设计content参数内容读取,若第一个参数(即Contact—id)值为0,则该操作指令为新建联系人,处理步骤如下:1)检查所有参数,并根据传递参数创建ContactName(联系人)对象,其中包含了联系人的常用基本信息。2)基本信息占用七个参数,之后的参数则为该联系人相对应的多个联系方式,将后续参数三个一组分开,利用每三个参数可以创建一个联系方式(Contact—Method对象),这三个参数分别是contactmethodid(联系方式的序列号,新建联系人时不用)、contactmethodtype(联系方式的类型)年LIcontactmethod(联系方式内容)。3)利用vCardWriterq--具类将该联系人所有信息转换为标准VCard规范的字符串。4)将得到的VCard字符串连同指令标示(SaveContact)组织为应答返回给手机端,并等待手机端处理完成的HTTP请求(即SaveContactRes)。5)若手机端成功返回,则分别调用UsersContr01.AddContact(Contact)齐WUsersContr01.AddContactMethod(Method)将联系人基本信息和各个联系方式完成持久化。若第一个参数(即Contactid)非0,则该操作指令为编辑已有联系人,处理较新建联系人操作稍复杂,该操作前四个步骤与新建联系人时相同,之后的步骤依次是:5)若手机端成功返回,则首先调用UsersContr01.ModifyContact(Contact)方法修改联系人的基本信息。6)调用InfoGetControl类的GetContactMethodldList方法获取该联系人的所有联系方式序列号,结果储存在IdList对象中,类型为List。7)依次处理在b步骤建立的每一个联系方式(ContactMethod对象):若该联系方式的id为空(即为新的联系方式),则直接调用AddContactMethod方法将该联系方式加入数据库;若id不为空(即为旧的联系方式),则调用ModifyContactMethod方法修改该联系方式,并在IdList中删除该id。8)最后依次在IdList中取出剩余的id,并调用RemoveContactMethod方法在数据库中删除该联系方式。45 手机管家在线系统的设计与实现图4.3通讯录保存活动图相关代码如下所示:privatevoidContactSaVe()//保存联系人处理函数{RepToPhone=”SavcContact:”;////发送至手机端指令字符串初始化RepToPhone+=VCardWriter.1nstanceO.ParseRecord(ConteXt.Request.Params["content'’]);//通过vCardWriter类将传来的参数组合成对应的VCard格式字 第四章手机管家在线系统的详细设计符串//将生成的指令字符串发往手机客户端Phonelnfos.Instance()。SendToClient(Context.Session[”userName”],RepToPhone);)privatevoidSaveContactRes0//手机端保存联系人反馈处理函数{//建立vCardReader对象并解析手机端传来的VCard字符串vCardReaderReader=newvCardReader0;Reader.ParseLine(Context.Request.Params[“content'’】);//将Reader中读出的ContactName对象和若干ContactMethod持久化UsersContr01.SaveContact(Reader,Context.Request.Params[“ref_id”】);WebInfos.Instance().SendToWeb(Context.Session[”userName”],Content,"SaveContactRes”);//将反馈结果发送至WEB端}(2)WEB端删除联系入当在用户完成勾选联系人并点击删除联系人按钮时,则WEB端向服务器发出删除联系人请求。指令格式如表4.5中联系人删除请求方式,其中,参数refid,即为删除联系人在手机端的序列号,请求到达服务器后,经过有限状态机,转而由DeleteContact函数处理,处理过程与其他信息的删除类同,服务器端的处理过程如下:1)检查参数并将refidYlJ表分割,保存于IdList中,类型为List。2)将refid歹lJ表连同指令标示(DeleteContact)组织为应答返回给手机端,并等待手机端处理完成的HTTP请求(即DeleteContactRes)。3)待手机端成功返回后,依次取出refid歹lJ表中的ID值,并调用UsersControl类的RemoveContact方法即可删除每个联系人的基本信息以及其对应的所有联系方式。4)将处理结果反馈给WEB端,由wEB端通知用户并更新联系人信息。4.4日程计划管理模块设计日程计划管理模块是为方便用户添加、删除各种日程活动预约而设计的,它有着直观、便捷的特点,WEB端和手机端在这个模块上常用到的函数接口如下所示:47 手机管家在线系统的设计与实现表4.7日程计划管理模块WEB端常用函数接口命令请求方式成功返回失败返回编辑日程Operate.ashx?action=SaveCaSaveCalender:@ref_idParamErrorlender&content=@ref-id;@Errorsubject;@location;@start_time;@end_time删除日程Operate.ashx?action=DeleteDeleteCalender:@ref_idParamErrorCalender&ref_id=@ref_idl;NotExistedError表4.8日程计划管理模块手机端函数接口命令请求方式成功返回失败返回编辑日程PhoneOperate.ashx?action=SSaveCalendar:@refidl;@rParamErroraveCalendar&content=@refe£jd2;⋯Error—idl$@subjectl$@location15@start_timel$@end_timel:⋯编辑日程反PhoneOperate.ashx?action=SOKPammError馈aveCalendarRes&content=@Errorref_idS@subjects@location$@start_time$@end_time删除日程PhoneOperate.ashx?action=DeleteCalender:@ref_idl$ParamErrorDeleteCalendar&ref_id=@re@ref_id2$...NotExistedfidlS@ref_id25...Error删除日程反PhoneOperate.ashx?action=0KParamError馈DeleteCalendarRes&ref—id=Error@refidl;@ref_id2;...该模块的界面和前台脚本使用FullCalendar插件。下面先简单介绍一下该插件。 第四章手机管家在线系统的详细设计4.4.1FullCalendar插件介绍FullCalendar是一个基于JQuery框架而开发的全尺寸、可拖拽的日历插件,它通过AJAX技术获取服务器数据或向服务器发送数据[B】。FullCalendar有着强大的功能和优秀的显示效果,开发人员只需利用简单的配置参数即可达到较好的格式效果,暴露的钩子函数可用来捕捉用户的行为,如单击、拖拽事件等等。若WEB页面希望使用该插件应遵循如下步骤:(1)在网页代码中包含fullcalendar.CSS(插件样式表)、jquery.js(JQuery库)以及fullcalendar.js(插件底层代码)。(2)在该网页所包含的对应{S文件中初始化插件,因为插件的初始化必须在页面加载之后,因此初始化代码应放在$(document).ready事件之中,即为:$(document).ready(function(){$(’#calendar。).fullCalendar({//这里用于添加配置和钩子函数))});#calendar即初始化是针对id名为calendar的控件,因此需要在页面中加入id为calendar的div,到这里,页面将会有加载的日历控件。(3)在代码中所指位置加入所需要的配置选项和用户行为处理函数。在该系统中,为插件添加了三个事件的回调函数,分别是:select(选中时间段、即新建日程)、eventClick(日程被点击,即删除日程)以及eventDrop(事件被拖拽,即修改日程)。4.4.2常用功能设计日程计划管理模块在功能上与前面几个模块类似,分为新建、修改和删除,其中新建和修改共用一个函数接口,这点和通讯录管理模块的函数接口设计一样。(1)WEB端新建、编辑日程计划由于新建和编辑日程计划共用一个函数接口,因此一并介绍。编辑日程计划的系统活动图如4.4所示:49 图4.4编辑日程计划活动图相关代码如下:DrivatevoidSaveCalendarO//保存日程计划处理函数{RepToPhone=''SaveCalendar:”;////发送至手机端指令字符串初始化RepToPhone+=Context.Request.Params[“content'’】;//读取参数//将生成的指令字符串发往手机客户端PhoneInfos.Instance().SendToClient(Context.Session[”userName”],RepToPhone);)50 第四章手机管家在线系统的详细设计privatevoidSaveCalendarRes0//手机端保存日程计划反馈处理函数{String[]Params=Context。Request.Params[”content”]。ToString(),Split(newString[】{”$ff},StringSplitOptions.RemoveEmp够Entries);//读取各个参数//根据反馈信息建立Calendar对象Calendar=newCalendar(Params[0],Context.Session[”userName”],Context.Session[”phone”】,Params[1],Params[2],Params[3],Params[4]);UsersContr01.SaveCalendar(Calendar);//将Calendar对象持久化Weblnfos.Instance().SendToWeb(Context.Session[”userName”】,Content,"SaveCalendarRes”);//将反馈结果发送至WEB端}当用户发出保存日程计划指令时,WEB端便通过HTTP请求将日程计划信息(包括主题、地点和起止时间)发送至服务器端。该指令格式见日程计划管理模块WEB端常用函数接口中的编辑目程命令的请求方式,这里的refid应设为O,系统读取请求后,转而由SaveCalendar函数处理,同前面功能的实现设计类似,服务器首先根据指令内容组织新的指令字符串并发送至手机端,手机端接收指令并处理完成之后,返回给服务器处理结果,服务器根据处理结果完成数据的持久化并返回给WEB端处理结果的通知。当用户点击并拖拽一个日程计划并释放时,这个行为便被eventDrop事件的回调函数所捕获,后台脚本会根据鼠标释放时的位置计算与原位置的偏移时间,接着函数会将原主题、地点以及新的起止时间通过异步HTTP请求将修改后的新的日程计划信息提交至服务器端并完成持久化,只是请求方式中的refid为非0值,即为该日程计划在手机端的唯一序列号。(2)WEB端删除日程计划当用户点击界面中的具体日程信息,eventClick事件的回调函数便会触发,提示用户是否删除该日程,若用户点击确定,则WEB端便会发送HTTP请求至服务器端,指令格式见日程计划管理模块WEB端常用函数接口中的删除日程命令的请求方式,服务器接收到请求,则先发送指令到手机端,手机端处理成功后便返回服务器,服务器根据返回信息完成持久化并通知WEB端。4.5工具箱模块设计工具箱模块包含了用户除在手机端所使用的常见通信功能之外的各种实用工具,如短信、通话记录、联系人以及日程计划的导出、远程控制等。该模块WEB端和手机端的函数接口如下表所示。5l 手机管家在线系统的设计与实现表4.9工具箱模块WEB端函数接口命令请求方式成功返回失败返回导出联系人Operate.ashx?action=SaveCoVCard格式文件Errorntactl、oVCard导出通话记Operate.ashx?action=SaveCaCSV格式文件Error习《llRecordToCsv导出短信Opeate.ashx?action=SaveMsCSV格式文件ErrorgToCsv导出日程计Operate.ashx?action=SaveCaCSV格式文件Error划lendarToCSV远程锁机Operate.ashx?action=Remote0KErrorLock远程静音Opearte.ashx?action=Remote0KErrorSlience远程转发Operate.ashx?action=RemoteOKErrorTransfer&phone=@phone远程定位Opearate.ashx?action=RemotRemoteLocate:@Longitude;ErroreLocate@Latitude52 第四章手机管家在线系统的详细设计表4.10工具箱模块手机端函数接口命令请求方式成功返回失败返回远程锁机Operate.ashx?action=RemoteOKErrorLockeRes远程静音Opearte.ashx?action=Remote0KErrorSlienceRes远程转发Operate.ashx?action--RemoteOKErrorTransferRes远程定位Opearate.ashx?action=Remot0KErroreLocateRes&point=-@Longitude;@Latitude4.5.1常用功能设计(1)短信、通话记录、联系人以及日程计划的导出对于短信、通话记录以及日历CSV格式是逗号分隔值(CommaSeparateValues)的英文缩写,是一种常用的存储数据或不同程序间数据交互的纯文本格式,可在Excel中导入形成电子表格,也用于一些数据库软件中,CSV的数据列之间以逗号隔开,并且每一行数据都以回车符结束,这样结构化的数据可允许程序通过读取文件为数据转换为不同的数据格式。当用户发出短信、通话记录、联系人或日程计划的导入命令时,如通话记录导出功能,WEB端将会向服务器发出地址为Operate.ashx?action=SaveCalendarToCsv的HTTP请求,服务器在接收到请求后,会根据用户名在数据库中读取出相应的数据,并调用WriteToCsv函数将这些数据组织为CSV格式的文本(联系人的导出使用vcard格式),最后由服务器将文本作为响应返回给WEB端由用户完成下载。(2)远程控制借助该系统中WEB端与手机端实时的数据交互机制,可以结合智能手机的特点实现很多基于互联网的手机远程控制功能,下面以远程定位为作简要介绍。手机的定位一般有三种方法【15】,其一是GPS定位,即通过从四颗卫星得到的四对数据进行单点定位或查分定位,来计算出位置,目前这种定位方式精度最高,应用最广气1 手机管家在线系统的设计与实现泛,但需要硬件支持,手机需要自带GPS模块;其二是基站定位,手机通过天线找到距离它最近的四到五个蜂窝基站,之后根据基站所发送信号的强度进行三角定位,这种定位方式虽然不准确,但不需要附加模块;其三则是WIFI定位,这种方法与基站定位较类似,它是通过探测附近Wi—n热点的信号强弱,并把这些信息连同其路由器的MAC地址发至Skyhook的服务器,服务器综合这些信息,查询每个热点在数据库中记录的坐标,并进行运算,就可以得知客户端的具体位置了。服务器端定位完成后便会将具体坐标(维度和经度)传回手机。借助智能手机的定位服务,系统可以在手机丢失等特殊情况下通过WEB端远程控制的方式使用手机端的定位功能,便可获知手机的具体位置了,远程定位活动图如下:鞋●陌b_-L国也查型兰}山I(+}i}菠掐令。雾辩,l:)龟.穗lF橇足他j丁(发送定位反馈)(怒剑定匠艇镄)一o●——一一壹山l根挺响煦显衣定f&信gI、L/毒图4.5手机远程定位活动图 第四章手机管家在线系统的详细设计1)当用户点击远程定位的立即使用功能按钮时,WEB端将会向服务器端发出HTTP请求,请求方式见表4.9中的远程定位命令的描述。2)服务器在接收到请求后则组织新的指令字符串传送给手机端,并将该请求加入WEB端请求列表,等待手机端返回。3)手机端在解析指令后,便会调用定位服务模块,获取具体位置后返回给WEB端,WEB端借助百度地图API便可将获得的经纬度在页面的地图中显示出来。相应代码如下:privatevoidRemoteLocate0//远程定位处理函数{RepToPhone=”RemoteLocate”;////发送至手机端指令字符串初始化//将生成的指令字符串发往手机客户端Phonelnfos.Instance().SendToClient(Context.Session[”userName”],RepToPhone);)privatevoidRemoteLocateRes0//手机端远程定位反馈处理函数{StringPoint=Context.Request.Params[”pomt”].ToStringO;//读取位置参数WebInfos.Instance().SendToWeb(Context.Session[”userName”】,Point,"RemoteLocateRes”)://将反馈结果发送至WEB端)结合智能手机的各种特性和本文所建立的数据交互机制,系统还可以实现很多独具特色的远程控制功能,如手机的远程锁机、远程转发、远程拍照、远程报警等等。4.6与手机端的对接手机管家在线系统需要手机端、WEB端以及服务器端三者的紧密配合,并且该系统的最终用户是智能手机的使用者,因此,这里结合一般用户的常规使用步骤简要介绍一下手机端的设计。 手机管家在线系统的设计与实现图4.6手机端系统流程图首先,使用者需要进行注册成为系统的用户,注册可以采用两种方式,即手机端注册和wEB端注册,界面如4.7、4.8图所示:用户名密码确认密码验翻粼图4.7WEB端的用户注册界面 第四章手机管家在线系统的详细设计图4.8手机客户端的用户注册界面用户填写用户名(邮箱地址),密码以及验证码并提交后,客户端首先会对两次输入密码做一致性验证,通过后则会继续提交到服务器端,服务器端继续检查验证码的正确性以及用户名的唯一性,全部通过后,则用户注册成功。注册成功后,用户可以使用登录名和密码通过手机端或WEB端登录界面进入系统,由于用户刚刚注册尚无手机信息,所以在将用户账号与手机号绑定之前仍无法进行信息同步或手机控制,这时用户需要进一步做手机绑定设置,将账号与手机号相关联,该操作采用WEB端与手机端相结合的方式,首先需要用户在WEB端绑定界面填写需绑定手机的手机号,点击发送短信按钮,服务器端便会通过短信猫向该手机发送随机验证码,用户填写正确,则手机绑定操作成功。绑定操作界面如图4.9所示。手机绑宝谩嚣手机号验证码图4.9手机绑定操作界面57 手机管家在线系统的设计与实现手机绑定操作完成后,系统便会提示用户是否立即进行第一次同步操作,或选择手动同步,若选择立即同步,手机端则会通过调用前面的接口将短信息、通话记录、联系人以及日程计划分批上传至服务器端完成同步。手机端在登录后会首先检查服务器端是否有离线操作(通过查找数据表PhoneNewOperation),若存在离线操作,则会将离线指令逐条发送至手机端完成操作。之前工作处理完之后,系统便会进入监听状态,手机端需要同时监听WEB端的远程操作指令和手机的新事件(如接收短信、发送短信、接打电话以及日程计划等),前者的监听需要通过H1]曙请求获取WEB端的实时操作,后者的监听则是通过添加钩子函数来捕获各个事件。监听状态是无终止的,它会一直维持该状态直到手机端客户端退出或者网络连接中断。I每篱全:黧慧>乇j短信一手动同步、:甜。尚未同步过’薛-通话记录一手动同步\\§尚未同步过7t日历I员一-手动同步、’守尚未同步过图4.10手机端运行界面经测试,手机客户端的流量消耗得到较好的控制,若以15分钟作为心跳包间隔时间,则一天会产生60"24/15=96个心跳包,正常使用假设用户平时每天通话、短信数在20个左右,WEB端操作在20个左右,根据Fiddler调试工具查看,平均单个请求和响应流量在1K以内,那么一天的流量消耗则为150K左右,一个月以30天记,则平均的流量消耗为5M以内,就目前运营商各种套餐的数据流量配额来看,该系统对手机流量的控制达到了预期的要求,用户较容易接受。 第四章手机管家在线系统的详细设计4.7本章小结本章针对手机管家在线系统的详细设计展开阐述,首先深入介绍了系统的通信机制设计,包括浏览器客户端与服务器的数据交互机制设计、手机客户端与服务器的数据交互机制设计以及服务器对监听请求列表的维护。之后详细阐述了系统四大模块,即通讯管理模块、通讯录管理模块、日程计划管理模块以及工具箱模块的设计思路。最后介绍了服务器端、WEB端与手机端的对接工作。 手机管家在线系统的设计与实现第五章手机管家在线系统的实现手机管家在线系统分为通讯信息管理模块、通讯录管理模块、日程计划管理模块以及工具箱模块四部分组成,下面依次展示各个模块功能使用示例:5.1通讯信息管理模块实现5.1.1短信管理短信管理模块的界面如图5.1所示。面通讯目联系人奄日历国工具留设置囹全部短信垒收件箱垒已发短信心全部通话墓已接来电啻已拨电话量来接来电乏;表情蜀阿垃{l板:二蛙量名:称谓|二:更多q推荐管搴络好点啦隹厶全部短信(4)口本页全选删降日妒150607799872013,/3/148:00:00内容:我到了,你呢7口台150607799872013/3/148:02:00内容:马上到图5,1短信管理模块界面H}消厂1磊r]I.................................._J在短信管理模块界面上,左边栏是短信标签页(左下用于通话记录管理页),用于在全部短信、收件箱以及已发短信中切换,以方便查看不同类型的短信息;上方是短信编辑区,用于编辑短信并发送;编辑区下方则是信息展示区,用于显示短信内容、对短信的回复、转发以及删除操作。60 第五章手机管家在线系统的实现(1)WEB端短信发送在短信编辑区,用户可以通过点选表情,网址以及各个模板按钮添加相应的内容,其中,点选相关模板按钮可以加入模板字段,如当用户点选姓和称谓模板时,短信编辑区便生成相应的模板字段,见图5.2:【姓】【称请】,新年好,学生在这里祝您新年快乐,身体健康,家庭幸福l,.——,一,.—————.—一一——⋯一⋯一一.——。⋯.——..一——一——一—。一.—.一.一..⋯.——.,一一。——一一一!@表情图网址模板:日姓曰名口称谓口更多兮推荐管家给好友:图5.2生成模板字段收件人的添加可以通过收件人点选框或直接输入收件人号码来录入,在点选时,若该联系人有多于一个电话,则需要在联系人的二级菜单中选择具体的手机号码,若在一级菜单点选,则添加该联系人所有手机作为收件人。选择完成点选确定按钮则被选择的收件人自动进入收件人列表中。固从联系人中添加联系人日口王涛菏组:未分组曰团张磊与组:来劳缠团13403417618囝15034171863日团赵杰茹组:来分组日口张商讨组:韦分组曰日李霞菏坦:未分组o◇收件人(3)目*磊<13403417618>目*磊<15034171863>赵杰<13178153817>图5.3收件人点选框咿J蜍删除删睬当用户点击发送按钮时,短信发送指令便传输至手机端,从而控制手机端完成短信 手机管家在线系统的设计与实现发送操作,并将发送结果回馈至服务器端,WEB端可以看到短信发送的结果如图5.4所示。囤妒张南<1趵23157韶l>澍2013/2/918:20:31内容:张老师,新年好,学生在这里祝您新年陕乐,身体健康,家庭幸福囵妒李露<1粥5521876>国2013/22918:20:39内容:李老师,新年好,学生在这里祝您新年l陕乐,身体健康,家庭幸福图5.4使用模板字段群发短信效果(2)WEB端短信管理。当用户将鼠标移向短信内容时,短信内容下方将会出现短信管理工具条,用户可以通过工具条完成转发、回复、删除等操作。曰自15060779987}。2013/31148:02:00内容:马上到团回要团辖发面83}j降5.1.2通话记录管理图5.5短信管理工具条通话记录管理界面如图5.6所示:Ej全部短信盆收件箱鱼已发垣信心全部通话髟已接来电啻已拨电话尽未接来电全部通话(4)口本页全选删蜍联系人口815060779987口啻15060779987口量13038066147口霉zF涛<15234178162>口本页全选‘删除2开擂霹is--]2013/3/1214:55:192013,'3/1215:01:272013/3/147:53:3720i3j471720:12:46图5.6通话记录管理界面,.毒)寻q高级r[]]面目厦鄱:长二?转管理界面边栏下方为通话记录标签页,用于在查看全部通话、已接来电、已拨电话和未接来电之间切换。通话记录的信息分三栏显示,分别是联系人、通话开始时间以及62 第五章手机管家在线系统的实现通话时长。用户可以在该页面查看、删除通话记录,添加未知联系人等等。5.2通讯录管理模块实现通讯录管理模块的操作界面见图5.7:衄通讯诤全部联系人墨同事(1)墨未分组(5)妇联系人奄日历国工具全部联系人(6)口本页全选厂—磊歪蘸泵天]厂—丽磉蘸夏押L·-------------------—------_一1.....................。.....J王涛李静张磊强南图5.7通讯录模块管理界面雷设置Ⅱ口面目赵杰李雷界面的边栏是联系人分组标签,用于显示不同分组的联系人信息,主界面则是联系人基本信息列表,用户可在界面上完成联系人以及通讯信息的新建、编辑、以及删除操作。(1)新建编辑联系人用户点击通讯录管理主界面的新建联系人按钮或指定联系人进入联系人编辑界面,联系人编辑界面如图5.8所示: 手机管家在线系统的设计与实现电话+电子由}件+地ji【+备注名《暖甄E廷蝴甚罨即时通讯+圃皿⋯匦丑网址+亘圈+匦圈匦圈f’——。———‘‘。一。“~⋯.1堡壹II必I图5.8联系人编辑界面用户需在编辑界面上填写联系人的各项基本信息,包括姓名、联系人分组(默认为未分组)、职位、单位名称、备注、电话(家庭/单位传真、家庭/单位电话、个人手机以及其他电话)、地址(家庭/单位地址以及其他地址)、网站(家庭/单位网站地址以及其他网站地址)、电子邮箱(个人/家庭/单位电子邮箱以及其他邮箱)以及即时通讯(QQ、SKYPE、MSN、YAHOO以及其他),各个通讯方式均可通过点击“+”或“.”添加、删除。(2)删除联系人当用户点击联系人列表中具体的联系人时,该联系人便会处于选定状态,当用户在有一到多个联系人处于选定状态的情况下点击删除联系人按钮时,选定联系人便会被系统删除。全部联系人(6)口本页全迭厂涵磊1几丽赢1lr_T一陋正】王涛李静张磊张南日本页全选[二垂垂区[]画薹匦图5.9删除联系人赵杰李霞 第五章手机管家在线系统的实现5.3日程计划管理模块实现日程计划管理模块的操作界面如图5.10所示:目疆17删⋯⋯⋯一242013年3月星期二星期三2021塑-i!!}盒⋯⋯一2728图5.10日程管理模块操作界面四胃视图日视图星期五星期六121516墙虬——⋯~.2223(1)新建、编辑日程计划当用户在月视图、周视图或日视图的日历表中拖拽鼠标选择任意一段时间时,系统便会弹出添加新日程提示,当用户填写日程主题和地点信息并点击确定后,系统便会在管理界面为用户添加该日程计划。 手机管家在线系统的设计与实现2013年3月星期三3/20图5.11添加新日程(2)删除日程当用户点击具体的某个日程计划时,系统便会弹出删除该日程计划提示框,若用户点击确定按钮,系统便会为用户删除该日程计划。相关界面如图5.12所示:2013年3月口JJEl星期日星期一星期二星期三星期四星期五1星期六2212223.sa珏叁⋯一282930图5.12删除日程66埘‰l墨‰咖'蔓枷'呈狮枷椰 5.4工具箱模块实现该模块的界面如图5.13所示。雹适讯工具J日.j国联系人奄日历国工具联系人导出·将通讯录信息导出为Vcard格式道话记录导出·将通话记录导出为csV文本格式文件短信导出·将短信导出为cs收本格式文件速程谈机·选程将手机谈定,阻止他人使用魂惹位置(1)远程定位图5.13工具箱模块功能界面留设置立刻使用>’立到使用,’立刻使用>’立劐使用>二立妄0使用>’当用户点击与远程定位功能的立即使用按钮时,系统便会为用户显示百度地图并在地图上显示“我的手机”位置信息。67誊降心●m—t 手机管家在线系统的设计与实现9}丽丽广净睛◆oI黔|‘一蒜黟。_:j:岁一{慰舯岫园∥剐岛一≥篙霞爨勰》。潺苗霞硪两{@2013Baiclu图5.14手机远程定位(2)联系人、短信、通话记录导出当用户点击联系人、短信或是通话记录导出的立即使用按钮,存对话框,提示用户下载上传至服务器端的相关信息。曼下黼系统便会弹出文件保×目标网址:IhttP://IocaIhost=8080/contact以Port.ashxI复剑保存懿C:\UsersUdministrator\Desktop\v递筮。刘韬:l圆墨匿圆.vcf文件大,J、:504bytes,C盘爨余空同:27.30GBE传蛩医旃打开5.5本章小结图5.15联系人下载保存取消本章主要介绍了手机管家在线系统中各个功能模块的具体功能实现,其中包括通讯信息管理、通讯录管理、日程计划管理以及工具箱。各个功能模块都能在特定的场合完68 第五章手机管家在线系统的实现成特定的任务,达到既预期的效果。69 手机管家在线系统的设计与实现6.1项目总结第六章总结和未来展望个人手机发展至今,已经从一个具有单一通话功能的通讯设备变为生活、工作、娱乐等诸多方面不可或缺的终端设备,但手机本身所暴露出的一些缺点,如待机时间短、操作不便、屏幕过小等等缺点将始终制约着智能手机的用户体验,然而,个人电脑在这些方面则正好是它的优势,因此,建立手机管家在线系统的目的正在于此,将短信息的接收和发送、通话记录的管理以及联系人和日程计划的管理等等功能转移到电脑上来完成,将会是对智能手机控制方式的一种很好的补充,不仅如此,服务器端庞大的硬盘容量以及强大的计算能力无疑是智能手机不可比拟的,所以将信息同步备份至服务器端不仅降低了个人信息丢失的可能性,同时也在某些方面减轻了手机端的负担。另外,建立基于WEB端的手机远程控制机制可以让用户在手机不在身边或已丢失的情况下实现对手机的控制,如在WEB端查看绑定手机的短信、来电,在丢失时导出并删除手机上的联系人等关键信息,查看手机所在位置、远程实现手机锁定等等功能。以上是该系统的创新所在,该论文中所涉及的主要研究内容总结如下:(1)介绍了建立该手机管家在线系统的开发背景、研究的主要内容、以及该系统的可能遇到的技术难点。(2)分析了该项目的需求点,对系统做了模块划分,即通讯信息管理功能、通讯录管理功能、日程计划管理功能以及工具箱四大模块。并结合项目需求完成了系统的开发环境、数据库的选型。(3)详细介绍了该系统中所使用的各种技术,其中包括远程控制技术,TCP和HTTP协议,Javascript、AJAX、JQuery技术以及前面两个技术基础之上所实现的基于HTTP长连接的服务器推技术,另外还有VCard规范、FullCalendar插件、百度地图API等等。(4)着手设计并实现了基于WEB端的手机管家在线系统的实时数据交互机制,其中包括WEB端与服务器端的数据交互以及手机端与服务器端的数据交互。(5)设计了系统四大模块的各个功能所需要的接口规范,并且设计实现了系统服务器端各个模块所有功能的后台处理过程,同时为各个模块设计了友好的WEB端用户界面。 第六章总结和未来展望6.2未来展望手机管家在线系统经过测试,在系统的稳定性、手机端流量控制等方面基本达到预期的效果,但由于系统开发时间的限制,仍有一些不足之处需要改进,同时也有一些关于这个项目继续深入下去的新的思路,首先在改进方面:(1)数据传输的安全性较差。WEB端和服务器之间以及手机端和服务器之间的数据传输均使用HTTP协议的明文传输,对数据没有进行加密处理,因此,在传输过程中如果被抓包工具截获,则很容易将数据还原出来。SSL(安全套接层协议)协议位于TCP/IP协议与各种应用层协议之间,通过数据加密技术使得数据在因特网上得到安全的传输,确保传输过程中不会被窃取和监听,它被广泛的用于客户端与服务器之间的身份认证和数据加密【31】。SSL协议分为两层[7]:其一是SSL记录协议,它建立在TCP传输协议之上,为高层协议提供数据加密、压缩以及封装等基本功能的支持;其二是SSL握手协议,它建立在SSL记录协议之上,用于开始传输之前通讯双方的身份认证、密钥交换以及协商加密算法等等。HTTPS(HypertextTransferProtocoloverSecureSocketLayer)是以安全传输为目标的HTTP通道,即在HTTP协议下加入SSL层作为HTTP应用层的子层。有了SSL层的保护,通过HTTPS协议传输的敏感数据便可在网络中得到安全的传输【301。为服务器采用HTTPS协议,在WEB端、手机端以及服务器端之间使用SSL层传输用户隐私数据,从而可以解决数据传输过程中的安全性较差的问题。(2)服务器请求过多从而导致负荷过大采用基于HTTP长连接的服务器推技术,服务器将会对每一个在线客户端的HTTP请求保持一个连接,大量客户端的登录使得维护这些连接成为一个不小的开销,因为当客户端发送HTTP请求到服务器后,服务器会分配一个单独的线程对该请求进行处理,处理之后再将应答返回给客户端,在这个过程中,这个处理线程一般是不会释放的,并且承载HTTP请求的TCPSocket连接是阻塞式的,这样会带来大量无意义的进程上下文切换(因为针对该应用特性,一个连接在一天里往往不会产生太多请求,切换基本都以阻塞告终),所以当有数以万计的客户端通过HTTP长连接到服务器上时,其并发连接数将会使服务器不堪重负。Java在jdkl.4中的NIO技术(即NewIO的简称)提供了一种多路非阻塞式(non—blocking)的高伸缩性网络IO【36|,它把从接收请求到返回相应71 手机管家在线系统的设计与实现的整个处理过程切换成了一系列小的任务,通过事件驱动机制驱动任务的完成,并由一个专门的线程负责管理所有的IO通道上的事件并分发任务到各个线程去处理,线程通过wait、notify等方式通讯,从而避免了大量无意义的进程上下文切换,当连接处于空闲时,为这个连接所分配的线程资源则会被返回到线程池,以供新的连接所使用,当之前空闲的连接需要做数据传输时,则系统会从线程池中分配一个可能会是新的线程资源继续处理该请求,这种异步IO的技术在连接空闲几率较高、并发连接数目较多的应用中对于降低服务器的负载作用非常显著。其基本原理如图6.1所示。◆≤~三一)一一———————————~、,,/简’@@黼@@@&@@@@@@图6.1非阻塞IO基本原理开源应用程序服务器软件Jetty的Continuation技术正是建立在NIO技术基础之上的,它是一种可以使HrrP请求被暂时挂起,并且当挂起超时或非同步事件发生时,被挂起的HrrP请求可以被重新恢复的机制(即对HTTP协议执行NIO)。所以,使用Jetty的Continuation技术可以很好的解决这一问题,使服务器可以在拥有大量长连接的情况下高效运行。另外,关于该项目的一些新的想法,可以使系统在某些方面得到扩展:(1)该系统所建立的数据交互机制不仅可以用于WEB端与手机端的信息传递,而且由于服务器端在机制中起到信息中转的作用,所以该机制也可以用于手机端与另一个手机端的数据交互(即手机端先将信息发送至服务器端,经过处理后由服务器发送至另一个手机端),若再配合手机客户端的事件捕获机制,从而可以使得手机管家注册用户之间绕过运营商,实现短信的免费发送,并且不需用户有任何的学习成本,即用户手机端操作与常规短信发送一致。发送方点击发送短信按钮,该事件被手机管家客户端拦截并转入处理函数,函数会向服务器发出询问请求,若接收方不为手机管家用户或属于手机管家用户但手机端目前没有处于在线状态,则转为常规途径(通过运营商)将短信发送出去;若接收方既是手机管家用户同时手机端也在线,则服务器端会根据短信携带信72一一一 第六章总结和未来展望息建立一条指令并发送至接收方手机端,接收方手机客户端根据指令中所包含的发送方、短信内容以及发送时间生成一条虚拟短信。这个过程对于用户来说是透明的。(2)服务器端既然可以推送数据到手机端,那么可以借此机制为注册用户提供信息订阅服务,用户可以在功能页面选择自己所喜欢的定制消息,如股票信息、焦点新闻、笑话等等,服务器端推送这些定制消息到用户的手机端,可以通过多种方式呈现,比如以接收短信息的方式生成(虚拟短信)、以手机管家客户端某一功能页的推送消息方式生成(类似新浪微博)等等,而用户只需承担一定流量费用即可。伴随着互联网技术和智能手机的快速发展,诸如手机管家在线系统这样的手机与WEB应用相结合的应用将会有着很好的发展前景,也希望本课题的系统成果能够应用到更加广泛的领域。73 致谢首先向我的导师吴顺祥教授致以最诚挚的谢意。本文是在导师吴顺祥教授的精心指导下完成的,从论文的选题、方向选定、设计方案,到完成论文的整个过程中,无处不渗透着他的心血和汗水。吴老师严谨的治学态度、渊博的学识、精益求精的工作作风,深深地感染着我、激励着我。吴老师不仅为我创造了一个优越的科研和学习环境,同时也在思想和生活上也给予了极大的关心、帮助和鼓励。在我编写、修改毕业论文的过程中,得到了他悉心的指导,一次次耐心认真地审阅、修改、指出不足、提出意见。感谢我的父母,正是他们的理解和支持才使我顺利地渡过了人生中这段美好的时光,他们对我二十几年的养育之恩和所倾注的心血让我终生难以回报,唯有永无止境的奋斗,期待将来辉煌的事业让父母为之骄傲。感谢学校、信息学院和自动化系各位让人尊敬的领导、老师和工作人员,感谢诸位前辈师长们的谆谆教诲和辛勤工作,感谢项目组的所有老师和同学的不懈努力,感谢实验室各位同窗好友的陪伴,他们在学习和生活中给我无私的帮助,伴我度过了许多美好的时光。最后,衷一心感谢在百忙之中评阅论文和出席答辩的各位专家。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭