发布于 2014-05-20
作者 陈 忠岳

目录

  • 概述
  • 前提条件
  • 创建 Windows Server 2012 Datacenter 虚拟机
  • 通过 WCF(Windows Communication Foundation)使用 OData 连接 MongoDB
  • 开放政府数据:FAA Aircraft Registry
  • 使用 LINQPad 查看 OData
  • 使用 PowerBI 实现 OData 可视化
  • 使用 PowerMap 显示数据地图
  • 结论

概述

本教程共包含三个开放主题:开放政府、开放数据以及开源。首先,对于开放政府,我们使用美国联邦航空管理局(FAA)提供的开放域数据。其次,我们使用开源数据库 MongoDB 来存储数据。最后,我们使用开放数据协议 OData 来实现数据连接与可视化。

前提条件

本教程需要您拥有 Microsoft Azure 订阅账户。如果没有,您可以通过申请
“VM Depot 中国客户优先体验计划”获得。此外,您还需要使用 Visual Studio 来创建 WCF(Windows Communication Foundation)OData 数据服务。如果您没有 Visual Studio 的完整版本,请在此处免费下载
Visual Studio Express
。

创建 Windows Server 2012 Datacenter 虚拟机

登录您的 Azure 门户,选择“虚拟机”标签。在该标签页,选择“计算 > 虚拟机 > 快速创建”。在“镜像”中选择“Windows Server 2012 Datacenter”,然后填写其他相关信息创建虚拟机。

虚拟机的启动运行将需要几分钟的时间。创建好虚拟机之后,打开“虚拟机”标签页,选择您刚刚创建的这台虚拟机。选择“仪表盘”选项,单击“连接”,获取用来建立虚拟机的远程桌面文件。

系统提示您打开或保存这个 RDP 文件。先保存,然后打开您的下载文件夹,双击打开这个 RDP 文件。这时会出现一个安全警告,提醒您无法识别该远程连接的发行商,单击“连接”即可(因为它是可信任来源)。

在“Windows 安全”对话框中,单击“使用其他账号”:

输入您所创建账号的用户名和密码,保持域名为空,然后单击“确定”。

这时会出现一个类似下图的安全警告,单击“确定”即可(因为它是一个可信任的远程计算机):

只需几秒钟的时间,您就可以通过远程桌面连接并登录到虚拟机。

创建 MongoDB

首先我们需要做的是,通过打开 MongoDB 通信端口来为 MongoDB 的运行准备虚拟机。在 Azure 门户上,选择您刚刚创建的虚拟机,然后选择端点。新建以下端点:

NAME: mongodb

Protocol: TCP

Public Port and Private port: 27017

这只是在 Azure 虚拟机上创建 MongoDB 的最低要求。有关配置选项的更多详细信息,请登录
http://www.mongodb.org/ 查阅相关文档。

接下来,我们需要创建并清空 MongoDB 数据库,然后在您的本地计算机(而不是虚拟机)上启动 MongoDB 服务器(下载文件到您的计算机上可以避免很多安全问题和提示)。

登录 MongoDB 网站,选择“下载”标签。在该标签页,选择 Windows 64 位版本的下载链接。

下载“.zip”文件后,复制到虚拟机上。创建目录“C:\mongodb”,将该文件解压缩到这个目录。

然后,创建目录“C:\data”和“C:\data\db”。

以管理员身份打开命令提示符,运行以下命令来启动 MongoDB 数据库进程:

C:\mongodb\bin\mongod.exe

控制台消息显示“等待连接”,表示 mongod.exe 进程运行成功。

再次以管理员身份打开命令提示符,运行以下命令,使用 mongo.exe shell来连接 MongoDB:

C:\mongodb\bin\mongo.exe

mongo.exe shell mongo通过您在前面操作中创建的端口
27017 来连接 mongod.exe。现在,MongoDB 实例已启动运行,并可接收数据和命令。

为了保证实例的正常运行,我们可以执行 mongotop.exe 程序。该程序跟踪 MongoDB 实例读取数据的时间,每秒钟进行一次测试,这是验证实例正常工作的一种既简便又快捷的方法。出现错误或者响应缓慢,都说明服务器或配置出了问题。有关 mongotop 的更多文档,请点击此处浏览。

第三次以管理员身份打开命令提示符,运行以下命令来启动 mongotop:

C:\mongodb\bin\mongotop.exe

如果响应时间很短,说明系统运行正常。尤其当数据库内的数据很少或没有时,最佳的响应时间应为 0 毫秒:

有关创建 MongoDB 的完整操作指南,请点击此处。

通过 WCF(Windows Communication Foundation)使用 OData 连接 MongoDB

本教程指导我们使用 WCF(Windows Communication Foundation)来创建开放数据协议(OData)数据服务。

WCF 是用来创建面向服务的应用程序的一种框架。它从一个服务终结点向另一个服务终结点以异步消息的方式传送数据作为。一个服务终结点可以是 IIS 或一个应用程序支持的连续可用服务的一部分。

OData 是用来创建以及使用数据 API 的一种标准化协议。它建立在核心协议(如 HTTP)和普遍接受的方法(如 REST)之上。

打开 Visual Studio(我使用的是 2012 版)或者免费的 Visual Studio Express,创建一个新的网站。选择“Empty
ASP.NET Web Application”模板并给它命名。

打开 NuGet 程序包管理器,搜索 MongoDB OData 驱动。我使用的是这个驱动。有关驱动的更多详细信息,请点击此处。有关源代码的详细信息,请点击此处。

安装驱动之后,打开 Web.config,根据以下格式更新 MongoDb 实例的连接字符串:

connectionString="mongodb://DNS NAME:27017/<yourDBName>"

然后,登录到 Azure 下载发布配置文件。在 Visual Studio 中,使用发布网站选项来导入您的发布配置信息。保持所有默认设置不变,单击“发布”。

这样就完成了!您使用 WCF 成功创建了一个 OData 服务。

您的服务接入 URL 为:

http://<YourWCFServiceURL>/OData.svc/

开放政府数据 – FAA Aircraft Registry

FAA Aircraft Registry 是一个公共的飞机登记数据库,包括 80 万个人飞机登记、数千飞机经销商以及其他数据点,且每周都会有更新。数据以逗号分隔格式(CDF)的方式提供,并可通过常用的数据库管理应用程序进行操控。

此例中的数据仅供参考所以本文不作具体说明。您也可以使用你喜爱的任何数据源。本教程假设我们在 Azure 上已拥有一个 MongoDB 实例,并加载了数据。

MongoDB 中的数据可划分到一个或多个集合中。我根据 FAA 网站下载的原文件创建了几个集合。从 OData 客户端访问,每一个集合都像数据库中一个独立的表格。我使用
MongoImport 命令将下载的逗号分隔格式文件加载到每个集合当中。

使用 LINQPad 查看 OData

现在我们可以通过 OData 来测试 Azure 上的 MongoDB 到客户端的连接。一种最快速、简便的方法是使用
LINQPad,它是一种免费的工具,最初的创建是为了互动查询 SQL Server,现在已被扩展为可立即执行表达式的 C#/VB/F# 暂存器。更重要的是,它有一个易于使用的 OData 连接接口。单击“新建连接”,选择“WCF 数据服务”选项以连接到 WCF
OData 服务,如下图所示:

在下一个页面中,输入您的连接 URL,保持其他选项不变。单击“测试”按钮测试您的连接,然后单击“确定”保存。

使用 PowerBI 实现 OData 可视化

我们使用 PowerBI 的两个主要功能
Power Query 和 Power Map 来实现数据可视化。PowerBI 是一套实用的自助服务商业智能工具,它是附加到 Microsoft
Excel 用于数据发现、组合、优化、可视化的软件。您还可以使用 PowerBI for Office 365 实现数据分享。

在我使用的示例数据集中,有 7606 条有关美国飞机经销商的数据记录。本例中,我将按“州”来进行经销商排列和分组,然后将经销商按“州”记录在地图上。

打开一张新的 Excel 数据表格,选择“Power Query”标签。在该标签页,选择“从其他源 > 从 OData Feed”。

输入您 WCF OData 服务的 URL。

双击该表格,在编辑模式下打开。然后,选择“组”,在“分组依据”中选择“STATE_ABBREV”,“操作”中选择“计算行数目”。

由此生成的查询为:

= Table.Group(DEALER_Data1, {"STATE_ABBREV"}, {{"Count", each Table.RowCount(_), type number}})

下图为查询结果中的原始数据:

使用 PowerMap 显示数据地图

接下来,我们通过选择“插入 > 地图 > 启动 Power Map”来启动 PowerMap。

在出现的第一个页面中,选择“州名缩写”来定义地图布局的表现形式,然后单击页面右下角的“下一步”按钮。注意:这时 PowerMap 已经能够把我选择的数据识别为美国州名的缩写,并在地图上标出它们的相应位置。

在下一个页面中,我们需要选择显示内容和格式。本例中,我选择“气泡”和“平面图”这两个菜单选项。

此外,还有其他一些用于地图显示的选项。希望您能尝试各种方式显示数据,并将结果上传到 PowerBI for Office365
与我们分享!

结论

本例中,我向您介绍了如何借助 WCF 将 Microsoft Azure 上的 MongoDB 数据用于 OData 客户端应用程序、如何使用 Microsoft PowerBI 轻松实现数据可视化和地图显示。这是一个比较简单的可视化示例,更多示例请点击此处。此外,Power
Query 还提供了一个内置的在线搜索功能,可以帮助您轻松发现其他来源的开放数据,并把这些数据融入您的查询和可视化功能。

最后,如果您还有其他感兴趣的内容,或者您已部署过其他相关技术,请不吝反馈!

本文转载自:

http://cn.msopentech.com/blog/2014/05/20/%e6%95%99%e7%a8%8b%ef%bc%9a%e4%bd%bf%e7%94%a8-mongodb%e3%80%81wcf%e3%80%81odata-%e5%92%8c-powerbi-%e6%9e%84%e5%bb%ba-microsoft-azure-%e4%b8%8a%e7%9a%84%e5%95%86%e4%b8%9a%e6%99%ba%e8%83%bd%e8%a7%a3/


教程:使用 MongoDB、WCF、OData 和 PowerBI 构建 Azure 上的商业智能解决方案的更多相关文章

  1. WCF Odata 开放数据协议应用

    OData简介 说起 WCF Data Service ,不得不说的是 OData.对于一个标准的 Web 服务,它往往会提供了一些功能,比如说:订货.退货这些,然后使用者通过HTTP协议来使用这些功 ...

  2. WCF开发指南之构建服务

    一. 引言 Windows通讯基础(简称为WCF)是一种SDK,用于让你使用典型的CLR编程结构(例如用于发布和消费服务的类和接口等)来构建Windows面向服务的应用程序.WCF的编程模型是声明性的 ...

  3. ArcGIS Pro 简明教程(4)工具和模型构建器

    ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...

  4. Android Studio 入门级教程(三):gradle项目构建

    声明 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4456420.html [系列] Andr ...

  5. WCF系列教程之初识WCF

    本随笔参考自WCF编程系列(一)初识WCF,纯属读书笔记,加深记忆. 1.简介:Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程 ...

  6. (转)Hprose与WCF在云计算平台Azure上的对决

    Windows Azure Platform是一个运行在微软数据中心的云计算平台.它包括一个云计算操作系统和一个为开发者提供的服务集合.开发人员创建的应用既可以直接在该平台 中运行,也可以使用该云计算 ...

  7. AngularJS是为了克服HTML在构建应用上的不足而设计的

    AngularJS中文网:http://www.apjs.net/ 简介   AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构 ...

  8. OData.NET已在 GitHub上开源

    OData.NET已在 GitHub上开源 微软最近已将OData .NET所有类库的源代码全部发布在GitHub上. 以下与OData相关的项目目前都已迁移到GitHub上: ODataLib Ed ...

  9. [SDK2.2]Windows Azure Storage (15) 使用WCF服务,将本地图片上传至Azure Storage (上) 服务器端代码

    <Windows Azure Platform 系列文章目录> 这几天工作上的内容,把项目文件和源代码拿出来给大家分享下. 源代码下载:Part1 Part2 Part3 我们在写WEB服 ...

随机推荐

  1. MySQL中的datetime与timestamp比较

    引用:http://database.51cto.com/art/200905/124240.htm TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在19字符,并且格式 ...

  2. Runtime 在IOS中的详细使用

    因为之前写东西的时候,都在未知笔记中,所有大家没有看到过我的文章,今天就开始使用博客园来进行和大家沟通.好了,废话不那么多了,转入正题.下面我把runtime 给大家介绍一下. ### 一.runti ...

  3. 时空分割的画面--用xcode命令行回忆turbo c

    大学时期曾经玩过turbo c的同学,可以用xcode命令行写写c程序,回味一下吧:) 1. 首先在终端输入,touch main.c 新建文件 2. 编辑main.c内容,写一段简单代码 #incl ...

  4. mongodb下载及安装配置教程【仅供参考】

    1 下载 下载页面地址:https://www.mongodb.org/downloads 版本选择:电脑系统是64位的,所以我选择了 Windows 64-bit 2008 R2+ ,msi包 2 ...

  5. 节点插入--对比jQuery和JavaScript方法(一)

    二.插入元素: 1 <div> 2 <p>面朝大海,春暖花开</p> 3 </div> (一).jQuery方法 1.在节点内部插入: 方法 说明 ap ...

  6. webstorm 快捷键

    Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*-*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 Ctrl+D 复制行 Ctrl+G 查找行 Ctrl+Shift+Up ...

  7. javascript 基础3第13节

    <html> <head> <title>javascript基础</title> </head> <body> 1.流程控制 ...

  8. javascript闭包的理解

    闭包是Javascript的一个难点,但也是一个很重要的知识点. 1.首先我们要知道变量作用域链 变量的作用域分两种:全局变量和局部变量.没有定义到任何函数中的变量为全局变量,在函数中定义的变量为局部 ...

  9. 分享一下个人的Vim配置文件

    强烈拥护开源精神,高举开源大旗,今天我就分享下我自己结合网上还有自己实际使用配的vimrc,可以给各位参考下,不要见笑哈,具体说明我在rc里写的也很详细,可以具体看下,也希望可以借这个机会能多认识认识 ...

  10. (jQuery 插件)封装容器的表单为json对象

    下面代码可以把一个页面容器中的表单元素封装成一个json对象. (function($){ $.fn.serializeObject=function(){ var inputs=$(this).fi ...