您的位置:首页 > 编程语言

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

2012-02-08 19:37 639 查看
[b]公告:本博客为微软云计算中文博客的镜像博客。部分文章因为博客兼容性问题,会影响阅读体验。如遇此情况,请访问原博客。[/b]

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

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

Flexible查询:允许用户添加可选的名值对参数来查询数据,例如(columnName=foo)等。

Fixed查询:用户只能通过内容提供商所预定义的操作来进行数据查询。

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

预备工作:

1.一个有效的WindowsLiveID账户,如果没有,请通过WindowsLive主页注册。

2.一个有效的DataMarket账户。如果没有,请访问WindowsAzureMarketplaceDataMarket,用您的LiveID登陆。接受若干使用条款之后,便会拥有一个与LiveID绑定的DataMarket账户。

3.在AccountKeys页面获取您的AccountKeys,这是您使用服务的凭证。

4.访问DataMarket的数据源列表页面,列出了所有DataMarket内的数据源,选择感兴趣的数据源,点击,进入数据源的详细页面。在该页面的右侧,点击SignUp按钮来订购该数据源(一般都为免费数据源)。接受若干使用条款后,我们便完成了数据源的订购。

5.我们订购2006-2008CrimeintheUnitedStates服务以作后续项目演示之用。

代码:

步骤1:在VisualStudio中创建新项目

以管理员权限运行VisualStudio

1.以管理员权限运行VisualStudio

创建新项目

1.新建VisualC#Console应用

2.将项目的目标框架选(TargetFramework)为.NETFramework4

3.将项目命名为USCrime2006and2007

4.点击OK按钮。

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

获取服务的根URL

1.访问WindowsAzureMarketplaceDataMarket首页,并以LiveID登陆。

2.点击MyData标签页。

3.找到2006-2008CrimeintheUnitedStates数据服务。

4.点击该服务列表内右侧的Use链接。

5.将网页拖至页面中部,点击Details标签页。



6.找到该服务的根URL

为项目添加服务引用

1.右击步骤1中的项目,选择AddServiceReference...

2.将上步的URL输入至对话框的地址栏内。点击Go按钮。

3.将该服务的命名空间设为DataGovCrimes

4.点击OK按钮。

在代码中添加服务引用

1.打开项目的Program.cs文件。

2.在文件内加入如下引用语句:

usingUSCrime2006and2007.DataGovCrimes;


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

创建一个辅助类

1.创建一个公有类,名为
CrimeData


2.为该类增加2个私有变量:

一个表示服务的根URL。

一个存储了服务上下文中服务凭证的服务容器。

classCrimeData

{

privateUriserviceURI;

privatedatagovCrimesContainercontext;

}



3.为
CrimeData
创建一个构造函数。构造函数初始化私有变量以及用户凭证。



classCrimeData

{

privateUriserviceURI;

privatedatagovCrimesContainercontext;


//constructorfortheCrimeDataclass

publicCrimeData()

{

serviceURI=newUri(ROOT_URL);

context=newdatagovCrimesContainer(serviceURI);

context.Credentials=newNetworkCredential(USER_ID,

SECURE_ACCOUNT_ID);

}

}


ROOT_URL

是上文所提到的服务的根URL。[/code]
USER_ID

是您的LiveID账户名。

SECURE_ACCOUNT_KEY

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

[/code]

4.创建一个返回泛型类型为
CityCrime
的泛型列表的共有方法。

classCrimeData

{

privateUriserviceURI;

privatedatagovCrimesContainercontext;


//constructorfortheCrimeDataclass

publicCrimeData()

{

serviceURI=newUri(ROOT_URL);

context=newdatagovCrimesContainer(serviceURI);

context.Credentials=newNetworkCredential(USER_ID,

SECURE_ACCOUNT_ID);

}


//--publicmethodthatreturnsthelistofcrimedata

publicIList<CityCrime>GetCrimeData()

{

IEnumerable<CityCrime>query=context.CityCrime.Where(crime=>crime.City=="Newport").OrderBy(crime=>crime.Year);


try

{

returnquery.ToList();

}

catch(Exceptionex)

{

Console.WriteLine("Error:{0}",ex.Message);

returnnull;

}

}

}



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



5.在
Main()
函数中用
CrimeData
类,以及
GetCrimeData()
方法来使用数据,并显示函数返回的结果。

staticvoidMain(string[]args)

{

IList<CityCrime>crimeList;//CityCrimeistheentitytypereturnedbytheservice

CrimeDatacrimeData=newCrimeData();


crimeList=crimeData.GetCrimeData();


if(crimeList!=null)

{

Console.WriteLine("{0,4}{1,-12}{2,-15}{3,10}{4,13}","Year",

"City",

"State",

"Population",

"ViolentCrime");


foreach(CityCrimecincrimeList)

Console.WriteLine("{0,4}{1,-12}{2,-15}{3,10}{4,13}",c.Year,

c.City,

c.State,

c.Population,

c.ViolentCrime);

}


Console.Write("Tapanykeytoexit.");

Console.ReadKey();

}


6.运行程序,在Console中会显示操作返回的结果。

总结:

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

参考:http://msdn.microsoft.com/en-us/library/gg312152.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: