zoukankan      html  css  js  c++  java
  • [这不是Windows Phone 7]FitnessTrackerPlus(健身)二.架构搭建

    现在开始搭建服务器和手机端基本框架

    /**************************************************************************

    注意:代码在即将开始的第三章,会有所变动

    为了进行真机调试,请将数据库连接权限自定义一个账户,不要使用电脑系统权限进行操作,

    ADO.NET数据模型连接语句也为之前自定义的账户,并且将ASP.NET应用程序项目部署到IIS服务器,

    即可进行真机 局域网访问。

    ***************************************************************************/

    一.服务器端

    1.打开VS2010 新建ASP.NET WEB应用程序

    2.添加一个新的ADO.NET 数据实体模型,选择从数据库生成模型

    3.添加新建项-WCF数据服务,这样就可以通过实体模型和REST终点来对数据进行访问

    修改FitnessTrackerPlusDataService 中的一端代码,让客户端对所有实体拥有读写权限

     1 //数据愿<>为 数据实体名+Entities
    2 public class FitnessTrackerPlusDataService : DataService<FitnessTrackerPlusEntities>
    3 {
    4 // 仅调用此方法一次以初始化涉及服务范围的策略。
    5 public static void InitializeService(DataServiceConfiguration config)
    6 {
    7 // TODO: 设置规则以指明哪些实体集和服务操作是可见的、可更新的,等等。
    8 // 示例:
    9 // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
    10 // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
    11 //访问规则
    12 config.SetEntitySetAccessRule("*",EntitySetRights.All);
    13 config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    14
    15 }
    16 }

    4.生成一组代理类

    我本机WCF服务地址为http://localhost:4096/FitnessTrackerPlusDataService.svc

    .NET有一个工具可以自动生成代理类,名称为DataSvcUtil,在WIN7 32为系统下,路径为C:\Windows\Microsoft.NET\Framework\v4.0.30319

    现在我们开始生成一组代理类,以管理员权限运行命令提示工具

    输入以下指令(注意此命令不包含换行符和空格):

    "%windir%\Microsoft.NET\Framework\v4.0.30319\DataSvcUtil.exe" /dataservicecollection
    /version:2.0 /language:CSharp /out:FitnessTrackerPlusData.cs
    /uri:http://localhost:4096/FitnessTrackerPlusDataService.svc

    关于此工具详细的用法请查看MSDN文档

    WCF 数据服务客户端实用工具 (DataSvcUtil.exe)

    http://technet.microsoft.com/zh-cn/exchange/ee383989(v=VS.90)

    如何:手动生成客户端数据服务类(WCF 数据服务)

    http://technet.microsoft.com/zh-cn/exchange/dd756369(v=vs.90)

     /*************************

    IIS服务端部署成功,访问成功示例(返回XML格式数据)

    **************************/


     二.手机端

    1.新建一个WP7程序

    2.选择 添加现有项,将我们之前用工具生成的FitnessTrackerPlusData.cs 类添加到程序中

    3.添加服务引用  地址为http://localhost:4096/FitnessTrackerPlusDataService.svc

    4.示例  简单的查询

    5.前台代码-进行数据绑定 

     1 <!--ContentPanel - 在此处放置其他内容-->
    2 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    3 <ListBox x:Name="list">
    4 <ListBox.ItemTemplate>
    5 <DataTemplate>
    6 <TextBlock Text="{Binding name}"></TextBlock>
    7 </DataTemplate>
    8 </ListBox.ItemTemplate>
    9 </ListBox>
    10 <Button Content="查询" Width="200" Margin="128,504,128,20" Click="Button_Click"></Button>
    11 </Grid>

    6.后台代码

     1  public partial class MainPage : PhoneApplicationPage
    2 {
    3 //数据类型
    4 FitnessTrackerPlusEntities entites = new FitnessTrackerPlusEntities(new Uri("http://localhost:4096/FitnessTrackerPlusDataService.svc"));
    5 // 构造函数
    6 public MainPage()
    7 {
    8 InitializeComponent();
    9 }
    10
    11 private void Button_Click(object sender, RoutedEventArgs e)
    12 {
    13 //查询食物为一杯数据
    14 var query = (from f in entites.foods
    15 where f.serving_size == "1 cup"
    16 select f) as DataServiceQuery<foods>;
    17 query.BeginExecute(foods_CallBack, query);
    18
    19
    20
    21 }
    22 private void foods_CallBack(IAsyncResult result)
    23 {
    24 var query = result.AsyncState as DataServiceQuery<foods>;
    25 var foodss = query.EndExecute(result).ToArray();
    26 //因为在WP7中 UI为主线程,我们现在是对UI操作,如果不开异步,会导致线程阻塞
    27 this.Dispatcher.BeginInvoke(() => { list.ItemsSource = foodss; });
    28 }
    29 }

    7.客户端引用的WCF数据服务预览

    8.执行效果


    本章源代码:

    http://dl.dbank.com/c0xb4p5sax
    修改后IIS代码:

    http://dl.dbank.com/c0t3bgpv7d

  • 相关阅读:
    简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法
    适配器模式(Adapter Pattern)
    什么样的登录框才算是优秀的?
    transient的作用及序列化
    MySQL索引实现原理
    concurrentHashMap原理分析和总结(JDK1.8)
    HashMap实现原理(JDK1.8)
    深入理解Java中的IO
    多线程系列
    多线程系列
  • 原文地址:https://www.cnblogs.com/tubufeng/p/2403226.html
Copyright © 2011-2022 走看看