標籤:介面 應用 php
本文章是個人在自我開發了一些APP介面後,以及閱讀了一些資料後的體會。
一、功能模組設計
從需求分析中抽離出相應的功能,這部分直接關係到我們的程式員需要實現這個應用的什麼功能。例如:註冊&登陸。
二、應用架構設計
- 對於整個應用來說,我們的架構是C/S模式。用戶端使用Android&IOS,服務端使用一種服務端開發語言來提供相應介面。然後用戶端通過HTTP協議來擷取或者發送相應的請求。
- 確定用戶端與服務端使用何種形式的協議進行交付。通常情況下會使用json。
- 然後確定服務端採用何種架構。例如:底層使用mysql、中介層使用者提供各種服務、最上層封裝介面,提供用戶端使用。以及提供管理後台(並不是所有的行動裝置 App都需要管理後台)
三、通訊協定的定義原則
1、通用性,前期設計儘可能把情況考慮全面一點,否則當開發一段時間後,再來修改協議,將會非常麻煩。或者為了將就,會導致協議中的資料解析麻煩、冗餘不斷增加;
2、簡潔性,移動端與服務端是通過網路來傳輸的,協議越簡潔,交付速度就越快。體驗就越好;
3、統一編碼,為了相容性問題。一般目前用戶端與服務端統一採用UTF-8編碼方式。
個人採用的協議格式:
{ "code":"正確或者錯誤的代碼號", "message":"對應代碼號的提示資訊", "data":"返回的資料內容"}
在返回的資料區data可能會有三種情況:單個對象資料、返回多個對象同一種資料、返回單個對象及多個對個對象資料。
四、資料庫設計
這個是必不可少的,無需多言。這裡需要聲明的是,必要的增加一些冗餘欄位,會大大減少查詢時候的速度。所以在概要設計時,可以適當的考慮。
五、服務端程式架構設計(這裡使用php做說明)
- 底層使用何種php架構,何種模板解析引擎
- 整個應用的library層
- 最上層是app mvc層(即API介面)
六、用戶端程式架構設計
用戶端由於是在Andorid或者IOS核心類庫的基礎上建立起來的,相當只需要定義上層架構,底層已經由相應的移動系統定義好。
不管是Android還是IOS或者其它移動系統。個人認為在這個架構中應該包括以下幾個部分:
會使用到的工具類,如:圖片操作(上傳,瀏覽,刪除)。檔案操作等
Test相關類,主要是進行自測的一些測試代碼
UI相關的類,MVC中的View層
Model類,MVC中的Model層
Service類,與服務相關的所有類
Sqlite類,存放SQLite資料庫的操作類(並不是所有應用都需要)
七、提高效能
- 壓力測試:使用apache ab工具。將其加入到環境變數。開啟終端輸入ab命令操作。
參數說明:-n 總請求數 -c 並發請求數 -p POST請求檔案 -t POST要求標頭
例:ab –n 100 –c 10 http://api.com/index 通常使用10個並發完成100個請求來粗數量級估計介面效能。
- 語言角度的最佳化
a、減少include和require:這個問題可以使用安裝APC組件來完成
b、用局部變數代替全域變數。
c、盡量使用靜態函數或方法:靜態方法會提升執行速度
d、釋放哪些不用的變數或者資源:不過分依賴PHP的記憶體回收機制。程式中不用的變數或者資源及時釋放。可以使用unset或者直接設定為null。
e、用單引號代替雙引號。
f、盡量少使用@屏蔽錯誤。它會降低指令碼運行速度。
g、Regex在PHP中運行效率不高,盡量少使用。
h、對儲存的資料盡量壓縮。
i、升級到新版PHP版本。
- 結構層次的最佳化
使用緩衝中介軟體:Memcache和Redis, 主要是加快讀取速度,降低資料庫查詢壓力。
- 壓縮資料
php中主要使用gzip進行壓縮
- 其它最佳化手段
a、對伺服器進行相關配置。遷移到linux伺服器。
b、資料庫最佳化,如:儘可能使用確定性查詢語句,建立索引,主從資料結構(master/slave),叢集等。
c、增大伺服器頻寬,選擇良好的電訊廠商。
PHP開發API的一點體會