基于关系型数据库的App Inventor网络应用(2)
第二节 后端技术
1. 网络结构
如图2所示,你一定见到过这类图,它被称作网络拓扑图,描述了网络应用中的几个重要角色以及它们之间的关系。以图中的云(internet)为分界线,云的一端是种类及型号繁多的客户端设备,人类用户使用这些设备从网络上获取信息。云的另一端是看起来冷冰冰的服务器。
图2 网络应用赖以生存的环境
图中一共有三台服务器,分别是web服务、应用服务器以及数据库服务器,问题是,要提供一个网络服务,真的需要这么多服务器吗?问题还有另外一个角度,当访问服务的用户数量及业务处理量非常庞大时,这三台服务器够用吗?其实,这并不是一个精确的网络部署方案,而是一个表示结构和功能的示意图,其中的“服务器”指的不是物理上的硬件设备,而是安装在硬件设备上的服务器软件。正如我们在第一节中提到的,在LAMP架构中,L代表Linux,是安装在服务器上的操作系统;A代表阿帕奇,是一款可以提供web服务的软件;M代表MySQL,是一款数据库服务器软件,而P代表php,是用来编写并运行服务器端程序的软件。对于一个用户规模不大的网络服务来说,这些软件完全可以安装在一台设备上。相反,当网络服务的用户数量或业务处理量巨大时,这些服务器端的软件可以分布在不同的设备上,以均衡用户及各项服务。
本文所采用的网络服务,从功能及结构上与上图相同,该服务部署在阿里云的云主机上,Web和应用服务器软件采用的是Node-RED,数据库服务器采用的是SQLite,开发服务程序所使用的语言是Node.js,其开发环境同样为Node-RED,也就是说,Node-RED既是服务器软件,也是开发服务程序的开发工具。如图3所示,注意比较图2与图3的细微差异。
图3 “单词本”案例中使用的服务器端软件
在上图中,与MIT App Inventor遥相呼应的是Node-RED,这是一款由IBM开发的、基于流的可视化编程工具,运行在浏览器中,用于开发物联网应用,可以将硬件(如Arduino)、Web API及在线服务连接起来。本文将使用Node-RED开发服务器端程序。
2. Node-RED安装与部署
为了降低学习难度,我们将在本地计算机上安装Node-RED开发环境,在完成主要开发任务之后,再以附录的方式介绍其他安装部署方式。
2.1 下载安装Node.js
访问网址https://nodejs.org/en/download/,下载所需版本的node.js,注意区分不同操作系统以及32/64位的差异。本文采用的是Windows-32位版本。安装过程很简单,一路点击“next”即可,如图4所示。
图4 安装Node.js
2.2 安装Node-RED
Node.js安装成功后,以管理员身份运行node.js,如图5所示。
图5 以管理员身份运行Node.js
执行上述命令后,将打开windows命令行窗口,在窗口中输入下列指令并回车:
npm install -g --unsafe-perm node-red
安装将自动进行,如图6所示。
图6 安装Node-RED
2.3 启动Node-RED
Node-RED安装完成后,继续在命令行中输入node-red并回车,将启动node-RED服务。
2.4 进入开发环境
在浏览器地址栏中输入http://localhost:1880即可进入开发环境。如图7所示。
图7 在浏览器中打开Node-RED开发环境
早在今年(2017)五月,Roadlabs就写过两篇文章《从零开发TinyWebDB原型系统》(1)及(2),其中第2篇文章中初步地介绍了Node-RED使用方法。关于Node-RED的更多内容,请访问https://nodered.17coding.net/,该网站由Roadlabs移植并加以汉化,目前尚未完成全部汉化。为了保证本案例讲述的完整性,我会在下一节重复Roadlabs讲过的部分内容,有兴趣的读者可以根据上述链接先行阅读相关内容。