張帥桐
摘要:隨著智能手機的普及,移動APP在公司的推廣營銷以及吸納用戶方面有著重要作用,故而開發(fā)APP的需求十分巨大。該文將基于LAMP架構(gòu),探討構(gòu)建一個簡易iOS APP的開發(fā)方法。
關(guān)鍵詞:iOS;APP;開發(fā);LAMP
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)05-0075-02
1 LAMP架構(gòu)
1.1 Linux操作系統(tǒng)
優(yōu)秀的開源操作系統(tǒng),向全世界開放,由全世界優(yōu)秀的程序員維護(hù)開發(fā),完全免費,可自由使用,安全可靠且性能出色,Linux是理想的服務(wù)器端操作系統(tǒng)。
1.2 Apache HTTP服務(wù)器軟件
世界上最流行的網(wǎng)頁服務(wù)器之一,開源且對Linux完美支持,跨平臺且穩(wěn)定、通過插件拓展可支持PHP語言編寫的動態(tài)網(wǎng)頁 。
1.3 MySQL數(shù)據(jù)庫管理系統(tǒng)
非常適合小規(guī)模數(shù)據(jù)的處理,較低數(shù)量級增刪改查的效率很高,開源免費適合個人和小規(guī)模團隊進(jìn)行開發(fā)。
1.4 PHP 網(wǎng)頁服務(wù)器腳本語言
開源易學(xué), 開發(fā)框架和說明文檔充足,可編寫動態(tài)網(wǎng)頁,可非常方便地連接服務(wù)器端的MySQL數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行操作。服務(wù)器上的PHP程序可便捷地獲取數(shù)據(jù)庫數(shù)據(jù)并生成JSON格式的數(shù)據(jù)返回給前端,適合作為前端向后端獲取數(shù)據(jù)的API。
2 配置開發(fā)所需要的軟件
2.1 Xcode
優(yōu)秀的集成開發(fā)工具,可使用C、C++、Objective-C及Swift語言進(jìn)行軟件開發(fā),是編寫iOS APP的不二選擇。Xcode可從App Store免費方便地下載。
2.2 MAMP
是Mac上非常經(jīng)典、一鍵集成配置本地服務(wù)器的優(yōu)秀軟件。MAMP個人版是免費的,便于程序員現(xiàn)在本地配置網(wǎng)頁服務(wù)器和MySQL數(shù)據(jù)庫環(huán)境。程序員可先在本地進(jìn)行測試代碼無誤后再通過SSH和SFTP等服務(wù)向遠(yuǎn)程服務(wù)器配置。
2.3 Navicat for MySQL
是一款為MySQL量身打造的前端控制軟件,可通過可視化的點按操作以及SQL語句操作本地服務(wù)器或遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫。
2.4 Visual Studio Code
微軟良心制作的編輯開發(fā)工具,支持多種語言的高亮顯示和智能提示,可方便的開發(fā)PHP程序。
3 主要開發(fā)流程
3.1 配置本地Apache、MySQL、PHP環(huán)境
運行MAMP個人版,Start Servers即可一鍵配置所需環(huán)境。
3.2 數(shù)據(jù)庫設(shè)計與開發(fā)
此階段需要根據(jù)開發(fā)項目進(jìn)行需求分析,然后從需求中抽象出所需實體以及關(guān)系構(gòu)建E-R圖,然后根據(jù)E-R圖設(shè)計數(shù)據(jù)庫中實際存儲的一系列表格和關(guān)系,最后根據(jù)數(shù)據(jù)庫三大范式驗證設(shè)計結(jié)果有無錯誤和冗余,修改無誤后使用Navicat for MySQL在本地服務(wù)器中的MySQL數(shù)據(jù)庫創(chuàng)建相關(guān)表格和關(guān)系。
3.3 iOS APP前端開發(fā)
此階段需要在Xcode中創(chuàng)建工程實現(xiàn)基礎(chǔ)UI和主要業(yè)務(wù)邏輯。在Xcode工程中,使用storyboard拖拽UI控件和ViewController,再使用AutoLayout給控件添加約束達(dá)到頁面控件的合理布局或?qū)崿F(xiàn)某些動畫。之后,根據(jù)storyboard中的每個ViewController,創(chuàng)建一系列繼承于UIViewController使用Swift語言的Cocoa Touch Class,然后將創(chuàng)建的Class與storyboard中的ViewController的Custom Class的Class相對應(yīng)。之后點擊Xcode中的Show the Assistant editor同時顯示storyboard中的ViewController與對應(yīng)的Cocoa Touch Class,通過按住control鍵鼠標(biāo)左鍵單擊拖拽storyboard中的UI控件到Class文件中可創(chuàng)建UI控件變量或觸發(fā)事件函數(shù)。最后,使用Swift語言結(jié)合iOS APP的生命周期實現(xiàn)每個頁面的業(yè)務(wù)邏輯。
3.4 編寫數(shù)據(jù)庫接口
APP前端需要從后端的數(shù)據(jù)庫獲取數(shù)據(jù),但因為安全等原因,Swift語言只能直接操作SQLite這種小型本地數(shù)據(jù)庫,無法直接連接服務(wù)器上的數(shù)據(jù)庫,操作遠(yuǎn)程數(shù)據(jù)。故而需要利用PHP語言編寫數(shù)據(jù)庫接口,后端把MySQL數(shù)據(jù)庫中的數(shù)據(jù)以JSON格式返回給APP。
下面給出一個簡易實例。
3.5 配置遠(yuǎn)程服務(wù)器及軟件測試
通過Mac上的Terminal(終端),新建遠(yuǎn)程連接,如安全Shell(ssh)服務(wù)即可把PHP程序配置到遠(yuǎn)程Linux服務(wù)器端,用Navicat for MySQL將本地服務(wù)器中的SQL文件導(dǎo)出,再導(dǎo)入到服務(wù)器上的MySQL數(shù)據(jù)庫,改寫APP和PHP接口中的網(wǎng)絡(luò)請求地址,測試運行。
4 不足與改進(jìn)
本文所述是一種基于LAMP的簡易iOS APP開發(fā)方法,從實現(xiàn)手段不夠安全,數(shù)據(jù)沒有安全加密,對于正式項目應(yīng)該使用用戶token和安全加密算法。對于小型項目也可不必租用遠(yuǎn)程服務(wù)器,通過學(xué)習(xí)LeanCloud、Bomb后端云等云服務(wù)公司提供的開發(fā)文檔可利用云服務(wù)器進(jìn)行替代遠(yuǎn)程服務(wù)器,簡化了一系列的后端操作。不過,使用云服務(wù)器也會造成對于云服務(wù)平臺的依賴,一旦平臺發(fā)生問題,會帶來數(shù)據(jù)泄露和大規(guī)模數(shù)據(jù)遷移等問題。
5 結(jié)束語
隨著科技的發(fā)展開發(fā)APP肯定會越來越簡單,不過其核心思路萬變不離其宗,每種方式都不是絕對的優(yōu)秀,一種方式的優(yōu)點有時候卻在另一種方式中被視為缺點。所以開發(fā)者應(yīng)在開發(fā)中根據(jù)實際情況,具體情況具體分析,權(quán)衡利弊得出最好的開發(fā)方案。
參考文獻(xiàn):
[1] 袁明磊,張迪.基于后端服務(wù)的英語閱讀APP設(shè)計與實現(xiàn)[J].寶雞文理學(xué)院學(xué)報:自然科學(xué)版,2016(1):63-67.
[2] 宋陽.基于 LAMP 技術(shù)平臺搭建的 Web 安全服務(wù)器架構(gòu)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2016(10):36-37.
[3] 陳云芳,潘利華,陳瑞,等.基于PHP語言訪問MySQL數(shù)據(jù)庫的實現(xiàn)[J].中國新通信,2015(19):103.
[4] 廖國棟,肖玉容.基于LAMP的云管理平臺研究及探討[J].江蘇科技信息,2014(14):22-24.