近几年来“云计算”概念非常的火爆,“云计算”核心是将大量的网络资源统一起来,为用户提供高效、便捷的软件服务。“云计算”倡导者希望的是:用户使用软件服务就像使用电和水一样,可以便捷、随时随地、按需地使用服务。在“云计算”这个网络应用模式下,用户可以通过各种“端”访问“云”,“端”可以是任何能够上网的电子设备,“云”就是提供的服务,“云”可能是巨大的、连成一片的、无边境的,也可能是渺小的、孤立的,总之它无处不在,能够提供给用户所需要的各种服务。
典型云端应用城市天气信息服务
随着3G网络时代的到来,移动网络速度大大提升,从而使得云与端应用软件需求量越来越大。“云”无论如何飘必须要“落地”,即必须要有移动终端设备和相应的软件支持。
在Android平台中“云端”应用的例子很多,如Android 系统预装的Gmail(图15-2)、日历和Google Map等。
本章通过一个基于Android系统的天气信息查询案例,介绍云和端的应用技术。本章要实现的基本功能是软件启动后进入初始画面,初始画面显示中国主要城市名称列表,如图15-3所示。
当用户触摸其中一个城市则弹出一个对话框,在对话框中列出了该城市当天及未来4天的天气信息。
要实现这个Android天气信息查询案例,会涉及什么技术呢?
首先是UI部分,这个系统中采用的UI控件主要是ListView控件,这个控件前面的章节已经做过介绍了,不是本章关注的重点。除了UI以外,开发这个系统的核心问题还有3个:从哪里可以获得这些数据;采用什么技术获得;获得数据后如何解析。
从哪里可以获得这些数据,也就是信息数据的来源,这里的信息可以分为中国主要城市名称和某个城市当前的天气信息两部分。后者与其他的Android数据库应用系统略有不同,这里的某个城市当前天气信息是不可能从本地手机数据库中获得的。道理很简单,就是这些数据是实时动态变化的,是无法预知的,因此只能从“别人”那里获得,这里“别人”就是常说的“云计算”中的“云”。“云”能够按需求提供给我们所需要的数据。在案例中使用Google公司提供的天气信息服务。对于前者而言,由于这些数据是固定的,因此可以把数据硬编码到程序中或者放到手机端的数据库中,但本案例中数据的来源,是Google公司提供的世界城市信息服务。
采用什么技术获得数据呢?解决这个问题的关键是使用什么样的“云”(服务器端),由于上述的两个Google服务都采用HTTP协议,因此可以采用Java的一些支持HTTP协议的网络通信技术。除了可以使用HTTP协议外还有很多技术可以使用,例如:Socket和Web Service等,但是这些都要依赖于“云”开放什么形式的API。
获得数据后如何解析?这个问题也要依赖于使用的“云”,一般而言,“云”都会提供多种形式的数据以满足不同用户的需求。在本例中采用的两个Google服务,它们返回的数据格式有JSON和XML,可以针对这些格式采用不同的技术进行解析。云与端的应用技术主要是网络通信。