• Windows Azure Marketplace入门教学通过代码操作DataMarket数据源


    公告    :本博客为微软云计算中文博客  的镜像博客。   部分文章因为博客兼容性问题  ,会影响阅读体验  。如遇此情况,请访问  原博客    。

    Windows® Azure Marketplace (先前名为"Dallas",本博客也写过一篇入门教学"初探Dallas" )的DataMarket是一个信息市场,简化了发布以及使用各种类型数据的步骤。DataMarket方便开发者和信息工作者发现,购买以及管理所订购的Premium数据。

    DataMarket 内的数据的暴露格式为OData ,并对于数据查询提供了2种模式:

    • Flexible 查询 :允许用户添加可选的名值对参数来查询数据,例如 (columnName=foo) 等。
    • Fixed 查询 :用户只能通过内容提供商所预定义的操作来进行数据查询。

    本文会简单的介绍一下如何利用Windows Azure Marketplace构建一个Flexible查询的应用。

    预备工作:

    • 1. 一个有效的Windows Live ID 账户,如果没有,请通过Windows Live主页 注册 。
    • 2. 一个有效的DataMarket 账户。如果没有,请访问Windows Azure Marketplace DataMarket ,用您的Live ID登陆。接受若干使用条款之后,便会拥有一个与Live ID绑定的DataMarket账户。
    • 3. 在Account Keys 页面获取您的Account Keys,这是您使用服务的凭证。
    • 4. 访问 DataMarket 的数据源列表页面 ,列出了所有DataMarket内的数据源,选择感兴趣的数据源,点击,进入数据源的详细页面。在该页面的右侧,点击Sign Up按钮来订购该数据源(一般都为免费数据源)。接受若干使用条款后,我们便完成了数据源的订购。
    • 5. 我们订购2006 - 2008 Crime in the United States 服务以作后续项目演示之用。

    代码:

    步骤1:在Visual Studio中创建新项目

    以管理员权限运行Visual Studio

    • 1. 以管理员权限运行Visual Studio

    创建新项目

    • 1. 新建Visual C#  Console应用
    • 2. 将项目的目标框架选(Target Framework)为.NET Framework 4
    • 3. 将项目命名为USCrime2006and2007
    • 4. 点击OK 按钮。

    步骤2:为项目添加服务引用

    获取服务的根 URL

    • 1. 访问Windows Azure Marketplace DataMarket首页 ,并以Live ID 登陆。
    • 2. 点击My Data 标签页。
    • 3. 找到2006 - 2008 Crime in the United States 数据服务。
    • 4. 点击该服务列表内右侧的Use 链接。
    • 5. 将网页拖至页面中部,点击Details 标签页。

     

    • 6. 找到该服务的根 URL

    为项目添加服务引用

    • 1. 右击步骤1中的项目,选择Add Service Reference...
    • 2. 将上步的URL输入至对话框的地址栏内。点击Go 按钮。
    • 3. 将该服务的命名空间设为DataGovCrimes
    • 4. 点击OK 按钮。

    在代码中添加服务引用

    • 1. 打开项目的Program.cs 文件。
    • 2. 在文件内加入如下引用语句:
    using USCrime2006and2007.DataGovCrimes; 

    步骤 3:用托管代码来使用数据

    创建一个辅助类

    • 1. 创建一个公有类,名为 CrimeData
    • 2. 为该类增加2个私有变量:
    • 一个表示服务的根URL。
    • 一个存储了服务上下文中服务凭证的服务容器。
    class CrimeData
    {
        private Uri serviceURI;
        private datagovCrimesContainer context;
    }
     
    • 3. 为CrimeData 创建一个构造函数。构造函数初始化私有变量以及用户凭证。
    
    






    class CrimeData
    {
        private Uri serviceURI;
        private datagovCrimesContainer context;
     
        // constructor for the CrimeData class
        public CrimeData()  
        {
            serviceURI = new Uri(ROOT_URL);
            context = new datagovCrimesContainer(serviceURI);
            context.Credentials = new NetworkCredential(USER_ID,
                                                        SECURE_ACCOUNT_ID);
        }
    }
     
    ROOT_URL
    是上文所提到的服务的根URL。
    USER_ID
    是您的 Live ID账户名。

    SECURE_ACCOUNT_KEY
    是您在DataMarket 内的Account Keys (参考预备工作 章节)。

    • 4. 创建一个返回泛型类型为CityCrime 的泛型列表的共有方法。
    class CrimeData
    {
        private Uri serviceURI;
        private datagovCrimesContainer context;
     
        // constructor for the CrimeData class
        public CrimeData()
        {
            serviceURI = new Uri(ROOT_URL);
            context = new datagovCrimesContainer(serviceURI);
            context.Credentials = new NetworkCredential(USER_ID,
                                                        SECURE_ACCOUNT_ID);
        }
     
        // -- public method that returns the list of crime data
        public IList<CityCrime> GetCrimeData()
        {
            IEnumerable<CityCrime> query = context.CityCrime.Where(crime => crime.City == "Newport").OrderBy(crime => crime.Year);
     
            try
            {
                return query.ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: {0}", ex.Message);
                return null;
            }
        }
    }
     
     

    该查询可以是任何有效的DataMarket LINQ 查询,可以包括可选的where  (Where ) 或者是orderby  (Order By )方法。

     
    • 5. 在Main() 函数中用CrimeData 类,以及GetCrimeData() 方法来使用数据,并显示函数返回的结果。
    static void Main(string[] args)
    {
        IList<CityCrime> crimeList;  // CityCrime is the entity type returned by the service
        CrimeData crimeData = new CrimeData();
             
        crimeList = crimeData.GetCrimeData();
     
        if (crimeList != null)
        {
            Console.WriteLine("{0,4} {1,-12} {2,-15} {3,10} {4,13}","Year",
                                                                    "City",
                                                                    "State",
                                                                    "Population",
                                                                    "Violent Crime");
                
            foreach (CityCrime c in crimeList)
                Console.WriteLine("{0,4} {1,-12} {2,-15} {3,10} {4,13}", c.Year, 
                                                                         c.City, 
                                                                         c.State, 
                                                                         c.Population,
                                                                         c.ViolentCrime);
        }
     
        Console.Write("Tap any key to exit. ");
        Console.ReadKey();
    }
    • 6. 运行程序,在Console中会显示操作返回的结果。

    总结:

    我们看到在代码方便对于数据源的使用是非常简单的,开发者可以结合实际应用的需求,轻松的将应用与这些实时的数据源相集成,构建出具有丰富内容的应用来。

    参考:http://msdn.microsoft.com/en-us/library/gg312152.aspx

  • 相关阅读:
    增强for循环赋值并且向list集合里添加元素,每个元素都一样
    《《《Spring 视频学习笔记
    xml中的<where><if>模糊查询
    《《《layui入门笔记
    《《《Vue element学习笔记
    《《《Spring Boot视频学习笔记
    intellij idea设置打开多个文件显示在多行tab上
    postMan安装完成,打开提示找不到,或者报错 可能原因
    Intellij IDEA debug模式下项目启动慢/无法启动的事件解决过程记录
    idea代码注释
  • 原文地址:https://www.cnblogs.com/new0801/p/6176698.html
Copyright © 2020-2023  润新知