Visual Studio行動開發方案
訊光科技 / 蘇文瑞
前言
隨著行動裝置的普及,企業對於員工使用個人行動裝置進行任務執行、溝通協作等需求逐漸提昇,使用個人行動裝置的優點是不受時間、空間的限制,因此接受Bring your own device (BYOD)方式的企業也越來越多。
但是相較於開發傳統winform、webform,開發行動裝置應用(apps)的難度高出甚多,因為除了要了解iOS、android的開發工具、程式語言、介面特性外,不同廠牌的硬體裝置與API也有其特殊之處,企業需投入相當大的開發成本。
因此,我們將介紹Visual Studio所整合的行動裝置開發方案,採用適合的工具,才能讓自行開發apps的成本能夠大幅降低。
三種主要開發方案
在最新的Visual Studio 2015中,主要有三種方案可以進行Mobile行動開發,提供給大家參考:
一、Web app 採用技術:jQuery Mobile。
使用標準的HTML5來處理,讓不同的裝置讀取到此頁面的時候,能夠有個統一的介面,兼容主要的移動和桌面平台 - IOS、Android,黑莓,WebOS,Symbian、Windows Mobile,Firefox Mobile 和所有現代的桌面瀏覽器。因為使用jQuery核心,所以會和jQuery語法相同,也因此學習曲線不會很長,而且也不需要針對不同手機去設計不同的頁面。WAI - ARIA的輔助功能也包括在內,以確保頁面的螢幕閱讀器(例如:VoiceOver in iOS)和其他輔助技術。
二、原生嵌入網頁呈現 採用技術:Cordova Adobe收購PhoneGap開發團隊,由PhoneGap中所抽離出來的核心。用HTML、CSS、JavaScript打造行動裝置App的開發平台,以JavaScript語言透過擴充Plugin API,支援可存取原生功能 (例如地理位置、相機、檔案、電池等) 的外掛程式,跨平台支援 Windows Phone、Windows Store、iOS、Android、Blackberry等。
三、跨平台原生app開發 採用技術:Xamarin
Xamarin 是由早期的Mono專案演變而來,原本是在Linux上執行C#程式的一個開放原始碼專案。可以直接透過微軟的 Visual Studio、C# 和.NET Framework 中的程式庫,針對所有平台進行建置,並共用 75% 以上的程式碼。跨平台支援 Windows、Android 及 iOS等。
開發方案的優劣
下圖為Visual Studio 2015中三種Mobile行動開發方案的差異與優缺點,提供給大家參考。
技術方案 |
開發難度與學習門檻 |
維護成本 |
功能 |
硬體整合能力 |
上架難度 |
授權費用 |
跨平台能力 |
應用與說明 |
jQuery Mobile |
簡單 |
較低 |
較少 |
很低 |
無法上架 |
無 |
較高 |
簡單的表單查詢顯示、輸入,反應速度稍慢及無法存取硬體資源 |
Xamarin |
一般 |
稍高 |
中等 |
良好 |
稍高 |
低廉 |
中等 |
大部分的基本應用,對畫面的UI反應沒有太大要求者,因以HTML5/JS及CSS3方式來開發降低了不少開發門檻。 |
Cordova |
有點 難度 |
稍高 |
較為完整 |
良好 |
稍高 |
稍高 |
中等 |
高度功能要求,行業別或特殊的應用,可使用C#來開發原生應用,執行效能優越。 |
一、Web app
優點: 1. 高度跨平台能力:由於Mobile Web本身就是一個網站,因此只要裝置有瀏覽器都可執行。 2. 學習門檻較低:HTML及JQuery Mobile的學習門檻相較於原生開發來說是較為容易的。 3. 適合手指觸控操作:不使用mouse over、mouse out等滑鼠事件。 4. 版面自動適應裝置螢幕尺寸。 5. 價格低。 6. 普及率高。
缺點: 1. 瀏覽器的相容性問題:由於Mobile Web是基於HTML5的技術,各個行動裝置的瀏覽器支援HTML5的程度不盡相同,因此在開發時需要考慮瀏覽性的相容性問題。 2. 與硬體整合能力低:例如操作裝置上的攝影機或外接設備等。 3. 安全性低:以往在WEB上所受到的攻擊及威脅,在Mobile Web上一樣存在。 4. 無法上架:由於Mobile Web仍然是一個網站,因此無法上架到App Store或Google Play。
二、原生嵌入網頁呈現
優點: 1、一套代碼,即可開發Android和iOS的app:這個優勢是native無法比擬的,只需要在專案目錄的www資料夾裡放入一套開發代碼,就可以在不同平台build出app應用,開發效率直接提高一倍,而且特別是後期的debug階段,這種優勢更加凸顯出來,邏輯代碼只有一份,如果UI符合標準,那只需要debug一次即可將Android和iOS平台的bug都搞定。 2、開發偵錯方便:免去每次打包,開啟虛擬機器的等待時間,直接在chrome瀏覽器裡即可偵錯大部分功能,這也是native無法做到的,包括查看本地的sqlite資料庫等。 3、開發門檻低:HTML5+CSS開發門檻要比native學習object-c和java兩套語言要低的多。
缺點: 1. 性能問題:在安卓機上會有些許卡卡的感覺。另外,因為瀏覽器的沙箱模式,較難以接觸到底層。 2. 對於UI特別要求的應用,使用HTML5來設計就可能無法使用到iOS或andoroid較為獨特的UI組件。
三、跨平台原生app開發
優點: 1. 快速建立原生(Native)的行動裝置應用程式:透過C#搭配.NET Framework 的Base Class Library(BCL)的便利性,讓開發人員能以高的生產力開發行動裝置應用程式。 2. 程式碼共用:採用C#撰寫,可以在不同平台間共用商業邏輯以及資料存取等程式,對於版本維護及一致性也有很大的助益。 3. 與Visual Studio整合:提供了Visual Studio 2012/2015的plug-in,讓原本就熟悉Visual Studio的開發者不用再熟悉其他的開發工具,在建立專案時,可以直接建立iOS及Android的專案範本。也可以將iOS及Android的程式碼納入到ALM,使用Team Foundation Server進行版本及建置的管理。 4. 確保第一時間更新:幾乎都與Apple在同一天發表對應的Framework版本,Android方面,將Android的原始碼從原本的Java改由C#重新撰寫,效能也得到提升。 5. 原生的應用程式效能:針對iOS及Android平台開發編譯器,將C#程式碼直接編譯成ARM CPU的機器碼。因此效能將與原生模式開發的應用程式相比,沒有不同。而在Android 系統上,由於Xamarin不使用Android的Dalvik虛擬機器,改為採用CLR,經測試其效能更甚於原生的應用程式。
缺點: 1. 價格成本較高,該工具以年度授權作為收費方式。 2. 樣式需要自己定義,比不上網頁前端現在的各種框架方便。 3. 開發方式與學習入門的門檻稍高,多數人需要多一點的摸索時間才能上手。
成本的考量與相容度
一、成本與價格 以企業付出的購買成本而言,jQuery Moblie費用為0,引用js library後,以html與javascript即可開發使用。
xamarin費用則最高,每個開發人員在每個作業系統的年費為8萬,因此要開發主流的iOS與Android,一個開發人員的年費就要16萬了。另外在vs上做iOS的開發,必須要有iOS的sdk,但iOS的sdk在Windows上沒有,因此必須使用一台mac電腦(OS X Lion)作為Build Host。
Cordova也是免費開放原始碼方案,費用為0。不過為了開發效率,通常會搭配Visual Studio作為開發工具。另外iOS部屬,也需要一台Mac電腦(OS X Lion)作為Build Host。
二、上架更版成本 JQuery Mobile是純html5網頁,因此更版時只需要更新IIS上的網頁程式即可。
Xamarin與Cordova,除了iOS app需要透過MAC電腦編譯外,是否要上架到Google Play、AppStore都是要考量的重點。
Android:過去 Facebook 曾繞過 Google Play 的更新機制自行更新應用程式,於是為了更好地防範惡意軟體,Google Play的更新政策進行了調整:於 Google Play 下載的應用程式,除了透過 Google Play 的更新機制以外,不得以任何方式自行修改、取代或更新 APK 二進位檔程式碼。如果在應用中內置自動更新器,則有可能被 Google 封殺。所以如何提示使用者有最新版本,就需要開發者規劃此機制。
iOS app一般需要透過AppStore上架,除了要受到相當嚴格的軟體審查外,更版的審查期往往在7~10天甚至更久。若不想要受到Apple審查app,企業也可以選擇自架企業版app store的方式進行軟體上架、更版。如果在一般官方軟體商店上架,還要考慮到使用者的正面、負面評論,是否有專人去回覆處理等等。
三、軟體相容性問題 若是開發xamarin或是Cordova行動應用,則不同軟硬體機種,可能會遇到各種千奇百怪的問題。iOS系統較為封閉,沒有第三方廠商生產硬體,也沒有第三方作業系統。但是即使如此,光是iPhone 5 ,就可能安裝iOS6、iOS7、iOS8、iOS9,何況是碎片化極為嚴重的Android。
技術 |
語言 |
作業系統 |
jQuery Mobile |
JavaScript C# VB |
因為只是純網頁功能,因此較為單純,近兩年的行動裝置大多支援 |
Xamarin |
C# |
● Windows 8 ● Windows 7 ● Windows Phone 8 ● MacOS 10.7 ● Android 4.4 ● Android 4.3 ● Android 4.2 ● Android 4.1 ● Android 4.0 ● iOS 7 ● iOS 6.0 |
Cordova |
JavaScript TypeScript |
● Windows 8 (相容於 8.1) ● Windows 7 ● Windows Server 2012 R2 ● Windows Phone 8 (相容於 8.1) ● Windows Phone emulators - Hyper-V ● Android 4.0 later (4.4 provides the best developer experience) ● iOS 7 ● iOS 6 ● iOS Simulator - Mac computer ● Visual Studio 2013 Update 3 (Professional, Ultimate, or Premium)
|
訊光採用Cordova技術的原因
三種開發方案各自有其優點,根據80/20法則,企業內大部分的查詢、圖表、表單輸入等行動應用,或許可以直接用jQuery Mobile方式解決,而需要使用到裝置資源,例如推播、動態圖示、啟動相機、微型資料庫等原生應用時,則透過Cordova技術就可以達成。而Cordova亦可將jQueryMobile的頁面內嵌,兩技術之間相輔相成。
會將Xamarin列為最優先採用技術的原因,昂貴的費用是第一個考量外,開發時間成本也是另一個考量,畢竟現在企業IT人員要涉獵的技術越來越多,使用容易上手的框架成功率會較高。但是如果要開發的是深度應用的軟體,對介面有很高的要求,那就還是需要使用Xamarin或是原生開發工具開發了。
結論
開發apps,要考慮到的範圍很廣泛。除了要針對不同應用需求採用不同開發技術外,還要評估企業的開發人力、技術能力,與考量是否有上線的時程壓力。目前還沒有一種完美的方案,可以解決所有的開發需求。
透過EEP Mobile行動開發解決方案,最大的優點,就是除了提供不同的技術可供選擇外,原本EEPNetServer上已經完成的資料存取層與商業邏輯層,可以不經改寫直接讓apps使用。開發人員只需要重新開發apps使用者介面,因此可大幅降低開發與日後維護的成本。
|