|
一、新增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
- 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上操作基本一样。
然后后续的步骤都比较简单,有些项如果不熟悉的可以保持默认。在连接标签下的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
- public static MobileServiceClient MobileService = new MobileServiceClient("http://localhost:1827");
如果你要连接的是远端Azure服务器上的,就新增下面的代码。这里的****就是管理访问移动服务需要的密钥
[csharp] view plain copy
- public static MobileServiceClient MobileService = new MobileServiceClient("https://mspmonthreport.azure-mobile.net/","********************");
3、新增TodoItem类
[csharp] view plain copy
- 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
[html] view plain copy
- <StackPanel>
- <TextBox x:Name="txtVal"/>
- <Button Content="新增" Click="btnAdd_Click"/>
- </StackPanel>
5、新增btnAdd_Click事件
[csharp] view plain copy
- 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表
[csharp] view plain copy
- private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();
6、运行项目,就可以实现数据的插入了。当然这里没有做数据的校验和其他更复杂的增删改查操作。但是操作都是类似,这里不做更详细的讲解。
源码下载:https://github.com/hebecherish/MobileServiceDemo |
|
|
|
|
|
|