APP開發模式比較

qianliyan0130發表於2014-09-19

注:本文轉載於http://www.ynyes.com/app/model/

APP開發模式比較

昆明天度APP開發模式通常分為兩種,這兩種模式均各自有自己的優勢,到底是採用Native App開發還是採用Web App開發一直是業界爭論的焦點,但是隨著HTML5的發展及雲服務普及,採用HTML5進行Web App開發正在成為一種趨勢,使用者可以根據應用特點和需求進行選擇,亦可選擇兩者混合模式:

本文提到的是APP客戶端應用開發模式的區別,涉及到手機網站與APP應用的區別,請參考:手機WAP網站、觸屏版手機網站、APP應用程式之間的區別

Native App開發

Native App開發即我們所稱的傳統APP開發模式(原生APP開發模式),該開發針對IOS、Android等不同的手機作業系統要採用不同的語言和框架進行開發,該模式通常是由“雲伺服器資料+APP應用客戶端”兩部份構成,APP應用所有的UI元素、資料內容、邏輯框架均安裝在手機終端上。

Web App開發

Web App開發即是一種框架型APP開發模式(HTML5  APP 框架開發模式),該開發具有跨平臺的優勢,該模式通常由“HTML5雲網站+APP應用客戶端”兩部份構成,APP應用客戶端只需安裝應用的框架部份,而應用的資料則是每次開啟APP的時候,去雲端取資料呈現給手機使用者。

原生APP開發及Web APP開發模式的區別

Web APP需開發“html5雲網站”和“APP客戶端”,昆明天度網路公司總結這型別APP應用呈現以下特點:

(1)每次開啟APP,都要通過APP框架向雲網站取UI及資料;

(2)手機使用者無法上網則無法訪問APP應用中的資料。

(3)框架型的APP無法呼叫手機終端的硬體裝置(語音、攝像頭、簡訊、GPS、藍芽、重力感應等)

(4)框架型APP的訪問速度受手機終端上網的限制,每次使用均會消耗一定的手機上網流量;

(5)框架型APP應用的安裝包小巧,只包含框架檔案,而大量的UI元素、資料內容剛存放在雲端;

(6)APP使用者每次都可以訪問到實時的最新的雲端資料;

(7)APP使用者無須頻繁更新APP應用,與雲端實現的是實時資料互動;

適用企業:電子商務、金融、新聞資訊、企業集團需經常更新內容的APP應用。

Native App(原生型APP)需要開發“雲伺服器資料中心”和“APP客戶端”,昆明天度網路公司總結這型別的APP應用呈現以下特點:

(1)每次獲取最新的APP功能,需要升級APP應用;

(2)原生型APP應用的安裝包相對較大,包含UI元素、資料內容、邏輯框架;

(3)手機使用者無法上網也可訪問APP應用中以前下載的資料。

(4)原生型的APP可以呼叫手機終端的硬體裝置(語音、攝像頭、簡訊、GPS、藍芽、重力感應等)

(5)APP應用更新新功能,涉及到每次要向各個應用商店進行提交稽核。

適用企業:遊戲、電子雜誌、管理應用、物聯網等無需經常更新程式框架的APP應用。

到底該如何選擇Web App和Native App開發模式

移動Web無所不在,移動Web是目前唯一的支援各種裝置訪問的平臺,與桌面Web一樣,移動Web支援各種標準的協議。移動Web也是唯一一個可供開發者釋出移動應用的平臺,它將各種移動互動與桌面任務有效地連線了起來;而開發Native App可以充分利用裝置的特性,而這一點往往是Web瀏覽器做不到的,所以對一個產品本身而言,Native App是最佳的選擇。下面幾節將討論一下Native App的一些主要功能。

什麼時候應該選擇Native App

1.為應用收費

沒有任何地方規定開發者不能對一個移動Web App收取使用費,但是由於某些原因,人們常常認為不能或是不應該對一個Web App收取費用。由於歷史原因,導致移動裝置上付費服務遭遇兩大阻力:

2.付款方式

在移動裝置上輸入信用卡號相當麻煩,而且在許多老式裝置上也沒有安全保障。一種典型的方式是,如果你需要對你的應用收費,你可以與運營商達成協議,讓運營商代為為你的服務收費。這也意味著,你需要和多個運營商達成合作。這通常是首選的方法,因為許多手機使用者可能根本就沒有信用卡,比如青少年。

另一種方法是將使用者的信用卡資訊儲存在一個安全的網站上。使用者可以通過登入到該網站購買應用服務。這個過程不算特別理想,因為這意味著使用者不能直接通過他們的移動裝置購買服務了。

3.強制分成

移動運營商是會提成的。App無論是通過運營商還是通過移動裝置釋出,他們都為應用提供了一套收費機制。這些運營商和移動裝置將會提取部分收益,然後將剩餘的部分交給應用開發商,這也意味著,開發人員必須遵守他們的市場規則。適應運營商的市場規則通常是非常困難的,需要投入大量的人力資源。相比而言,移動裝置的市場規則則簡單許多,但是也存在不少的困難。

妨礙運營商和移動裝置開發商利益的應用以及服務都將受到阻擾。過去,那些不靠運營商和移動裝置開發商運作的網站如果收入過於顯眼的話,都逃脫不了被關閉的命運,但是最近,這樣的事情鮮少發生了。

如果你想為你的Native App收費,那麼你就必須接受這個現實——你必須遵守別人的市場規則,還得放棄部分收益。

4.開發遊戲

如果你是想開發一個移動遊戲(移動遊戲是移動市場上最大的一塊),那麼你需要開發一個Native App。遊戲對資源的佔用很大,並且需要使用許多裝置API或平臺API。雖然,現在有幾款完全使用Web技術開發的遊戲佔有了一定的市場份額,但是和Native App市場的佔有情況相比,還是微不足道的。遊戲使用者對應用的視覺和操作效果要求很高。移動Web雖然提供了一些模擬體驗,但還遠遠不能滿足使用者的需求。

在開發移動遊戲時,你需要慎重考慮你的應用需要支援哪些平臺。幸運的是,現在有許多工具能夠幫助你將你的遊戲推向多個平臺,但是完成這些工作,還是需要花費大量的人力和物力。

5.使用定位功能

下一個功能就是定位功能,可以通過GPS或者是訊號檢測確定使用者當前的位置資訊。以前只能通過Native App的APIs檢視使用者的位置資訊,但現在大多數主流移動瀏覽器上都嵌入了W3C Geolocation API。像iPhone或Android這樣安裝了WebKit的裝置,或是配置了Opera或Mozilla瀏覽器的裝置,都可以獲取使用者的位置資訊。

我相信定位功能會為Web技術帶來許多全新的應用。如果能夠合理利用Web瀏覽器,Web開發商就能使用使用者的位置資訊和其他內容開發出更加有趣的應用。雖然這在技術上沒有太大的困難,但卻受到隱私保護條例的限制。我們將Web瀏覽器當做是使用者進入World Wide Web的入口。加入定位功能,意味著在網站中引入了一些敏感資訊,這有可能導致嚴重的後果。但是位置感知應用中顯示的位置資訊必須經過使用者的授權,使用者當然有權禁止應用釋出自己的位置資訊。

6.使用攝像頭

攝像頭可以為你的應用提供豐富的可能性。以往移動MMS(Multimedia Messaging Service)被用於處理移動照片。換言之,你拍了一張照片後,需要使用MMS將它傳送給一個伺服器,伺服器對照片做出相應的處理,並將處理完成的結果通知給你。這個過程是非常耗時的,而且相當複雜,也沒有可靠性保障。

通過訪問攝像頭,Native App開發者能夠簡化拍照的過程。使用者可以直接在客戶端對照片做一些簡單的處理,只有在有需要的時候才將照片上傳給伺服器,而且是通過可靠的HTTP傳輸。W3C正在開發一個訪問攝像頭的API,但現在還沒有將這部分工作正式整合到瀏覽器中。

在許多型別的移動Apps中,攝像頭是非常有用的,比如快拍應用、短片拍攝應用等等,攝像頭可以用來捕捉許多重要的瞬間。不久的將來,我們可以看到——只要通過攝像頭拍攝某個標識,應用程式就能自動完成對標識上的語言轉換工作——這個技術在日本已經開始流行起來了。

7.使用感應器

現在越來越來越多的移動裝置上都新增了感應器功能,該裝置可以感知裝置的物理速度以及重力,並將感知的資料結果傳送給裝置。這個裝置常被用來感應設定是否被翻轉,應用根據接受到的資訊自動調節畫面的方向。

感應器可以用來幫助使用者提升與裝置互動時的真實感;大多數移動裝置都是手持的,應用能夠根據裝置的方向調整內容畫面,比如翻轉螢幕,或是檢測物理移動,並能據此猜測使用者所處的環境。舉一個簡單的例子:比如使用者正在走路,那麼感應器能夠檢測到一個輕緩的移動或是速度,這時可以為使用者提供一個大字型的使用者介面,從而使得使用者更容易看清螢幕上的內容。

然而,開發者也不能過分依賴感應器,因為感應器無法區分究竟哪些互動是有意的,而哪些是沒有意義的。每個移動互動都需要通過“傳輸測試”。設計你的互動時必須考慮使用者在一個擁擠的汽車或是火車上的場景。考慮一下如果使用者正身處擁擠的地鐵或是正在駕車時,你的應用能否正確處理使用者搖晃移動裝置的動作。通常,大多數開發者都沒有考慮這些因素。確保為每個任務設計一個備用方案以處理特殊場景中的移動互動。

8.訪問檔案系統

如果你的應用需要將資料儲存在本地,那麼你需要開發一個Native App。比如你要儲存使用者的地址簿、電話或E-mail資訊,或是儲存從其他裝置上獲取的資料。

訪問檔案系統常常會涉及到安全和使用者隱私保護的問題。惡意應用程式可能會修改或是刪除你的移動裝置上的資料。一個攜帶病毒的應用程式可以利用移動裝置上的關係網將病毒擴散到許多其他的手機上,在採用移動應用認證機制以前,這種事情是常常發生的。

另一方面,移動裝置正變得越來越私人化,移動裝置上儲存了大量使用者的個人資訊,以及使用者的朋友資訊和商業資訊。針對這些私人資訊開發應用是一個不錯的想法。但是這也存在一定的風險,使用儲存在移動裝置上的資料可以為使用者提供更加有針對性的服務。

開發者必須謹記,只有在獲得使用者的授權後才能訪問使用者的私人資料。我們看到許多應用在沒有得到使用者授權的情況下使用了大量的使用者私人資料,而被誤認為是垃圾資訊或是釣魚應用,即使這些應用原本是在提供一些非常有用的服務。人們對你的應用的誤解將會影響到你的服務的推廣,如果運營商收到過多關於你的應用的投訴,那麼你的服務可能將被終止,甚至會牽連其他的應用。

訪問檔案系統時至關重要的一點就是在沒有獲得使用者授權的情況下,不要訪問任何使用者的私人資料。而這一點,往往被大多數應用忽略了。W3C正在為移動開發商開發相關的標準API,但目前該工作尚未完成。

9.離線使用者

最後一個需要開發Native App的理由就是,使用者有可能是離線的或者無法接入行動網路。這在城市可能很少發生,即使是在農村,網路的覆蓋也已經逐步普及了。但是短暫的網路連線中斷還是時常發生的,你的應用程式應該考慮如何處理這種情景。

想想使用者通常在什麼時候,在哪裡會使用你的App。如果是一個移動遊戲,那麼使用者很可能在飛機上使用這個App。跟蹤地圖應用常在偏遠且網路覆蓋不佳的地方使用。移動旅遊嚮導常在一個國外的網路中訪問,往往需要支付漫遊和國際網路費用。這時,應用程式最好能夠為使用者提供離線服務,保證使用者在不接入網路的情況下,仍然能享受同等的服務。

現在支援HTML5的瀏覽器也能實現離線訪問功能,但對使用者來說可能不太明顯。隨著越來越多的瀏覽器都開始支援離線訪問,應用需要明確地告訴使用者網路連線中斷時,他們仍然可以訪問移動Web Apps。

Native Apps常常假設網路連線是可靠的。App通常只考慮了網路狀況良好的情景,想當然地認為網路是封閉的,並且網速足夠快。移動裝置從網路良好的環境突然進入一個網路糟糕的環境並不少見。Native Apps應該在網路狀況最差的情況下測試。比如使用者啟動任務時可能還是全訊號覆蓋,而在任務結束時可能已經完全沒有網路訊號了。

使用者在安裝Native Apps時,根本不會考慮是線上訪問還是離線訪問——他們期望的是不管在任何狀況下,Native Apps都能正常工作。而這也是開發者的職責。

什麼時候應該選擇Web App

只要你的應用程式不滿足之前提到的Native App條件之一,那麼你就沒有必要開發一個Native App,而應該選擇開發一個Web App。正如文章之前提到的,我是一個Native App的擁護者,我認為Native App有許多優秀的特質,並且具有很大的市場潛力,但是Web Apps是唯一一個經久不衰的移動內容、服務、應用開發平臺。

Native App並不能明顯地為使用者提供更好的服務;它反而會增加專案的成本,減少了應用釋出的渠道,增加了App升級的複雜度,削弱了開發者對應用的控制和利潤,並且可能會給裝置帶來麻煩。Native App可以為開發者帶來短期的效益,但這是有一定風險的,甚至可能會影響到移動市場的可持久發展。

移動Web App的優勢在前文中已經提到過了。如果上一節提到的幾點功能是促成你選擇Native App的唯一原因,那麼如果能夠在移動瀏覽器上遮蔽這些障礙,你是否還會堅持選擇Native App呢?Palm的webOS已經著手解決了上述的部分問題。他們基於WebKit構建了一個全移動作業系統,將手機變成了一個Web瀏覽器。所謂的“Native Apps”實際上就是一個Web Apps。

PhoneGap也是一個類似的專案,這個開源專案用於幫助開發者在iPhone、Android以及BlackBerry裝置上開發Native Apps,並且能夠模擬裝置上的功能(如定位功能和檔案系統)供Web Apps呼叫。這些程式碼可以在各個裝置的應用商店中釋出並且出售,但是他們使用的通用程式碼和設計是可以共享的。由於開發的是一個Web App,開發者可以為低端的移動瀏覽器開發一個簡化版的應用。只用開發一次,就可以部署在多個平臺上了,

對於那些有著豐富的移動開發經驗的程式設計師來說,一提到“要開發一個功能豐富的應用”時,可能首先想到的就是Native App。雖然在很多裝置上,這一想法仍然適用,但是現在移動Web Apps上也提供了足夠豐富的功能介面供開發者呼叫。這使得Web App不僅可以像Native App一樣被設計得功能豐富介面絢麗,而且還能在各個平臺上遷移,甚至不用修改一行程式碼。

現在在移動裝置開發中,移動Web Apps的創新進入了前所未有的高潮時期。但更重要的是,這是有史以來第一次,移動裝置開發商決定共同制定一個移動Web開發的標準,就像是桌面Web上的標準一樣。不僅如此,那些支援移動Web App創新功能的裝置或是支援第三方瀏覽器的移動裝置都受到消費者的歡迎。

所以我們為什麼不開發一個Web App呢?

相關文章