《sharepoint 2010云计算解决方案》使用SQL Azure 的BI 解决方案

         SQL Azure 是云端的关系数据库,表明了管理组织机构中数据的一个起始点。然而,管理关系数据仅是BI 解决方案的一个方面;BI 解决方案的第二个一样相当重要的方面是,以一种有意义而且相关的(有多是可过滤的和可管理的)方式来显示数据。要作到这一点,须要的不只是细致的数据存 储,还要有在客户端以各类各样的方式渲染和操纵数据的能力。SharePoint 提供了多种与SQL Azure 交互的方式—其中一些是无代码的解决方案,另外一些则是以代码为中心的解决方案。vue

l  SharePoint 的无代码BI 解决方案sql

      SharePoint 中的无代码BI 解决方案提供了一系列的整合功能,这些功能可帮助管理SQL Azure 中的数据。这些解决方案中的一些内置在原生的SharePoint 功能中,另外的则须要一些配置或声明性的开发来进行建立和部署。数据库

      SharePoint 的开箱即用解决方案各有不一样。例如,一种可能作法是使用Chart Web 部件,它可以让您在Web 部件中链接数据并以不一样的方式和不一样类型的图表来提供这些数据,能够链接的数据类型从SQL Server 数据到SharePoint 列表数据都包括在内。Chart Web 部件编程

      使用System.Web.DataVisualization库(ASP.NET Chart 控件)来创造出一种浏览器中(in-browser)的配置体验,以此来建立一些简单但高效的图表显示。另外一种可能作法是关键性能指标 (KeyPerformanceIndicator,KPI)的使用,这些KPI 可让您使用各类各样的数据类型来设置状态指示器,从SharePoint 列表数据到Microsoft Excel 数据,再到SQL Server 数据均可以。最后一种作法是Excel Services,Excel Services 使得您可以把SQL Azure 数据和Excel 桥接起来,而后使用这一云端的数据来填充Excel Web Access Web 部件。windows

       SharePoint 中的另外一种无代码解决方案例子是, 使用SQL Server ReportingService(SSRS)来构建基于表单的SQL Azure 数据视图。这种方案须要对SSRS 作一些配置,不过在安装并配置好SSRS 以后,就能够为SQL Azure 数据建立许多不一样的报表了。后端

       另外的一种无代码例子是使用Business ConnectivityServices(BCS),其更常见于与外部据系统一块儿使用。BCS 提供了直接与外部系统整合的能力—这些系统既能够是基于ADO.NET 的,也能够是基于Web 服务的。这种能力使得您可以使用SharePoint Designer2010以本地方式链接到SQL Azure,声明式地构建所谓的“外部内容类型”(定义SharePoint和外部数据系统之间的关系的XML 文件)。浏览器

l  SharePoint 中基于代码的解决方案缓存

       在构建基于代码的解决方案时,首先须要作的是从SQL Azure 中取得数据,接着要SharePoint 中对数据进行一些处理。若是以前从事过任何的开发工做的话,就会知道,数据驱动式的编程能够采起许多种不一样的形式。例如,可使用ODBC 或ADO.NET 来与数据库进行交互,这种作法能够采用SQL 查询字符串的形式(例如链接并查询数据库),或采用WCF Data Service(前身为ADO.NET Data Service)的形式,该种形式提供了更丰富的数据绑定和查询类型。例如,能够利用WCF Data Service 来建立出SQL Azure 数据构造的实体数据模型,这种方法使得您可以轻松地使用LINQ 来查询SQL Azure 中的数据。在使用WCF Data Service 时,应该知道的是,并不是SharePoint 支持的全部.NET 客户端技术都支持WCF Data Service。例如,若是打算使用Silverlight,那么可能会但愿选择一种不一样的数据链接方法,或使用WCF 服务代理(确实支持实体数据模型)来抽象到SQL Azure 的调用。对于许多由查询字符串驱动的应用来讲,还可使用SqlDataAdapter 类来构建和执行针对SQL Azure 数据库的SQL 链接字符串和查询。虽然能够这么作,但必须在代码中生成查询字符串,有时候一些复杂的查询会显得至关累赘。SqlDataAdapter 类的使用为数据库的链接提供了一种更为通用的作法;也就是说,这种作法获得了普遍的支持。这一状况减轻了对WCF 服务代理的需求,不过还并未彻底消除使用它们的这种可能性。欲了解更多关于SqlDataAdapter 类的信息,请访问http://msdn.microsoft.com/en-us/library /system.data.sqlclient.sqldataadapter.aspx。安全

       固然,在可以链接上SQL Azure 并能够查询其中的数据以后,在检索数据时就须要对它们作一些处理了,而这就是您要稍加深刻挖掘SharePoint 的地方。在使用SharePoint 时,能够(好比)利用Silverlight、Web 部件、BCS(例如外部列表)、ASP.NET 图表等来表现SQLAzure 中的数据。不过,SharePoint 支持的每种工件所提供的结果都稍有不一样,例如,在涉及BI 解决方案的构建时,Silverlight 就很是方便,由于能够很是轻松地构建和部署流畅的动态UI 体验。这方面的例子有Silverlight 的主题和图表工具包,这些工具包提供了简单的设计加强和不一样的图形化图表功能。Web 部件,SharePoint 中最多见的已开发好的工件之一,也是一种极好的显示数据的方式,可使用Web 部件来给SQL Azure 数据建立可过滤的和可查询的视图。BCS 提供了一种到SQL Azure 的本地链接,这种链接使得最终用户可以管理SQL Azure 数据的进出,同时也容许经过SharePoint 的客户端对象模型来编程链接和利用外部列表中的SQL Azure 数据。ASP.NET Chart 控件则提供了一种丰富的而且可编程的方式来与SQL Azure 进行交互。服务器

        在本文中,您将会用到前面这些方法的一个组合—但不包括Silverlight 在内,该方法会在第7 章中讨论—以构建BI 解决方案。具体来讲,首先会构建一个无代码解决方案:使用BCS 建立一个提供到SQL Azure 的本地链接的外部列表。接着,还要构建一个基于代码的Web 部件,使用ASP.NET Chart 控件来编程汇总和显示来自SQL Azure 的数据。尽管将要构建的应用可使用服务器对象模型,甚至是客户端对象模型来与外部列表数据进行交互(即查询这些数据),不过咱们认为,使用WCF 服务代理来分步讲解数据链接和查询层的抽象过程更有助于说明问题。这样作的话,能够跨多个应用重用WCF 服务。不过,使用的法并不限于本章中描述的这些,因此记住一点,那就是在这一解决方案架构中,SharePoint 对象模型也是一种可能的选择。一样,好比,与其使用DataSet 这一数据构造,还不如在Web 部件内部使用自定义的类来管理和绑定数据。

解决方案架构

       要构建的解决方案的设计很简单,使用SQL Azure 做为后端数据源,并采用一种无代码方法“和”一种以代码为中心的方法来构建两个组成该解决方案的核心BI 应用。无代码方法利用BCS 来整合SQL Azure 和SharePoint,而以代码为中心的方法则利用ASP.NETChart 控件来构建到SQL Azure 数据的自定义链接。BCS 的使用可让您直接链接到SQLAzure,ASP.NET Chart 控件则是利用了WCF 服务代理,WCF 服务代理查询SQL Azure 数据并在SharePoint 中动态生成图表。

       图1提供了该解决方案架构的一个高层面概览。在该图中,ASP.NET Chart 控件用到了一个WCF 服务,该服务执行进一步的SQL Azure 数据库查询工做。须要注意的是,WCF服务是部署在SharePoint 服务器上的;不过,也能够把WCF 服务部署在Windows Azure上。把WCF 服务部署在Windows Azure 上的作法,可以让您在其余应用中和诸如SharePointOnline/Office 365 一类的平台上利用WCF 服务(例如使用某个SharePoint Online 应用中的同一数据来开发基于Silverlight 的图表应用),图中虚线标记的部分表明的就是这一作法。

       WCF 服务中核心的Web 方法是GetAllSalesData,该方法完成主要任务,从SQL Azure 数据库中检索销售数据。BCS 是直接针对SQL Azure 数据源构建的,提供了一个读-写外部列表来管理销售数据。

       在完成这一例子的过程当中,您会注意到SQL Azure 数据库和外部列表之间的桥接关系是经过应用ID 来进行管理的,这有助于管理两套凭证。由于SQL Azure 拥有的是一套不一样于Windows 凭证的凭证,因此不能把当前活动用户的凭证传递过去,必须提供一种方式来验证到SQL Azure 的调用。

       这一架构最终体现为BI 解决方案的两个组成部分:一个提供了到SQL Azure 数据库的读/写访问的外部列表,另外一个提供了数据的汇总销售视图的ASP.NET Chart Web 部件。


图1 BI 解决方案的架构

建立Sales BI 应用

      构建这一BI 应用的第一步是在SQL Azure 中建立销售数据。为了完成这一步骤,必须有一个可供使用的Windows Azure 帐户。若要获取试用帐户,请访问www.microsoft.com/

windowsazure/free-trial/sharepoint-integration/。

1. 建立SQL Azure 数据库

须要建立SQL Azure 数据库以在云端存储销售数据。

(1) 导航至http://windows.azure.com,使用您的Live ID 登陆。

(2) 在左边的导航窗格中,单击“Hosted Services, Storage Account & CDN”,而后选择New Storage Account。

(3) 把新的存储帐户映射到您的订阅(subscription),并为存储帐户提供一个命名空间;另外还须要选择一个区域。完成这些操做后,单击Create 按钮。

(4) 单击Firewall Rules 控件来设置存储帐户的防火墙规则(参见图2)。

这 一规则容许您的计算机链接存储帐户并与之交互。在生产环境中,应该始终确保将其设置为严格定义的IP;但对于概念证实或演示来讲,能够把IP 规则设置得更开放一些。为防火墙规则指定一个名称(例如MyServerFWRule),而后选择IP 地址的范围(例如0.0.0.0-255.255.255.255)。

(5) 在您的门户界面中单击Database 选项卡,而后选择想在其中建立Sales 数据库的订阅。


图2 设置存储帐户的防火墙规则

(6) 单击Create 按钮来建立新的数据库,提供名称(例如TotalSales)并选择版本(选择

Web,这是一种缩减版数据库,是一种更小型、更经济的用法),请记下管理员的用户名和

密码。

(7) 打开SQL Server Management Studio 2008 R2,提供用户名和密码凭证来登陆新的

SQL Azure 实例,完成输入操做后,单击Connect 按钮。

(8) 在链接上以后,单击New Query 按钮。

(9) 在Query 窗口中输入下面的查询,而后单击Execute Query 按钮,这会在TotalSales

数据库中建立名为StoreSales 的新表。

CREATETABLE [StoreSales](

[StoreID][int] IDENTITY(1,1)NOT NULL PRIMARY KEY CLUSTERED,

[StoreName][nvarchar](50)NULL,

[StoreRegion][nvarchar](50)NOT NULL,

[StoreFY08Sales][nvarchar](50)NOT NULL,

[StoreFY09Sales][nvarchar](50)NULL,

[StoreFY10Sales][nvarchar](30)NULL,

[StoreFY11Sales][nvarchar](30)NULL,

[Timestamp][timestamp] NOT NULL

)

如今有了表StoreSales,打算在这个表中填入一些数据。为此,建立另外一个SQL 脚本

来在其中加入几条记录。

(10) 单击New Query 按钮,在Query 窗口中输入下面的脚本,这会在StoreSales 表中

建立一组新的记录。

INSERTINTO [StoreSales]

([StoreName],[StoreRegion],[StoreFY08Sales],[StoreFY09Sales],[StoreFY10

Sales],[StoreFY11Sales])

VALUES

('SeattleDowntown', 'Pac West','12091029','13092802','13291028','14291820'),

('RedmondEastside','Pac West', '32039201','32991821','32003910','33210921'),

('NewYork Upstate', 'North East','22120928','22291092','23309211','23430291'),

('BostonEastgate','North East', '13000902','13445702','13220882','13233211'),

('SanDiego Downtown', 'South West','15561029','16772802','15441028','14981820'),

('OaklandBay','South West', '23043102','23332102','23443192','23998291'),

('OrlandoUniversal', 'South East','31093329','33111802','33295428','34291220'),

('MinnesotaEarling','Mid West', '13099002','13443102','13229972','13946591'),

('OhioState', 'Mid West','12091029','22093302','22291228','22294420'),

('ChicagoMain','Mid West', '33222102','33213102','33223192','33433291'),

('WestVirginia', 'Mid East','14121029','14332802','14121028','14998820'),

('NewOrleans Central','South East', '15011103','15291302','15224092','15221291'),

('JacksonvilleVilla', 'South East','23231029','23000902','23291029','24299288'),

('PortlandDowntown','Pac West', '15220102','15298112','15223302','15332292'),

('SanFrancisco Bay', 'South West','12091029','13092802','13291028','14291820'),

('BellinghamNorth','Pac West', '10112102','1022202','10220121','10993311'),

('HoustonMain', 'Central','12091029','13033202','13112128','14432820'),

('VancouverSouth WA','Pac West', '16654102','16755102','16344192','16332291'),

('KansasCity Downtown','Mid West', '22392012','22302910','23302903','23403920'),

('LosAngeles West', 'South West','12998098','12899878','12998190','13201920'),

('RedwoodSouth','South West', '20029102','20123321','21221092','21221998'),

('GeorgetownCentral', 'Central','31029901','32910928','33321112','34302910'),

('WashingtonDC','Central', '13022212','13118102','13998192','13443291'),

('MadisonSouth', 'Mid West','14191229','14432802','14039028','14221820'),

('GrandForks','Mid West', '22109102','22009102','23100192','21108291'),

('TuslaSouth', 'Mid West','44531029','45443802','45665028','46654820'),

('DallasDowntown','Central', '19989002','18998902','19887992','19129891'),

('BellevueLincoln', 'Pac West','12094454','13009802','13341028','13111820'),

('Detroit','Central','18998902','18556502','18776792','18334391')

(11) 右击StoreSales 表,而后选择Script Table as | SELECT to | New Query EditorWindow,自动生成通用的SELECT 语句(参见图3)


图3 为StoreSales 表生成通用的SELECT 语句

该查询的结果将显示刚才使用INSERT SQL 脚本插入的全部数据(参见图4)。


图4  SELECT 语句的查询结果

SQL Azure 数据库如今已经填入了一些虚构的销售数据,在接下来的内容中,您将(使用BCS)建立一个链接到SQL Azure 数据库的外部列表,并提供一种读/写方式来管理销售数据。

2. 建立外部列表

外部列表动态地加载外部数据,从而让用户可以建立、读取、更新和删除外部系统中的记录。

(1) 首先,须要建立应用ID,应用ID 调停与SQL Azure 之间的安全握手。要建立应用ID,请打开SharePoint CentralAdministration,在Application Management下面,选择Manage ServiceApplications。

(2) 在Secure Store Service 下面,单击Secure Store Service 代理连接。

(3) 在功能区单击New 按钮来建立新的应用ID,该操做会启用一个基于浏览器的包含了三个步骤的向导。

(4) 在Target Application Settings 页面中,输入目标应用ID(例如MyAppID)、显示名称(例如My App ID)以及联系人的电子邮件,而后单击Next 按钮(其余全部内容能够保留默认选项)。

(5) 在Field 页面中,添加用户名和密码。从Field Type 下拉列表中选择User Name 和Password。

(6) 输入SharePoint 站点的一个有效用户(例如administrator)做为应用ID 的管理员,单击OK 按钮完成应用ID 的建立。新的应用ID 如今应该已经列在应用ID 列表中了。

(7) 导航至SharePoint 站点的根一级,在SharePoint Designer 中选择Site Actions | Edit Site。

(8) 在Navigation 窗格中单击External Content Types。

(9) 单击External Content Type。

(10) 提供名称和显示名称(例如MySQLAzureECT),保留默认选项,而后选择“ClickHere to Discover External Data Sources and DefineOperations”。

(11) 单击Add Connection 按钮,从下拉列表中选择SQL Server,而后单击OK 按钮(参见图5)。


图5 添加到外部数据源的链接

(12) 当出现提示框时,输入SQL Azure 服务器的名称和数据库名称,而后为外部内容类型提供显示名称。单击选中Connect withImpersonated Custom Identity 选项,接着在SecureStore Application ID 域中输入以前建立的应用ID 的名称(例如MyAppID)。

(13) 单击OK 按钮以链接SQL Azure(请注意,如今会提示输入SQL Azure 的凭证)。

(14) 在SharePoint Designer 加载数据链接以后,右击表StoreSales,接着选择Create All Operations。

(15) 要建立外部内容类型,必须走完整个向导。请务必单击StoreID,而后单击Map To Identifier,接着再单击Next 按钮两次,也能够选择单击Finish 按钮。

(16) 这些操做完成后,单击Save 按钮。

(17) 如今能够经过单击Create Lists and Form 来使用外部内容类型建立新的列表,在List Name 域中添加列表的名称,保留其余的默认选项,而后单击OK 按钮。

(18) 如今,已经建立好了链接SharePoint 到SQL Azure 的外部内容类型,必须设置容许特定用户访问列表的权限。为此,导航至SharePoint CentralAdministration,而后在Manage

Service Applications 下单击Business Data Connectivity Services。

(19) 单击刚才建立的外部内容类型,而后单击Set Object Permissions。

(20) 在显示的对话框中输入用户以及但愿赋予输入用户的权限,如图6 所示。


图6 选择用户并为用户分配权限

如今能够导航回到SharePoint 列表并从新加载列表,这时须要输入SQL Azure 的权限

许可来进行身份验证才行(参见图7),而在这以后,凭证就会缓存在服务器中。


图7 输入SQL Azure 的权限许可来加载外部列表

如今,最终的外部列表的外观应该相似于图8 中给出的内容。

 

最终的外部列表


图8 最终的外部列表

如今已经完成了外部列表的生成,这是解决方案的无代码部分。咱们来继续讲解一种更多的是以代码为中心的作法。在接下来的内容中,您首先会建立一个WCF 服务来与SQLAzure 数据库进行交互,而后再建立一个Web 部件来使用该服务。

 

本文摘自:《SharePoint 2010云计算解决方案》 清华大学出版社

           ISBN: 9787302295426

           订价:58元

样章试读:http://product.china-pub.com/3684029

相关文章
相关标签/搜索