设为首页 收藏本站
查看: 1369|回复: 0

[经验分享] Win10开发:一个简单的MobileService

[复制链接]

尚未签到

发表于 2017-7-1 09:14:02 | 显示全部楼层 |阅读模式
  一、新增MobileService项目
  1、新建一个Win10项目,命名为MobileServiceDemo。在解决方案下,新增一个MobileService项目。
DSC0000.jpg

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

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

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

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

DSC0005.jpg

DSC0006.jpg

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

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

DSC0009.jpg

  二、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上操作基本一样。
DSC00010.jpg

DSC00011.jpg DSC00012.jpg

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

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

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

DSC00016.jpg

  四、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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389915-1-1.html 上篇帖子: IConfigurationSectionHandler 使用~ 下篇帖子: HttpResponseMessage获取请求响应体内容
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表