Crystal 三種報表解決方案大對比:.NET 對象模型,報表應用服務器對象模型,水晶企業對象模型
2024-07-10 13:03:41
供稿:網友
菜鳥學堂:
概述
對于使用 .net 平臺的 web 應用程序開發,crystal decisions 為開發者提供了三種愈加高級的報表對象模型:
1. 水晶報表 visual studio .net 版 (.net) 對象模型:捆綁在微軟 visual studio .net 和水晶報表 9 開發者版及高級版中。
2. 新增的報表應用服務器 (ras) 對象模型:捆綁在水晶報表 9 開發者版及高級版中。
3. 水晶企業 (crystal enterprise) (ce) 對象模型:在水晶企業 9 中單獨提供,而且也可以通過新的 .net sdk 使用。
本文檔意圖比較 .net, ras, 及 ce 對象模型,并且對于每種對象模型的使用時機提供指導。
目錄
什么是 .net 對象模型?
什么是報表應用服務器對象模型?
什么是水晶企業對象模型?
應用程序開發
處理性能
用戶請求
組件 vs. 獨立服務器
報表組件 vs. 報表服務器通訊
報表創建 api
擴展性
將 .net 應用程序遷移到 ras
什么是 .net 對象模型?
.net 對象模型包含在水晶報表 visual studio .net 版和水晶報表 9 開發者版及高級版。
最初設計和開發 .net 對象模型,是作為直接捆綁進微軟 visual studio .net 產品的集成組件。該捆綁技術是基于水晶報表 9 特性的子集,包括一個集成的報表設計器以及一個報表和查看器對象模型……
水晶報表 9,是具有豐富特色的,對水晶報表 visual studio .net 版的升級,包括上述 .net 組件以及眾多附加的新特性。除此之外,.net 對象模型還被更新以提供眾多增強特性。雖然本文的焦點是對比 .net 對象模型和 ras 對象模型,我們仍然在附錄 a 中包含了水晶報表 visual studio .net 版和水晶報表 9 的特性對比。
什么是報表應用服務器對象模型?
報表應用服務器 (ras) 是一個新增并且強大的對象模型。ras 屬于客戶/服務器系統,能夠在多層環境中進行報表創建,處理以及操作。它由兩個基本組件構成:ras 服務器和提供服務器接口的軟件開發工具包 (sdk) 。由于 ras 被設計成兩個分離的組件,報表處理可以從 web 服務器上卸載。
圖 1:報表應用服務器的架構概覽
ras 和查看器 sdk 包含許多庫,以使你構造 web 報表解決方案。這些庫可以在你的服務器端代碼 (asp, aspx, jsp 或者 java servlets) 中使用,以提供報表應用服務器的接口。從這種意義上說,sdk 構成了這個客戶/服務器系統的客戶端。
ras 提供了設計,查看,處理及定制報表的服務。客戶創建的程序可以使用該 sdk 與服務器通訊。ras 包含在水晶報表 9 開發者版和高級版,以及水晶企業 9 中。
什么是水晶企業對象模型?
水晶企業 9 對象模型是最高級的企業報表,分析和 web 交付對象模型,可以被采用 .net 平臺的組織使用……水晶企業提供了一個健壯的服務器端報表平臺,并且包含 ras 對象模型。水晶企業允許組織購買“即拆即用”(out-of-the-box) 平臺,相當于提供給組織將開發資源集中到高度定制化前端的能力,前端與水晶企業后端通訊。這通過調控水晶企業 .net sdk 來實現。設想做如下比較:通過添加新特性或者增強現有特性來滿足需求 vs. 必須構造全部特性。例如,水晶企業提供報表調度“即拆即用”(out-of-the-box),因此核心報表可以在任何時間運行,以任何格式 (比如 excel, pdf, xml, word, 等等) 提供,并且交付到任何位置 (比如:email 賬號, ftp 站點, 打印機, 等等)。
應用程序開發
.net 對象模型和 ras 對象模型都能夠以格式化報表頁的形式顯示輸出。它們能夠打開報表,保存報表,改變分組,并傳遞參數,雖然是使用不同的語法。然而,ras 增加了運行時創建和修改報表的能力,允許用戶自助 - 定制他們企業數據的視圖。它還提供從報表中提取行數據的能力。這將允許你重用包含在報表里的信息。例如,你可以創建一個世界范圍的銷售報表,有計劃的從中提取數據,并將數據轉換成 xml,與合作伙伴共享。你還能夠利用這種原理讓最終用戶在報表中搜索特定數據,并將結果導出成其它格式,與他人共享。
.net 對象模型和 ras 對象模型定義了報表格式化和數據連通性,而 ce 對象模型則關注集中式的,企業范圍的報表管理。ce 對象模型定義了如何調度報表,如何存儲報表“快照”,授權和驗證系統的管理,等等。
或許,闡明 .net,ras,及 ce 對象模型之間差別的最佳方式是給出一個簡化的圖表,對比三種對象模型的附加特性以及增強的企業級可靠性。
通常的方針是:
●.net 對象模型推薦小型工作組項目使用,即只有相對直接的報表需求 - 例如:較小的報表,較少的用戶請求報表,等等。該技術是應用程序的一個組件,并且可以通過附加硬件來縮放 - 通過附加處理器向上擴充,以及通過附加服務器向外擴充。
●ras 對象模型推薦中型的部門級應用使用,即需要卸下報表處理,并且/或者要讓最終用戶個性化數據的視圖,這通過運行時創建和修改報表實現。
●ce 對象模型推薦給關鍵任務型的、中型至企業規模的應用。該類型的應用程序處理大量來自不同數據源的數據,并且為用戶展現信息以提供決策支持。通常情況下,有大量報表需要精確的調度和負載平衡,以確保企業的信息基礎設施沒有超負荷。這些應用程序還需要以多種數字格式將信息交付到多種最終用戶設備。安全,容錯,系統管理及審核都屬于關鍵性需求。
處理性能
用戶請求
在水晶報表 9 中, .net 和 ras 都作了技術上的限制,只能接受三個并發請求 - 比如,第一頁查看,導出,深化,打印,等等。可是在請求處理上,它們有明顯的不同。這些差別能夠影響總體系統性能和規模。就水晶報表 visual studio .net 版而言,超過三個請求閥值的請求將會重試,直到三個進行中請求的任意一個完成或者瀏覽器超時。ras,恰恰相反,將排隊第4,第5,第6,等等請求。沒有預設的超時限制,隨后的請求也不會失敗。ras 也包含,即拆即用的 (out of the box),報表緩存功能,以最小化多余的數據庫輪詢 (round-trips)。這將提高服務器性能,相對于水晶報表 visual studio .net 版組件而言。
注意:為了支持無限的用戶請求,可能需要額外購買處理器許可證。
組件 vs. 獨立服務器
.net 是一種報表組件,它作為 web 程序的組成部分被安裝,處于微軟互聯網信息服務 (iis) 之上。既然創建 .net 報表組件的目的是用于小規模的工作組應用,有強烈報表處理需求的客戶可能會遭遇無法接受的系統吞吐量。而缺少隊列和緩存功能,又使 .net 報表組件不適合企業規模的信息分發。另外一個變數則是 web 程序的 cpu 負荷。因為 .net 報表組件是 web 程序的組成部分,它和你的程序消耗同樣的資源。
對比之下,ras 針對 web 設計。報表處理被卸載到獨立的應用程序層,從而帶來了更好的總體性能。通過在獨立服務器上運行 ras,性能將會提高,因為報表處理不再受制于應用服務器的進程。
注意:雖然不是必需,仍然推薦你在單獨的服務器上運行 ras,以便在應用層之間提供更好的可縮放性和功能劃分。
在服務器上,ras 也可以被分配到特定數目的處理器上運行。這使得開發者能夠創建滿足性能要求并且最節省成本的解決方案。因為 .net 對象模型必須安裝到 web 服務器上,它不能針對特定處理器。如果需要處理器許可證,安裝應用程序的每個處理器都需要購買。
對于 ras,你只能安裝所購買的開發者版或者高級版的一個副本。如果你購買了兩個高級版的水晶報表,你可以安裝兩個分離的 ras,但是不能通過把它們鏈接到網站群 (web farm) 里來提高應用程序的性能 - 除非從 crystal decisions 購買了許可證。
對于所購買的開發者版或者高級版,.net 報表組件可以被安裝到多個服務器,只要不通過把它們連結到網站群 (web farm) 或者網站園 (web garden) 來縮放你的應用程序,以突破 3 個請求的限制 - 除非從 crystal decisions 購買了網站群 (web farm) 或者網站園 (web garden) 許可證。
報表組件 vs. 報表服務器通訊
.net 報表組件是“繁瑣”的。每一個事務 - 比如,設置參數或者字體 - 都將招致訪問組件的額外往返旅行。如果報表很復雜,這將導致效率低下(例如:訪問大量的數據,連結到多個數據庫,執行高級命令,等等)。相反,ras 緩沖請求,并且批處理事務。多個操作將組合成一次服務器操作,因而降低了效率損失。
擴展性
盡管可以作為獨立產品使用,ras 對象模型仍然是水晶企業對象模型的組成部分。這使得 ras 應用程序的開發者可以在未來無縫的遷移他們的程序,以便利用水晶企業的其它服務,包括:
●調度
●用戶,報表和數據安全
●報表和實例管理
●自動集群,負載平衡,以及容錯
●基于 web 的系統管理和配置
●分析和特別報表 (ad hoc reporting)
●自動分發到多種格式和目標
僅需少量的編程就可以改變 ras 程序來利用這些附加的服務。
相反,.net 報表對象模型沒有與水晶企業家族共享同一個對象模型。這意味著為了支持 crystal 服務,使用 .net 報表組件設計的應用程序需要完全重寫。這被證明是昂貴而且資源密集的,所以組織應該在當前的開發計劃中考慮未來的需求。
將 .net 應用程序遷移到 ras
盡管將應用程序從 .net 對象模型轉換到 ras 要卷入初期的工作,但也會獲得本文中所概括的顯著優點。在 www.crystaldecisions.com/devzone 中有許多實例應用程序,可以指導你完成遷移過程。