使用Windows Azure Mobile Service开发Windows Phone 8 App【转http://www.cnblogs.com/dlbrant/archive/2013/04/02/2996627.html】
- How to make a Windows Phone 8 app with Windows Azure Mobile Service
Windows Azure Mobile Service推出已经有一段时间了,这可能是这段时间以来Windows Azure上最受关注的一个Feature,试用了一下Mobile Service,觉得还不错,分享下试用的过程,供大家参考。
新建一个Mobile Service
1. 登陆到Windows Azure Portal,创建一个Mobile Service
2. 创建一个Mobile Service:MyTodos,并为之新建一个数据库,注意数据库服务器的区域和Mobile Service的区域最好相同,这样可以减少网络延迟和流量费用 (当然也可以使用已有的数据库实例,Mobile Service会把新建的数据表都放到MyTodos这个Schema下,所以不用担心和原有的表重名)
3. 等待几分钟后,Mobile Service创建完成后,点击MyTodos进行配置:
a) 平台这里可以看到,Mobile Service支持Windows/ WP8/Android/iOS/Html5的应用,这里我们选择Windows Phone8,注意需要安装两个SDK – Windows Phone 8 SDK和Mobile Service SDK;
b) 单击“创建TodoItem表”在刚才的数据库中创建一个TodoItem表,当然也可以自己到数据库里创建。
4. 浏览到配置这个页面,注意启用“动态架构”,这样在开发阶段,我们给Mobile Service传什么样的entity,Mobile Service会自动为我们创建相应的字段,但等到发布阶段,出于安全的考虑,最好是把“动态架构”关闭。
5. 回到MyTodos的首页,下载Azure自动生成的代码
6. 打开刚下载的代码,这时候我们已经得到了一个完整的Windows Phone 8的应用,来看看Mobile Service都生成了什么代码
a) MobileServiceClient:这就是Mobile Service SDK里面用来访问Mobile Service的客户端
b) TodoItem以及相应的Insert/Update/Refresh等方法:注意这些方法都是使用.Net 4.5的异步编程,这也是Mobile Service所推荐的编程模式。
7. 运行测试一下这个小App,添加一些TodoItem,浏览之前建的数据库,可以看到,还没有写一行代码,就已经得到了一个完整的WP8 App。
添加用户验证
接下来添加用户验证,Mobile Service支持MicrosoftAccount(也就是LiveID)/Google/Facebook/Twritter四种用户验证方式,本文只使用了MicrosoftAccount。
1. 要使用MicrosofAccount,首先要到Live Connect Developer Center(http://go.microsoft.com/fwlink/p/?linkid=262039&clcid=0x409 )注册一下我们的App,注意“手机客户端应用”选择“是”。
2. 将注册得到的客户端ID和客户端密钥填到Mobile Service上,并保存
3. 现在设置一下数据权限,将TodoItem表设为只有验证过的用户才能读写,并保存
4. 再运行一下App,这次应该收到一个Unauthorized异常,因为当前的用户没有登录
5. 接下来为App添加登录的代码
a) 在MainPage.xaml里为MainPage添加一个Login button
b) 注释掉OnNavigatedTo里面的代码
View Code
c) 修改App.xaml.cs里面的ApplicationKey
View Code
d) 将下面这段代码添加到MainPage class里
View Code
运行看看效果,现在又可以刷新和添加TodoItem了
6. 如果需要得到更多的用户信息,则需要下载并安装LiveSDK( http://msdn.microsoft.com/en-us/live/ff621310 ),并为MyTodos添加引用到Microsoft.Live
a) 按下面的代码修改MainPage.Authenticate
View Code
运行效果如下,可以看到登录的页面与之前稍有差别,但这次能得到更多的用户信息
添加推送通知
1. 添加代码如下
a) 在App.xaml.cs中添加如下代码
View Code
b) 在Application_Launching中调用AcquirePushChannel
View Code
c) 给TodoItem class添加一个property
View Code
d) 修改MainPage.xaml.cs的ButtonSave_Click,代码如下。由于我们启用的动态架构,所以Save的时候Mobile Service会为新添加的Channel属性创建一个对应的数据库字段。
View Code
2. 给App开启推送
3. 回到Azure的Portal,修改Mobile Service服务端script并保存,详细参数可以参考这里:
http://msdn.microsoft.com/en-us/library/windowsazure/jj871025.aspx
代码如下:
View Code
4. 把MyTodos pin到主界面上,运行app,观察效果
总结
Azure Mobile Service极大地简化了server端的代码开发,尤其是对于比较小的应用来说,更是非常方便,使App开发者可以专注于前端代码。
附:
客户端源代码在这里

![clip_image002[4] clip_image002[4]](http://images0.cnblogs.com/blog/49079/201304/02220821-352a539c507d49d49d72771c9eab94b3.jpg)
![clip_image004[4] clip_image004[4]](http://images0.cnblogs.com/blog/49079/201304/02220824-9d8de46bd40f425c9ea15402a9de6d2b.jpg)
![clip_image006[4] clip_image006[4]](http://images0.cnblogs.com/blog/49079/201304/02220824-3af028210bdb44de85bc8cd311a7c33a.jpg)
![clip_image008[4] clip_image008[4]](http://images0.cnblogs.com/blog/49079/201304/02220826-d69ca6c9d7ac4ced914995190a8e5e37.jpg)
![clip_image010[4] clip_image010[4]](http://images0.cnblogs.com/blog/49079/201304/02220828-12d9252755554844b96606c20c0f4a98.jpg)
![clip_image012[4] clip_image012[4]](http://images0.cnblogs.com/blog/49079/201304/02220831-be251bd014a94f5eaf915e27d28f60ee.jpg)
![clip_image014[4] clip_image014[4]](http://images0.cnblogs.com/blog/49079/201304/02220834-10856a685a8f4d68bfcda27931b92a77.jpg)
![clip_image016[4] clip_image016[4]](http://images0.cnblogs.com/blog/49079/201304/02220842-f366cadc99f64e628c0b79112147de49.jpg)
![clip_image017[4] clip_image017[4]](http://images0.cnblogs.com/blog/49079/201304/02220843-b0abdc1494814db6bb31b389913ba523.png)
![clip_image019[4] clip_image019[4]](http://images0.cnblogs.com/blog/49079/201304/02220844-64afc3f953ad4693af54773109652392.jpg)
![clip_image021[4] clip_image021[4]](http://images0.cnblogs.com/blog/49079/201304/02220845-874938fd647d4f3d85e8f54b3e02b5a5.jpg)
![clip_image023[4] clip_image023[4]](http://images0.cnblogs.com/blog/49079/201304/02220850-a4a2223683a6445287e5764fa2d7a0d4.jpg)
![clip_image025[4] clip_image025[4]](http://images0.cnblogs.com/blog/49079/201304/02220851-8a4fe378c1864f64b412da0e28f6502b.jpg)
![clip_image027[4] clip_image027[4]](http://images0.cnblogs.com/blog/49079/201304/02220852-470fcb05ef194c26be7a1f3563aa7213.jpg)
![clip_image029[4] clip_image029[4]](http://images0.cnblogs.com/blog/49079/201304/02220853-b6f9f8005a7941f69fd84f0c27023bbc.jpg)
![clip_image031[4] clip_image031[4]](http://images0.cnblogs.com/blog/49079/201304/02220854-1d2e54c976c44eb591725098c1d5d915.jpg)
![clip_image033[4] clip_image033[4]](http://images0.cnblogs.com/blog/49079/201304/02220855-6c0042e73e864b26ad5b4a76bad79537.jpg)
![clip_image034[4] clip_image034[4]](http://images0.cnblogs.com/blog/49079/201304/02220856-67763416943e480b89a25e2247fc1fc7.png)
![clip_image036[6] clip_image036[6]](http://images0.cnblogs.com/blog/49079/201304/02220857-d7c9d45eaaa945a9972aea32e3777fb8.jpg)
![clip_image038[4] clip_image038[4]](http://images0.cnblogs.com/blog/49079/201304/02220858-eca726bb831d4ae089c54459319eed5e.jpg)
![clip_image040[4] clip_image040[4]](http://images0.cnblogs.com/blog/49079/201304/02220902-d6a21094157b40c0a3b3ef3d0439f874.jpg)
![clip_image042[4] clip_image042[4]](http://images0.cnblogs.com/blog/49079/201304/02220903-22b0e9a1bc684cb3a29827c7e9701dc8.jpg)
![clip_image044[4] clip_image044[4]](http://images0.cnblogs.com/blog/49079/201304/02220905-41e087e1b0334a998bb097f2ebe8aeb1.jpg)
![clip_image046[4] clip_image046[4]](http://images0.cnblogs.com/blog/49079/201304/02220908-4164c09bd4a5428f97d291ea7b14ad6e.jpg)
![clip_image036[7] clip_image036[7]](http://images0.cnblogs.com/blog/49079/201304/02220909-51b00e6e981e49c98d105dda0308ff2c.jpg)
![clip_image048[4] clip_image048[4]](http://images0.cnblogs.com/blog/49079/201304/02220910-5aec4e479d264b8997d703c0101e70d3.jpg)
![clip_image050[4] clip_image050[4]](http://images0.cnblogs.com/blog/49079/201304/02220911-d9fc4d263fed4dc4954da4f79534de02.jpg)
![clip_image052[4] clip_image052[4]](http://images0.cnblogs.com/blog/49079/201304/02220915-cf938d28b70840139c4184df254c45e9.jpg)
![clip_image054[5] clip_image054[5]](http://images0.cnblogs.com/blog/49079/201304/02220916-f083f298f3874768bcac26a27f1558b9.png)
![clip_image056[4] clip_image056[4]](http://images0.cnblogs.com/blog/49079/201304/02220918-36217e0f1c8b41d6955657a0028afeed.jpg)
![clip_image058[4] clip_image058[4]](http://images0.cnblogs.com/blog/49079/201304/02220920-83f64dafdf3345a7928c6f5a4129c083.jpg)
![clip_image060[4] clip_image060[4]](http://images0.cnblogs.com/blog/49079/201304/02220923-08d821ce711d43de8f29deab4dd9c99b.jpg)
![clip_image062[4] clip_image062[4]](http://images0.cnblogs.com/blog/49079/201304/02220924-e22cfef03e6c44c18d797fa950aa0a05.jpg)
![clip_image064[4] clip_image064[4]](http://images0.cnblogs.com/blog/49079/201304/02220926-8f4df70666954388a8cb37f81dd52063.jpg)
![clip_image066[4] clip_image066[4]](http://images0.cnblogs.com/blog/49079/201304/02220926-6f647719cf1841e49d4500b80b72fc22.jpg)
浙公网安备 33010602011771号