Win10开发:一个简单的MobileService

一、新增MobileService项目

1、新建一个Win10项目,命名为MobileServiceDemo。在解决方案下,新增一个MobileService项目。

2、为了方便调试,修改下解决方案的属性,将启动项目设置为“当前选定内容”

 

3、测试API

运行这个MobileService项目,VS会自动打开本地的IIS Server来host当前的客户端项目,运行结果如图。这个http://localhost:1827/ 就是访问当前Service的入口,1827是端口号,后续需要用到。 

点击try it out,可以看到当前这个Mobile Service支持的API列表

接着测试一下API,

点击“POST tables/TodoItem”,然后点击“try this out”,在Sample中修改要插入的项,最后点击Send将数据插入数据库。操作成功会返回一个状态码

 

回到上一页面,选择“GET tables/TodoItem”,同样点击“try this out”,然后send,就可以查看表格TodoItem中的数据项,包括前面插入的

 

4、查看TodoItem表

在VS中,在菜单中选择“视图”->“服务器资源管理器”,在“服务器资源管理器”的面板中选择“数据连接”就可以找到我们的TodoItem表(还没弄懂为什么是TodoItems),其中text和complete字段是我们TodoItem类中定义的,其他是EntityData增加的,这样我们就查看和更新表格定义和数据了。

 

二、MobileService项目结构简要分析

观察这个项目的目录结果,如果做过ASP.NET MVC 的开发,会发现整个项目结果和ASP.NET MVC十分相似,实际上这就是一个简化版的MVC项目。下面对几个文件做简要说明。因为我也是初学,所以只能做简要分析,需要深入解析还请查阅其他资料。

1、DataObjects文件夹下是TodoItem类,继承了EntityData,在EntityData按F12导航到定义,可以看到许多属性,方便后续的工程开发,关于EntityData这里不做太多阐述,因为我也不是太懂23333...

 

[csharp] view plain copy
 
  1. public class TodoItem : EntityData  
  2.    {  
  3.        public string Text { get; set; }  
  4.   
  5.        public bool Complete { get; set; }  
  6.    }  

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上操作基本一样。

然后后续的步骤都比较简单,有些项如果不熟悉的可以保持默认。在连接标签下的Destination URL就是之后访问这个Service的URL

发布成功后,访问这个URL,再次选择try it out,就会要求你输入相应的账户密码,只要输入密码就可以登陆了。密钥可以Azure的Portal面板中对应移动服务的“管理密钥”下查看

 

如果要做远程调试,可以通过如下操作

在“服务器资源管理器”面板中找到对应的移动服务,右键选择“附加调试程序”就可以。忘了一点!前面发布的时候必须选择Debug版本才能支持远程调试。另外,远程调试好像特别的卡,做好心理准备。

 

四、Win10 Demo

既然是一个MobileService,就应该通过客户端对数据进行管理和操作,而不是在Web中操作,所以前面的部分都可以算是一个准备工作吧。

下面来讲解如何在Win10 应用中操作这些数据。

在第一步中我们已经建立了一个MobileServiceDemo的Win10项目,现在就来修改这个项目。

1、在项目名称上右键选择“管理Nuget程序包”,搜索“WindowsAzure.MobileServices”然后安装。

2、打开App.xaml.cs文件,新增一个MobileServiceClient类

如果你要连接的是本地的MobileService,则添加下面的代码。这里的1827就是前面提到的端口号。提示:如果做的是本地操作,记得把MobileService服务运行起来。

 

[csharp] view plain copy
 
  1. public static MobileServiceClient MobileService = new MobileServiceClient("http://localhost:1827");  

如果你要连接的是远端Azure服务器上的,就新增下面的代码。这里的****就是管理访问移动服务需要的密钥

 

 

[csharp] view plain copy
 
  1. public static MobileServiceClient MobileService = new MobileServiceClient("https://mspmonthreport.azure-mobile.net/","********************");  


3、新增TodoItem类

 

 

[csharp] view plain copy
 
  1. public class TodoItem  
  2.     {  
  3.         public string Id { get; set; }  
  4.   
  5.         [JsonProperty(PropertyName = "text")]  
  6.         public string Text { get; set; }  
  7.   
  8.         [JsonProperty(PropertyName = "complete")]  
  9.         public bool Complete { get; set; }  
  10.     }  


4、修改MainPage.xaml页面,新增一个TextBox和一个Button

 

 

[html] view plain copy
 
  1. <StackPanel>  
  2.       <TextBox x:Name="txtVal"/>  
  3.       <Button Content="新增" Click="btnAdd_Click"/>  
  4.   </StackPanel>  


5、新增btnAdd_Click事件

 

 

[csharp] view plain copy
 
  1. private async void btnAdd_Click(object sender, RoutedEventArgs e)  
  2.        {  
  3.            var item = new TodoItem { Text = txtVal.Text };  
  4.            await InsertItem(item);  
  5.        }  
  6.   
  7.        private async Task InsertItem(TodoItem todoItem)  
  8.        {  
  9.            await todoTable.InsertAsync(todoItem);  
  10.        }  


其中todoTable是获取TodoItem表

 

 

[csharp] view plain copy
 
  1. private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();  


6、运行项目,就可以实现数据的插入了。当然这里没有做数据的校验和其他更复杂的增删改查操作。但是操作都是类似,这里不做更详细的讲解。

 

 

源码下载:https://github.com/hebecherish/MobileServiceDemo

 

posted @ 2016-10-02 22:41  天涯海角路  阅读(240)  评论(0)    收藏  举报