李偉



App Inventor是目前廣受中小學生喜愛的圖形化移動應用開發軟件,通過這款軟件,用戶可以快速地開發簡易的移動應用程序。App Inventor的數據存儲采用了多種方式,包括文本文件、TinyDB、TinyWebDB等,其中TinyWebDB屬于網絡微數據庫,用戶使用此數據庫,可實現遠程數據存儲,從而實現開發網絡版應用程序。
由于網絡微數據庫需要服務器的支持,一般的用戶只能借助他人提供的遠程服務器才可以使用這一功能,很不自由。在教學中,還常常因為遠程服務器的連接限制而導致測試失敗。因而,本文介紹一種基于Python的Flask框架開發App Inventor網絡微數據庫服務器的方法,讓任何計算機都能“搖身”變為網絡微數據庫服務器,以滿足個人開發和日常教學的需求。
● 開發網絡微數據庫服務器的技術分析
1.網絡微數據庫存儲機制
App Inventor開發的應用程序,是通過TinyWebDB可以完成讀取數據與存儲數據的功能,其相關的數據結構比較簡潔,每條記錄只包含了tag(鍵)和value(值)兩項。
在利用網絡微數據庫進行“讀取數據”時,其實質是發送一條網頁form表單請求,類似于“/get? tag=tagvalue”這樣的一條請求語句,傳送一個tag值,服務器捕獲這個請求后,查詢數據庫中是否存在這個tagvalue值,假若存在,則將此值返回給APP。
而當利用網絡微數據庫進行“保存數據”時,其實質同樣是發送一條網頁form表單請求。類似于“/get? stored=storedvalue”這樣的一條請求語句,傳送一個stored值,此stored值實際上是一個json格式的數組字符串,即["STORED", "tag","value"],以此告知服務器程序,需要保存的數據為:tag=“tag”,value=“value”。服務器捕獲這個get請求后,將此數據作為一條記錄存儲進數據庫。
2.網絡微數據庫服務器開發技術
由網絡微數據庫存儲機制可知,服務器程序應提供兩項服務,即數據讀取與數據存儲功能,其實質是一個典型的Web應用服務平臺。因此,只需搭建一個能提供數據讀取與數據存儲功能的Web應用服務平臺,并且在格式上進行規范,即可替代原有的網絡微數據庫服務器。
3.開發環境選擇
程序主體采用目前廣受用戶喜愛的Python語言的Flask網頁框架進行編寫,數據庫可以采用SQLite3模塊進行構建。由于數據傳輸中需要進行json格式的轉換,因此還需要導入json模塊。
4.主要功能模塊設計
網絡微數據庫服務器由數據庫、服務器端等模塊構成。
其中,數據庫用于數據的存儲,服務器端部分屬于反饋系統的主邏輯,承載著響應APP請求,讀取相應數據返回APP、捕獲APP發送的數據并存儲到數據庫。
整體架構如上頁圖1所示。
● 網絡微數據庫服務器的開發
1.數據庫設計
數據庫主要用于APP數據的存儲。對于最基本的服務,可以設計一個數據表,并在數據表中設計兩個字段,分別為webtag與webvalue。本系統采用Python語言的SQLite3模塊構建與操作數據庫,其數據庫結構設計如上頁表所示。建立數據庫的核心代碼如圖2所示。
2.網絡微數據庫服務器程序編寫
服務器端程序采用Flask網頁框架編寫,主要包括以下兩個主函數。
getvalue()函數:用于接收APP端讀取數據請求,并返回json格式的目標數據。函數設計如圖3所示。
storeavalue()函數:用于接收APP端存儲數據請求,并將接收到的數據存儲于數據庫中。函數設計如圖4所示。
● 網絡微數據庫服務器的部署與應用
1.啟動服務器主程序
網絡微數據庫服務器編寫完成之后,即可在服務器計算機中以命令行的方式運行主程序:python tinywebdb.py。假設服務器地址為“192.168.31.132:8080”。
2.編寫APP,并設置網絡微數據庫服務器地址
設計示例APP的界面如下頁圖5所示,網絡微數據庫服務器地址設置如圖6所示。
本示例APP只實現兩個功能,即將文本框中輸入的tag值與value值存入網絡微數據庫中;向服務器發送讀取數據請求,并將相應tag值的返回值加以顯示。其邏輯設計如圖7所示。
3.調試
在APP編寫完畢后,使用AI伴侶進行測試,結果如圖8所示。