公告 :本博客为微软云计算中文博客 的镜像博客。 部分文章因为博客兼容性问题 ,会影响阅读体验 。如遇此情况,请访问 原博客 。
Windows® Azure Marketplace (先前名为"Dallas",本博客也写过一篇入门教学"初探Dallas" )的DataMarket是一个信息市场,简化了发布以及使用各种类型数据的步骤。DataMarket方便开发者和信息工作者发现,购买以及管理所订购的Premium数据。
DataMarket 内的数据的暴露格式为OData ,并对于数据查询提供了2种模式:
本文会简单的介绍一下如何利用Windows Azure Marketplace构建一个Flexible查询的应用。
using USCrime2006and2007.DataGovCrimes;
CrimeData
。
class CrimeData
{
private Uri serviceURI;
private datagovCrimesContainer context;
}
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账户名。是您在DataMarket 内的Account Keys (参考预备工作 章节)。
SECURE_ACCOUNT_KEY
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
)方法。
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();
}
我们看到在代码方便对于数据源的使用是非常简单的,开发者可以结合实际应用的需求,轻松的将应用与这些实时的数据源相集成,构建出具有丰富内容的应用来。