Share via


创建和使用 LightSwitch OData 服务

[原文发表地址] Creating and Consuming LightSwitch OData Services

[原文发表时间] 2012-03-09 14:02

注意 : 此信息适用于Visual Studio 11 测试版中的LightSwitch

LightSwitch 的下一版本中,我们已经添加了对OData 服务的支持,这可以使用外部服务,还能从 LightSwitch 中间层创建服务。开放数据协议 (OData) 标准化了我们通过 web 与数据服务进行通信的方式。今天很多企业使用 OData作为系统,伙伴之间交换数据的方式,也提供了一种访问数据存储区的简单方式。这让以数据为中心的LightSwitch通过 OData使用数据服务,这样更完美了。因为 OData 是一种标准协议,它还意味着其他客户端可以访问你用LightSwitch所创建的数据。

在我上一篇关于 LightSwitch 中的OData的博文中,我给你展示了如何使用外部的 OData 服务来加强我们的 LightSwitch 应用程序。在这篇文章中,我将展示如何使用 LightSwitch 公开的OData 服务。

使用LightSwitch创建OData 服务

在 LightSwitch 中,创建 OData 服务并不需要任何额外的技巧。事实上,创建这些服务时,你不必做任何特别的事情。当你定义你的数据和编译应用程序时,它们将自动被创建。你在LightSwitch 应用程序中所使用的每个数据源将成为一个数据服务端点。在那些端点内,你在 LightSwitch 中所定义的每个实体会自动公开。而不是在LightSwitch 的第一个版本中的"黑盒"中间层,我们现在有开放中间层,它可以用于与其他系统和客户端接口。

image

真正令人信服的不仅仅是你可以轻易地使用LightSwitch塑造数据服务,而且在你的实体中编写的任何商务逻辑(和用户权限)也将执行,而不管什么客户端访问服务。因为 OData 是一个开放的协议,因此有大量的客户端库可用于在不同的平台上创建所有类别的应用程序,包括从 web、 电话等等。让我们深入挖掘服务端点,看看它们的样子。对于此示例,我要去使用Contso 构建示例.

获取你的 LightSwitch OData 服务

当你在三层配置 (或在 IIS中托管中间层或 Windows Azure) 中部署LightSwitch 应用程序时,此时服务端点被公开了。服务的名称对应于你的数据源的名称。在 Contoso 构建示例中,我们有两个服务端点,因为我们有两个数据源。在每一个服务中,我们可以导航到我们在数据设计器中所塑造的所有实体集。

image

在调试时,你有几种方法可以获得服务。最简单的就是在项目属性中将客户端应用程序类型更改为"Web"。当你调试程序 (F5) 时,你将在你的浏览器的地址栏中看到Visual Studio分配给你的端口数字。

image

在调试时,在浏览器中打开另一个选项卡,然后使用端口号来定位到你的 OData 服务。你将看到可用的实体集的列表来通过服务查询。

image

开放数据协议是基于 AtomPub 的REST-ful协议,定义一组查询操作,它可使用一组URI 公约在数据上执行。你用 HTTP— GET 请求查询服务,该服务将返回种子和响应的结果。要想在 IE 中查看原始种子,请转到工具 — — > Internet 选项,内容选项卡。在种子和 Web下,单击"设置",然后取消选中"启用种子阅读视图"。

image

如果我们想要查看系统中的所有客户,我们可以简单地键入 URL https://localhost:41155/ApplicationData.svc/Customers,你将从服务中得到以下的响应。种子中的每个条目是一个客户实体,并对应于数据库中的一行。

image

请记住,查询是区分大小写的。注意URL 中是Customers 而不是 customers。如果你要返回ID = 1 的客户,那么使用:

https://localhost:41155/ApplicationData.svc/Customers (1)

这将只返回以上所示的第一个客户。同样地,OData 协议通过导航属性定义了导航关系的标准方式。如果你想为特定客户获取所有建设项目:

https://localhost:41155/ApplicationData.svc/Customers(1) /Projects

这将只返回该客户的项目。如果你想要返回唯一姓氏是"Massi"的客户,那么使用:

https://localhost:41155/ApplicationData.svc/Customers ?$ filter=LastName eq 'Massi'

当然,还有一大堆其他查询操作的支持,如 OrderBy、Top、Skip、Sort等。查看开放数据协议 URI 公约的完整列表。在协议中还有定义了的操作,可使用标准的 HTTP 动词来执行更新、 插入和删除操作。LightSwitch 客户端与中间层数据服务就是以这种方式进行通讯的。

查看服务请求和响应的另一种方法是安装工具 ,如Fiddler。Fiddler是 一种Web 调试代理,它记录了你的计算机与互联网或本地主机之间的所有的http(s)流量。以这种方式的话,你不必更改客户端应用程序类型,你可以将其当作桌面应用程序,并仍看到流量。如果你试图建立一个针对 OData 服务的你自己的客户端,这是一个必须拥有的工具。

image

既然,你已经了解了OData 服务是如何从 LightSwitch 中间层公开的,让我们接着使用一些LightSwitch 客户端之外的另一个客户端的数据。我最喜欢的数据分析的工具之一是 Excel。

Excel 中通过 PowerPivot 使用 LightSwitch 服务

其实, 在Excel 中使用这些服务,你不需要知道关于Odata的任何事情。Excel 有一个针对进阶用户的免费插件,称为 PowerPivot,你可以安装它到 Excel 2010 来访问Excel在框外不支持的数据源,包括 Odata种子。你可以从www.powerpivot.com下载它。此插件可以武装你的进阶用户,并指向你的 LightSwitch 数据服务以执行复杂的数据分析和在熟悉的工具中创建报表。

要连接Excel到OData 服务,点击PowerPivot 选项卡,然后点击“PowerPivot窗口”按钮来启动PowerPivot 。点击"从数据源"按钮,并提供数据源的 URL,然后单击下一步。

image

此时,你可以从数据集的列表中选择。

image

选择你想要的数据,然后单击完成。PowerPivot 会将你所选择的数据导入到一组电子表格中。你可以继续将额外的源或数据源导入到 PowerPivot中,然后将它们关联起来以此创建功能强大的数据聚合。要创建你的数据集之间的关系,请选择 PowerPivot 窗口中的设计选项卡,单击管理关系。

image

一旦设置了你需要的关系,你可以通过选择主页选项卡,然后下拉PivotTable按钮来创建数据透视表和图表。

image

然后,你会看到 PowerPivot 字段列表窗口,你可以使用它像正常一样来创建图表。请记住,如果你不是针对部署的 LightSwitch数据服务,而是在调试时尝试这样做,你可能需要更新你的数据服务的端口号。你可以在 PowerPivot 窗口中选择设计选项卡,然后点击"现有连接"。然后你可以更新端口号,并在主页选项卡中刷新数据。

更新的 Contoso 构建样本包含一个电子表格,它位于一个名为ContsoAnalysisPowerPivot.xlsx 的根文件夹中,其中包含很多种你可以玩弄的图表。

clip_image012Contoso 建设-LightSwitch 高级示例 (Visual Studio 11 测试版)

image

总结

我希望你现在开始意识到LightSwitch 有多么强大,它不仅可以创建商务应用程序,而且能使用数据服务。 能够使用以及以OData 服务公开 LightSwitch数据源,这为各种客户端应用程序通过你的商务规则访问你的数据开启了门。在未来几周,我和团队将用 OData为你带来更多的冒险,同时向你们展示一些很多的可能性。当然,我们也就会深入到其他新功能。敬请期待 !

希望大家喜欢 !