天天看點

Win10開發:一個簡單的MobileService

一、新增MobileService項目

1、建立一個Win10項目,命名為MobileServiceDemo。在解決方案下,新增一個MobileService項目。

Win10開發:一個簡單的MobileService

2、為了友善調試,修改下解決方案的屬性,将啟動項目設定為“目前標明内容”

Win10開發:一個簡單的MobileService

3、測試API

運作這個MobileService項目,VS會自動打開本地的IIS Server來host目前的用戶端項目,運作結果如圖。這個http://localhost:1827/ 就是通路目前Service的入口,1827是端口号,後續需要用到。 

Win10開發:一個簡單的MobileService

點選try it out,可以看到目前這個Mobile Service支援的API清單

Win10開發:一個簡單的MobileService

接着測試一下API,

點選“POST tables/TodoItem”,然後點選“try this out”,在Sample中修改要插入的項,最後點選Send将資料插入資料庫。操作成功會傳回一個狀态碼

Win10開發:一個簡單的MobileService
Win10開發:一個簡單的MobileService
Win10開發:一個簡單的MobileService

回到上一頁面,選擇“GET tables/TodoItem”,同樣點選“try this out”,然後send,就可以檢視表格TodoItem中的資料項,包括前面插入的

Win10開發:一個簡單的MobileService

4、檢視TodoItem表

在VS中,在菜單中選擇“視圖”->“伺服器資料總管”,在“伺服器資料總管”的面闆中選擇“資料連接配接”就可以找到我們的TodoItem表(還沒弄懂為什麼是TodoItems),其中text和complete字段是我們TodoItem類中定義的,其他是EntityData增加的,這樣我們就檢視和更新表格定義和資料了。

Win10開發:一個簡單的MobileService
Win10開發:一個簡單的MobileService

二、MobileService項目結構簡要分析

觀察這個項目的目錄結果,如果做過ASP.NET MVC 的開發,會發現整個項目結果和ASP.NET MVC十分相似,實際上這就是一個簡化版的MVC項目。下面對幾個檔案做簡要說明。因為我也是初學,是以隻能做簡要分析,需要深入解析還請查閱其他資料。

1、DataObjects檔案夾下是TodoItem類,繼承了EntityData,在EntityData按F12導航到定義,可以看到許多屬性,友善後續的工程開發,關于EntityData這裡不做太多闡述,因為我也不是太懂23333...

public class TodoItem : EntityData
    {
        public string Text { get; set; }

        public bool Complete { get; set; }
    }
           

2、Controllers下是TodoItemController類,繼承了TableController<TodoItem>,傳入的TodoItem表示目前這個Controller是操作的TodoItem表。在初始化函數Initialize中,new了一個EntityDomainManager,這個類的作用是為了更好的擴充性,使項目支援不同的DataSource,如sqlDatabase、Storage、Table、Blob、Mongodb等

對于各種Custom API的實作,都可以在目前檔案夾下新增Controller來實作 

三、釋出

如果對MobileService項目的操作已經完成,我們就可以将這個項目Publish到微軟Azure上。(當然你要有一個Azure賬号)

這裡做個說明,如果窮屌絲沒有Azure賬号怎麼辦?兩種辦法,一直是找微軟中國的Azure版本,不知道那個世紀互聯營運的一進制試用還有沒有;另一種就是暫時不用遠端的Azure,用本地的“Azure”,實際上就是不做這個釋出的操作,直接host在本地。文章後面的Demo部分會有講解。别誤會,我也是窮屌絲,隻不過我有微軟送的MSDN訂閱,是以才有Azure賬戶的...

1、在項目名稱上右鍵選擇“釋出”,選擇釋出目标。如果選擇導入,就要導入一個跟你的Azure賬号對應的配置檔案,這個可以在Azure的Portal面闆中找到。具體就是找到你要更新的MobileService,然後進入儀表盤,就可以找到“下載下傳釋出配置檔案”的操作。

選擇“Microsoft Azure移動服務”,就可以直接在Azure上新增或更新移動服務。如果在清單中選擇一項,那做的就是更新操作,也可以建立,建立的操作與在Azure的Portal上操作基本一樣。

Win10開發:一個簡單的MobileService
Win10開發:一個簡單的MobileService
Win10開發:一個簡單的MobileService

然後後續的步驟都比較簡單,有些項如果不熟悉的可以保持預設。在連接配接标簽下的Destination URL就是之後通路這個Service的URL

Win10開發:一個簡單的MobileService

釋出成功後,通路這個URL,再次選擇try it out,就會要求你輸入相應的賬戶密碼,隻要輸入密碼就可以登陸了。密鑰可以Azure的Portal面闆中對應移動服務的“管理密鑰”下檢視

Win10開發:一個簡單的MobileService

如果要做遠端調試,可以通過如下操作

在“伺服器資料總管”面闆中找到對應的移動服務,右鍵選擇“附加調試程式”就可以。忘了一點!前面釋出的時候必須選擇Debug版本才能支援遠端調試。另外,遠端調試好像特别的卡,做好心理準備。

Win10開發:一個簡單的MobileService
Win10開發:一個簡單的MobileService

四、Win10 Demo

既然是一個MobileService,就應該通過用戶端對資料進行管理和操作,而不是在Web中操作,是以前面的部分都可以算是一個準備工作吧。

下面來講解如何在Win10 應用中操作這些資料。

在第一步中我們已經建立了一個MobileServiceDemo的Win10項目,現在就來修改這個項目。

1、在項目名稱上右鍵選擇“管理Nuget程式包”,搜尋“WindowsAzure.MobileServices”然後安裝。

2、打開App.xaml.cs檔案,新增一個MobileServiceClient類

如果你要連接配接的是本地的MobileService,則添加下面的代碼。這裡的1827就是前面提到的端口号。提示:如果做的是本地操作,記得把MobileService服務運作起來。

public static MobileServiceClient MobileService = new MobileServiceClient("http://localhost:1827");
           

如果你要連接配接的是遠端Azure伺服器上的,就新增下面的代碼。這裡的****就是管理通路移動服務需要的密鑰

public static MobileServiceClient MobileService = new MobileServiceClient("https://mspmonthreport.azure-mobile.net/","********************");
           

3、新增TodoItem類

public class TodoItem
    {
        public string Id { get; set; }

        [JsonProperty(PropertyName = "text")]
        public string Text { get; set; }

        [JsonProperty(PropertyName = "complete")]
        public bool Complete { get; set; }
    }
           

4、修改MainPage.xaml頁面,新增一個TextBox和一個Button

<StackPanel>
        <TextBox x:Name="txtVal"/>
        <Button Content="新增" Click="btnAdd_Click"/>
    </StackPanel>
           

5、新增btnAdd_Click事件

private async void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            var item = new TodoItem { Text = txtVal.Text };
            await InsertItem(item);
        }

        private async Task InsertItem(TodoItem todoItem)
        {
            await todoTable.InsertAsync(todoItem);
        }
           

其中todoTable是擷取TodoItem表

private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();
           

6、運作項目,就可以實作資料的插入了。當然這裡沒有做資料的校驗和其他更複雜的增删改查操作。但是操作都是類似,這裡不做更詳細的講解。

源碼下載下傳:https://github.com/hebecherish/MobileServiceDemo

繼續閱讀