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元