專刊內文

當前位置:首頁>專刊分享>內文

瀏覽次數 : 5172



 

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使用者介面,因此可大幅降低開發與日後維護的成本。