给App插上“云服务”的翅膀

2014-11-17 17:46谢作如
中国信息技术教育 2014年21期
关键词:云服务组件管理系统

谢作如

开设App Inventor课程一段时间后,学生的学习热情被点燃了,开发了各种各样的App。当然,很多新的问题和新的想法也提出来了,如我开发的App能不能实时获取网络上的天气预报等问题大都和Web应用有关。其实大部分手机App都具有将信息上传到Web,或者从Web中获取信息的功能。App Inventor中提供了Web组件,也能够实现上述的功能。App和Web的互动,其原理和现在很流行的“云计算”、“云服务”是一样的。

● 项目描述

设计一款App小游戏,用户能够将游戏得分上传到网络,并且和其他玩这款App的用户比较,统计出“击败**%的用户”的提示,增加游戏的互动性。

● 项目分析

要完成这个项目,我们首先需要一个专用的Web服务,这一Web服务的数据库能存储App提交的信息,并且能返回相关的统计信息。Web服务要提供API接口,App Inventor的连接组件中提供了Web组件,可以通过这一组件与Web服务的API接口进行互动,流程如图1所示。

实际上,连接Web服务的手机App远远不只是一个,而是N个,构成了云服务的模型。

目前网络上似乎还没有哪家服务商提供了类似的云服务,尤其是能够让App Inventor的Web控件简单访问的云服务。为了能让学生们开发的App具有云服务的功能,我使用动态语言Asp,开发了一个“手机App云用户管理系统”,上传到学校的服务器,供学生使用。

“手机App云用户管理系统”是一个多用户的系统,支持多个App应用同时使用,能够实现用户注册、用户登录、更新密码、更新得分和综合查询等功能。系统提供了一个简单的Api接口,通过这个接口与手机App互动。Api文件的具体使用说明的地址为:http://www.wzms.cn/tot/reg/index.asp。

1.接口参数

本接口支持POST和GET两种形式提交参数,参数分为appid、action、regname、regpass、newregpass、score等六个。接口文件地址和各种参数合并为一个完成的URL地址后,通过Web组件提交,即可获取返回的信息。具体的参数说明如下页表。

2.数据返回格式

前两个字符为ok或者no,后面则为其他具体的信息,如统计信息,分别用“;”分隔。

3.使用范例

因为这一系统提供给更多的学生使用,支持多个App同时使用,所以设计了appid参数来区分。下面以appid等于1为例进行说明。

①将用户xzr的分数更新为99。

需要的参数为:appid、action、regname、score。URL为:http://www.wzms.cn/tot/reg/ index.asp?appid=1®name=xzr&score=99&action=5。

返回信息为:True:ok,更新成功!名次:1;有效分数:4;最高:99;最低:30;平均:79.25。

注:用户如果不存在,就自动添加密码为“123456”的用户,同时返回上述的信息。

②统计Appid为1的应用程序注册用户情况。

需要的参数为:appid、action。URL为:http://www.wzms.cn/tot/reg/index.asp?appid=1&action=6。

返回信息为:True:ok,注册人数:4;有效分数:4;最高:99;最低:30;平均:79.25。

注:如果appid不存在,系统则输出:ok,注册人数:0;有效分数:0;最高:;最低:;平均:,如果需要详细的使用文档,请访问http://www.wzms.cn/tot/reg/index.htm。

● 编程实现

有了手机App云用户管理系统的支持,App Inventor端的编程主要是通过Web组件提交参数,然后使用文本组件的各种函数,在返回信息中找到需要的数据。

我找了一个打地鼠的学生作品,这个小游戏已经能够通过TinyDB组件来存储并且读取最高的游戏成绩。我在这一基础上增加了Web组件,使其支持通过Web存储用户的游戏得分,还能比较不同的游戏用户的得分情况,输出统计结果,如“击败90%的用户”之类。

1.程序界面

Web和TinyDB都是为非可视组件。Web组件位于“连接组件”区域,这一组件的作用为发送HTTP的GET、POST、PUT及DELETE请求(如图2)。

图2

2.生成随机用户名

为了更容易理解,我将程序中与生成、读取用户名无关的代码去除。程序在第一次时要生成一个随机用户,并存储在TinyDB中。变量(Tag)score存储的是游戏得分,regname存储的是用户名。如果从TingDB中读出的regname为0,则会生成一个以5位的数字组成的用户名(如图3)。

3.提交成绩到网络

游戏结束的时候,将成绩提交到网络。geturl是自定义的过程,在游戏结束的时候调用这一过程,需要提交的参数为regname和score(如下页图4)。

4.编写geturl过程

geturl过程的功能仅仅为给Web组件设置Url地址,然后调用Get方法(如下页图5)。Web组件收到返回的信息时,会触发GotText事件。

5.编写GotText事件

最核心的工作就是在GotText事件中处理返回的信息,代码如下页图7所示。根据前面的说明,GotText事件将收到类似如下的信息:ok,更新成功!名次:1;有效分数:4;最高:99;最低:30;平均:79.25。endprint

首先要用segment函数取出前两个字符,如果等于“ok”,则继续进行提取数据。segment函数类似VB中的Mid函数,能够从给定的文本中提取指定起点及指定长度的文本片段。需要注意的是,App Inventor中无论是列表还是文本,都是从1开始计数的,而不是0。

要统计这一得分能击败多少用户,需要在反馈信息中提取名次和有效分数(大于0的分数)这两个数据。其实处理起来也不麻烦,先用“;”分割字符串,再用“:”分割。取出后用公式计算:击败率=(有效分数-名次+1)/有效分数。

可是,用App Inventor写数学表达式却有点麻烦,构建出来的积木非常庞大,只好再用个变量temp,让代码看起来稍微短一些。

6.测试代码

游戏结束的时候,看到熟悉的提示跳出来,是不是非常激动?这可是插上了云服务的翅膀的App(如图7)!

● 拓展应用

本项目虽然仅仅完成了通过网络来比较游戏得分的功能,但我提供的“手机App云用户管理系统”还可以实现其他的功能,如用户注册功能。我们甚至还可以利用这一更新得分的功能,开发出更加有趣的互动功能,如用支持WiFi访问的机器人或者其他智能产品,定时去读取这一Api接口,根据返回的数据不同而执行不同的动作,这就是物联网智能产品的远程控制功能。

有了上面的范例,实时获取天气预报的操作就显得很简单了,只要你找到一个稳定的更新及时的天气预报网站,通过分隔字符串的形式,把需要的数据提取出来即可。App Inventor的Web组件功能非常强大,不要说提交分数,利用其支持POST,并且能够设置RequestHeaders的功能,我们甚至可以做出类似云笔记之类的应用来。

App Inventor的Web组件还支持Josn格式。使用JsonTextDecode方法,可以对给定的json格式的值进行解码,生成与App Inventor对应的值。这样一来,对Web组件返回信息的处理将更加简单。手机App云用户管理系统也将提供支持Josn的接口。

● 总结

本项目主要演示了App中云服务功能的开发。虽然简单,但给学生们提供的却是一条增强手机App功能的开发途径,能初步体会云计算的功能和优势。很多专家都曾经提出,云计算将带来手机领域下一场革命,手机仅仅是网络应用的“瘦客户端”,让服务器做复杂、繁重的计算、存储工作吧。

(本文提到的范例可以通过作者的新浪博客获取,地址为:http://blog.sina.com.cn/xiezuoru/)endprint

首先要用segment函数取出前两个字符,如果等于“ok”,则继续进行提取数据。segment函数类似VB中的Mid函数,能够从给定的文本中提取指定起点及指定长度的文本片段。需要注意的是,App Inventor中无论是列表还是文本,都是从1开始计数的,而不是0。

要统计这一得分能击败多少用户,需要在反馈信息中提取名次和有效分数(大于0的分数)这两个数据。其实处理起来也不麻烦,先用“;”分割字符串,再用“:”分割。取出后用公式计算:击败率=(有效分数-名次+1)/有效分数。

可是,用App Inventor写数学表达式却有点麻烦,构建出来的积木非常庞大,只好再用个变量temp,让代码看起来稍微短一些。

6.测试代码

游戏结束的时候,看到熟悉的提示跳出来,是不是非常激动?这可是插上了云服务的翅膀的App(如图7)!

● 拓展应用

本项目虽然仅仅完成了通过网络来比较游戏得分的功能,但我提供的“手机App云用户管理系统”还可以实现其他的功能,如用户注册功能。我们甚至还可以利用这一更新得分的功能,开发出更加有趣的互动功能,如用支持WiFi访问的机器人或者其他智能产品,定时去读取这一Api接口,根据返回的数据不同而执行不同的动作,这就是物联网智能产品的远程控制功能。

有了上面的范例,实时获取天气预报的操作就显得很简单了,只要你找到一个稳定的更新及时的天气预报网站,通过分隔字符串的形式,把需要的数据提取出来即可。App Inventor的Web组件功能非常强大,不要说提交分数,利用其支持POST,并且能够设置RequestHeaders的功能,我们甚至可以做出类似云笔记之类的应用来。

App Inventor的Web组件还支持Josn格式。使用JsonTextDecode方法,可以对给定的json格式的值进行解码,生成与App Inventor对应的值。这样一来,对Web组件返回信息的处理将更加简单。手机App云用户管理系统也将提供支持Josn的接口。

● 总结

本项目主要演示了App中云服务功能的开发。虽然简单,但给学生们提供的却是一条增强手机App功能的开发途径,能初步体会云计算的功能和优势。很多专家都曾经提出,云计算将带来手机领域下一场革命,手机仅仅是网络应用的“瘦客户端”,让服务器做复杂、繁重的计算、存储工作吧。

(本文提到的范例可以通过作者的新浪博客获取,地址为:http://blog.sina.com.cn/xiezuoru/)endprint

首先要用segment函数取出前两个字符,如果等于“ok”,则继续进行提取数据。segment函数类似VB中的Mid函数,能够从给定的文本中提取指定起点及指定长度的文本片段。需要注意的是,App Inventor中无论是列表还是文本,都是从1开始计数的,而不是0。

要统计这一得分能击败多少用户,需要在反馈信息中提取名次和有效分数(大于0的分数)这两个数据。其实处理起来也不麻烦,先用“;”分割字符串,再用“:”分割。取出后用公式计算:击败率=(有效分数-名次+1)/有效分数。

可是,用App Inventor写数学表达式却有点麻烦,构建出来的积木非常庞大,只好再用个变量temp,让代码看起来稍微短一些。

6.测试代码

游戏结束的时候,看到熟悉的提示跳出来,是不是非常激动?这可是插上了云服务的翅膀的App(如图7)!

● 拓展应用

本项目虽然仅仅完成了通过网络来比较游戏得分的功能,但我提供的“手机App云用户管理系统”还可以实现其他的功能,如用户注册功能。我们甚至还可以利用这一更新得分的功能,开发出更加有趣的互动功能,如用支持WiFi访问的机器人或者其他智能产品,定时去读取这一Api接口,根据返回的数据不同而执行不同的动作,这就是物联网智能产品的远程控制功能。

有了上面的范例,实时获取天气预报的操作就显得很简单了,只要你找到一个稳定的更新及时的天气预报网站,通过分隔字符串的形式,把需要的数据提取出来即可。App Inventor的Web组件功能非常强大,不要说提交分数,利用其支持POST,并且能够设置RequestHeaders的功能,我们甚至可以做出类似云笔记之类的应用来。

App Inventor的Web组件还支持Josn格式。使用JsonTextDecode方法,可以对给定的json格式的值进行解码,生成与App Inventor对应的值。这样一来,对Web组件返回信息的处理将更加简单。手机App云用户管理系统也将提供支持Josn的接口。

● 总结

本项目主要演示了App中云服务功能的开发。虽然简单,但给学生们提供的却是一条增强手机App功能的开发途径,能初步体会云计算的功能和优势。很多专家都曾经提出,云计算将带来手机领域下一场革命,手机仅仅是网络应用的“瘦客户端”,让服务器做复杂、繁重的计算、存储工作吧。

(本文提到的范例可以通过作者的新浪博客获取,地址为:http://blog.sina.com.cn/xiezuoru/)endprint

猜你喜欢
云服务组件管理系统
基于单片机MCU的IPMI健康管理系统设计与实现
创建Vue组件npm包实战分析
光伏组件热斑对发电性能的影响
基于物联网的IT运维可视化管理系统设计与实现
智能机械臂
基于分布式数据库Cedar的高效工单管理系统设计与实现
云服务环境中低碳型教育信息化模式研究
云服务环境下的高校协同创新研究
基于云服务的加密式门禁系统设计
嵌入式组件技术的研究及应用