標籤:style blog http color 使用 檔案 io 資料
在使用azure之前,我一直只能做本地app,或者使用第三方提供的api,儘管大多數情況下夠用,但是仍不能隨心所欲操縱資料,這種感覺不是特別好。於是在azure發布後,我就嘗試使用azure來做為個人資料中心,可選的方式有很多,但今天我給大家介紹的是azure mobile service。
1.建立Mobile Service
Azure中建立Mobile Service很簡單,與建立其他項目類似,流程如下:
i.
ii.
iii.
ii
這裡我使用的是Windows Azure國際版,經過簡單的流程就能建立一個Mobile Service,需要注意,當前服務還是空的,需要我們部署相應的Web API Service。
2.部署Web API服務
建立後的空Mobile Service儀表板如下:
我們在選擇平台那一塊欄目,選擇Windows Phone,這時可以看到入門指南,大家可以任意挑選一種,這裡我們挑選“串連至現有Windows Phone應用程式”。
接下來需要建立並發布一個ASP.NET Web API項目至我們的Mobile Service,這裡大家有兩種選擇:
1.從Visual Studio中全新建立,選擇Web API或者Azure Mobile Service模板均可
2.或者從Azure儀表板中下載一個標準Azure Mobile Service項目工程,解壓至本地編輯
以上兩種方法最終都會得到一樣的結果,一個ASP.NET Web API項目,如下:
如果大家對ASP.NET Web API項目熟悉的話,可以直接在Controller檔案夾下找到核心控制器代碼,在其中進行一系列的修改,產生自己的方法,如下:
在控制器類中可以看到相關API,大家可以自行嘗試效果,預設返回的是Json格式資料。
GET /tables/todoitem
結果:
[{"id":"1","complete":false,"text":"First item"},{"id":"2","complete":false,"text":"Second item"}]
下面我們簡單運行產生項目後,將其發布至Azure Mobile Service,如下:
發布完成後,我們來看運行效果,如下:
3.在Windows Phone項目中使用Mobile Service
開啟我們的windows phone項目,使用NuGet安裝WindowsAzure.MobileServices SDK。這裡要特別注意:Windows Azure Mobile Service SDK支援WinRT& Silverlight架構,所以基於WinRT的WP8.1項目完全可以使用。
建立資料類TodoItem,結構應與Web API項目中定義的一致,如下:
public class TodoItem { public string Id { get; set; } public string Text { get; set; } public bool Complete { get; set; }}
在App.xaml.cs中建立MobileServiceClient執行個體,初始化參數分別為applicationUri和applicationKey,參數你們替換為自己的即可如下
public static MobileServiceClient mobileService = new MobileServiceClient("https://azuretestmobileservice.azure-mobile.net/",“{applicationKey}”);
下面我們就可以對雲端資料進行擷取,上傳,增刪改等操作,並將結果呈現到用戶端UI中,我們可以簡單操作一下,如下:
MainPage.xaml
<StackPanel> <ListView x:Name="TestDataList"> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBox IsChecked="{Binding Complete}"/> <TextBlock TextWrapping="Wrap" FontSize="30" Text="{Binding Text}"/> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> <Button x:Name="insertButton" Click="insertButton_Click">插入記錄</Button> <TextBox x:Name="inputTextBox" ></TextBox> </StackPanel>
MainPage.xaml.cs
protected async override void OnNavigatedTo(NavigationEventArgs e) { await loadAzureData(); } private async void insertButton_Click(object sender, RoutedEventArgs e) { if (inputTextBox.Text.Trim() != null && inputTextBox.Text.Trim() != "") { TodoItem newItem = new TodoItem { Complete = false, Text = inputTextBox.Text.Trim() }; await App.mobileService.GetTable<TodoItem>().InsertAsync(newItem); } await loadAzureData(); } private async Task loadAzureData() { if (todoItems == null) todoItems = new List<TodoItem>(); todoItems = await App.mobileService.GetTable<TodoItem>().ToListAsync(); TestDataList.ItemsSource = todoItems; }
最後效果,至此我們就順利部署了一個Azure Mobile Service執行個體,並整合到windows phone 8&8.1項目中