(此文章同时发表在本人微信公众号“dotNET开发经验谈”,欢迎右边二维码来关注。)web
题记:这篇其实不是一个操做向导了,主要对Power BI的嵌入特性进行探讨。api
Power BI是微软的创新性(或者称之为敏捷型)BI产品,从发布之初就备受关注,由于它是一个只能以纯SaaS模式提供服务端的BI产品。目前Power BI实际上是以两种方式提供服务端:服务器
因此要把Power BI嵌入到Web应用程序中,针对不一样的提供方式,也有不一样的嵌入方式。微信
Power BI Service通常经过Azure Active Directory进行验证后(即你的Web应用必须使用AAD作验证),使用iframe把报表嵌入到应用页面中。好比MS Teams就使用这种方式集成了Power BI。同时还能够利用Power BI REST API来实时更新数据。下图展现了进行集成的总体流程:app
微软已经很贴心的给出了一个示例和文档来指导你们进行Power BI Service的集成(都不须要我来写了):https://powerbi.microsoft.com/zh-cn/documentation/powerbi-developer-integrate-report/。大体步骤以下:工具
考虑到Power BI Service主要用于企业内部,而且没有单独的服务器可供安装,为了解决ISV集成BI报表到本身产品的需求,微软特地在Azure中提供了Azure Power BI Embedded云服务。能够把Azure Power BI Embedded看做是Qlik Sense的OEM模式,只是它是在线的OEM服务。它的优势是:“经过使用Power BI Embedded服务,ISV就无需为了开发与维护可视化功能和BI控件而自行投入研发力量。这些可视化功能能够支持他们使用的所有设备,而ISV也可以充分地利用Power BI服务上不断出现的各类创新功能以及他们的所有价值”。老实说我也基于Qlik Sense构思了相似Power BI Embedded的东西,要解决的就是这样的问题,看来这个Idea仍是有市场的。开发工具
Power BI Embedded嵌入方式比Power BI Service的简单些,最主要是经过AccessKey代替AAD验证,页面嵌入也是经过iframe来实现。固然访问后台的API是另一套,名字叫Azure Power BI Embedded REST API,不过有.NET和JS的SDK可供下载。下图给出了一个嵌入步骤的概念模型:spa
简单说来就是:rest
具体的步骤能够看官方的文档,已经写的足够好和详细了:https://docs.microsoft.com/zh-cn/azure/power-bi-embedded/power-bi-embedded-get-started对象
下面咱们来对Power BI和Qlik Sense在嵌入Web应用这个方面进行一个简单比较:
比较点 | Power BI | Qlik Sense |
iframe方式嵌入 | 支持 | 支持 |
div方式嵌入 | 不支持 | 支持 |
仪表盘嵌入 | 支持 | 支持 |
报表/工做表嵌入 | 支持 | 支持 |
磁贴/可视化对象嵌入 | 支持 | 支持 |
嵌入后客户端操做 | 支持 | 支持 |
开发工具支持 | 弱 | 强 |
本地AD/Windows验证 | Embedded支持 | 支持 |
Azure AD验证 | Service支持 | 支持(需在QMC中配置) |
自定义验证 | Embedded支持 | 支持 |
整体而言,Qlik Sense的嵌入灵活度和便捷性更高。可是Power BI这种租用服务的方式也有优点。