加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
Windows 程式開發-雲端與移動式手機整合(上)
文‧圖/何孟翰 2013/4/10 下午 05:21:48

在上一回中我們有說明 Windows Azure平台的mobile services服務,它雖然還是一個preview的功能,但是卻已經是一個完整的平台。而由於mobile這個市場對每一間公司來說愈來愈重要,Azure團隊也是不斷的充實並加強它裡面的功能。特別是針對除了Windows Phone8之外的其它平台,例如iOS/iPhone/iPad也能夠有如資料存取,帳號驗証授權的一些服務。而隨著這個服務愈來愈完善與強大,對於平台的支援性也更加完整。在這一回中我們將討論Windows Azure和Android的整合實務,並且說明這種雲端服務對移動式程式設計所帶來的影響。當然上一回中所說的帳號驗証和授權在Android上也是一併可以使用,但是在這一回讓我們從不同的面相來觀察這個平台,順便以Android的實作來作為範例。

Android與Windows Azure
Android的開發語言是JAVA,而既然像Android這樣的裝置要使用雲端的服務,也就是網路上其它伺服器的資料,如同上一回我們所說的,Windows Azure所提供存取的是最標準的http/https服務,所以Android在存取Windows Azure上,也是使用標準的httpclient這種函式庫。同時如同上一回所說明的,Windows Azure和客戶端的傳遞都是使用JSON格式,所以也必須準備json的函式庫,此處所使用的是google的實作gson的jar,再加上一些相關的函式庫,就組成了Windows Azure Mobile Service提供給Android的函式庫。

建立Android客戶端的專案

如同前一回所說明的,要進入Windows Azure for mobile service ,你可以使用manage.windowsazure.com登入,在下方選取 New的圖示之後,依著compute和 mobile service就可以新增一個Mobile服務,而在新增該服務之後,你可以點擊進入之後在Quick Start中看到各種平台的選取,此時請你選取Android服務如圖1。


▲ 圖1 選取 Android的平台



在此處不管是創建一個新的專案,還是使用一個現存的專案作開發,Windows Azure for mobile service的官方要求使用Android 4.2+之後的版本才能夠順利的運行。然而依照筆者測試的結果,當然你必須要使用Eclipse搭配ADT最新版,也就是21版之後的組態,但是其實Android只要是2.3.3之後的版本,就可以使用大部份Windows Azure for mobile service的環境。但是在使用推播時,按照Windows Azure for mobile service官方的推播服務實作,確實要在較新的SDK版本才能夠有正確的支援。事實上,如果你直接從developer.android.com上下載最新的 ADT加上Eclipse bundle,就可以直接操作Windows Azure for mobile service的專案。

而當你準備好Eclipse加上ADT的環境之後,可以使用File/Import,並且用一個Android的專案將它匯入,範例專案匯入之後,你可以發現在這個android的libs目錄,也就是Android在載入時可以讀取的目錄中,已經有所有支援的jar檔如圖2。


▲ 圖2 範例專案的libs目錄結構



Android與Mobile Service的溝通

這個範例提供了一個樣版,首先在Mobile Service中會創建一些表格,這些表格的每一個欄位代表一個物件的屬性。而一列資料就是一個類別所產生出的實例。而這個類別也就是由資料庫的綱要對應而成。因此你可以在這個範例中看到一個ToDoItem.java,它對應的就是範例中的ToDoItem表格如圖3。


▲ 圖3 在Windows Azure上的表格內容



而對應的ToDoItem.java,你可以看到此處有使用了google實作的Java Serialization的標示法如圖4。


▲ 圖 4 Java元件和表格的對應



這種使用GSON的語法有個好處,就是程式的語法和次料庫的綱要可以是無關的,也就是說例如在Java的mText字串,對應到資料庫的欄位會是text的欄位,而id對應到的是mId的變數。

因此藉由這個data bean,Android的應用程式就可以和 Windows Azure for mobile Service溝通。使用這種介面,開發者不需要對原生的程式作任何的妥協,而可在原本Android的框架下進行應用程式的開發。

Mobile Service的連結

當然在Android的環境下,負責使用者介面的就是 Activity元件,而這個Activity元件所對應的畫面,即可在載入雲端表格的內容後呈現。因此,對於這個畫 面控制器,一種合理的實作就是在這個Activity生成時,就連結Windows Azure for mobile service的服務。因此你可以在TodoActivity這個Activity類別的onCreate函數中看到主要的MobileServiceClient的生成函數如圖5。


▲ 圖 5 在onCreate函數中產生的MobileServiceClient物件



這個物件主要需要兩個參數,一個是對應的Windows Azure for mobile service的URL,這個服務URL你可以在manage.windowsazure.com的Dashboard下看到Mobile Service URL位址如圖 6。




▲ 圖6 取得Mobile Service URL的位址


除此之外,還需要一組key,你可以在同一個畫面下方的工具列中看到控制鍵的按鈕Manage Keys如圖7。


▲ 圖7 管理服務的金鑰



而產生了該服務之後,就可以使用getTable()來取得這些資料,而取得資料之後,就可以透過Adapter的形式將資料更新於一個ListView的畫面上。因此你可以看到當應用程式的Activity載入之初,會稍微載入一下,而當載入完成之後,你可以看到畫面如圖8。


▲ 圖8 載入完成的畫面



這個預設的專案最低版本是Android 2.2,如果你使用2.2/2.3的模擬器,你可以看到到目前為止都可以順利的執行。