成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析基于WCF技術的報表服務擴展

開發 后端
本文將為大家介紹的是基于WCF技術的報表服務擴展,希望通過本文能讓大家對這一前端技術有所了解。

本文將講到WCF技術的報表服務擴展,51CTO開發頻道向您推薦《WCF開發基礎》技術專題。

為什么要進行擴展呢?擴展的目的是為了和自己現有的系統整合在一起。比如現有系統已經很復雜,能處理很多業務,設計系統的開發人員沒有充分考慮到技術的變更,當一項新技術推出以后,為了能把新技術應用到舊有的系統中,我們需要對新技術做一些擴展,以方便應用到我們的現有系統中。

追隨新技術改系統是比較笨的方法。以例子為證,一開始,系統用Remoting作為通信框架,WCF橫空出世后,又把自己的系統用WCF技術重寫一遍通信框架。這種做法很累,一不小心及到業務方面的修改,系統的穩定性大打折扣。

新技術一般都留下有擴展的接口和方法,對新技術研究充分,寫點擴展。既能應用新技術的方便,又可以讓現在的系統不作任何改動,這種方法值得向大家推薦。當然,作為主程序員的你,一般要犧牲數個周末的時間去研究新技術,而且關于做擴展(Extension)類的知識庫和文章,一般要借助于老外的英語博客才能找到答案。人家分工細,自然在各方面都做的比較好。

做報表,一般是直接用SQL語句,生成一個XSD的架構文件,它包含字段。然后把字段拖動到報表中,形成報表設計文件,運行時再給報表傳送數據即可。這里介紹的方法,是把SQL語句包裝到一個.NET Assembly中,通過調用Assembly,間接調用SQL來設計報表。

數據處理方面的擴展,我還了解到如何從Web Services中取數據字段,然后應用于報表設計。這篇文章是介紹如何從.NET 服務器取數據,然后應用于報表設計。

目的:搭建一個報表設計,開發的工具箱

基于WCF制作的服務器,負責抓取數據;報表設計器向服務器發送查詢語句請求,接受服務器返回值

原本的SQL查詢語句的寫法是這樣:

SQL查詢語句

現在我們換成這樣的查詢數據庫的寫法

查詢數據庫的寫法 

也就是這樣的查詢語句的寫法

  1. assembly=Tracking.Report.Quotation;   
  2. class=Tracking.Report.Quotation;   
  3. method=GetCustomerList(@Customer);  

其余的報表制作,部署的步驟都不變,我改變的是數據處理部分。

好處:充分發揮T_SQL集合計算的能力和C#在數值計算和字符串處理方面的威力

特別是一些計算,字符串方面的處理,用SQL語句可能不方便,要寫很多的T_SQL代碼。但是如果用這種方法,充分發揮程序語言(C#)和數據庫語言(T_SQL)的長處,把集合運算部分用T_SQL來處理,計算和字符文本的處理則留在C#代碼中。

設計擴展項目 Data Process Extension(Class Library)

設計擴展項目 

如果你不熟悉這里面的接口和方法,請參考我的這篇文章,

Reporting Services Extension:File Share Data Processing Extension全程指南

它是用來為這篇文章熱身用的。

設計服務器項目(Console Project)

image 

它只有一個Program文件,代碼如下

設計服務器項目

這是打開服務器的代碼。通常合適的做法是把Console項目類型轉化為Windows Services.

為了方便調試擴展項目,我先寫一個測試客戶端項目,以方便調試問題。

擴展項目測試客戶端(Console)

 擴展項目測試客戶端

主要代碼如下

  1. class Program   
  2.    {   
  3.        static void Main(string[] args)   
  4.        {  
  5.  
  6.            ChannelFactory<IServiceManager> scf;   
  7.            scf = new ChannelFactory<IServiceManager>(   
  8.                    new NetTcpBinding(), "net.tcp://localhost:4000/Reporting");   
  9.            IServiceManager s;   
  10.            s = scf.CreateChannel();            
  11.           string assembly = "Tracking.Report.Quotation";   
  12.            string cclass = "Tracking.Report.Quotation";   
  13.            string method = "GetCustomerList";   
  14.            object[] arg = new object[] { "TRADH" };      
  15.            DataSet ds = s.GetDataSet(assembly, cclass, method, arg);   
  16.            if (ds != null)   
  17.                Console.WriteLine("Get Data :{0}", ds.Tables[0].Rows.Count);   
  18.            Console.ReadLine();            
  19.        }   
  20.    }  

打開報表服務器,運行這個項目,以驗證服務器和客戶端是否可以正常通信。

打開報表服務器

運行任何與擴展相關的程序,必須先打開這個服務器。

查詢項目(Class Library)

這個項目把SQL語句封裝成程序集,供報表服務器反射調用之,返回數據集給客戶端。

Quotation類的代碼如下

查詢項目 

您可能已經注意到了,GetCustomerList方法就是以下SQL語句的C#封裝

  1. SELECT [CustomerID],[CompanyName],[ContactName]   
  2.       ,[ContactTitle],[Address],[City]   
  3.       ,[Region] ,[PostalCode],[Country]   
  4.       ,[Phone] ,[Fax]   
  5.   FROM [Northwind].[dbo].[Customers]   
  6. WHERE CustomerID=@CustomerID  

至此,所有的服務器端項目都設計完畢,您需要部署Extension項目。

如果不熟悉Extension的部署,請參考這篇文章

Reporting Services Extension:File Share Data Processing Extension全程指南

下面進入應用開發部分,打開BIDS,新建一個報表項目,添加報表項。

在數據連接字符串部分,糊弄選開發的Extension,輸入本機服務器地址作為連接字符串

連接字符串 

撰寫查詢語句

撰寫查詢語句 

執行查詢,刷新字段以用來設計報表

執行查詢

下面的步驟與以通常開發報表的方法沒有任何不同。

進入布局頁面,設計報表

設計報表

預覽一下效果,輸入參數CustomerID:TRADH

預覽效果 

這樣,終于實現了這種結構的報表設計擴展。

關于報表設計和開發,我還整理了如下文章

實現多國語言的Reporting Services項目 ,用于講解與報表全球化相關的設計方法

如果你不熟悉基本的報表開發,設計流程,這里有詳細的介紹

ASP.NET RDLC 報表開發詳解

如果部署時有問題,可參考這篇文章

部署含有ReportView的控件的ASPX頁面時出現錯誤

這個系列的文章比較雜亂,沒有系統化。

園子里有朋友征求關于Reporting Services的開發教程或總結,這個主意不錯。很早以前,園子里有位報表的高手:蠟人張。我那時就是看他的文章,才逐步熟悉Reporting Services技術的。真的很感激這些無私奉獻的朋友。

關于驗證擴展(Forms Authentication),可以參考這位朋友的文章:

實現SQL2008 Reporting Service的表單驗證

還有其它方面的擴展。比如做一個報表Item的擴展,做一個barcode,作為報表項,與常用的Table,Matrix一樣,被報表重復使用。關于這個主題,你可以參考PolygonsCustomReportItem

項目,把barcode技術集成到Reporting Services中

原文標題:報表服務擴展:基于WCF技術的報表服務擴展

鏈接:http://www.cnblogs.com/JamesLi2015/archive/2010/03/29/1699972.html

責任編輯:彭凡 來源: 博客園
相關推薦

2010-02-24 10:41:28

WCF服務保護

2009-11-05 11:23:08

WCF宿主

2011-05-19 10:39:26

2010-02-25 13:35:27

WCF tcpTrac

2009-11-02 12:46:15

Winform

2023-06-18 19:21:04

技術架構服務網格

2022-08-06 08:58:40

5G5G通信網絡企業專網

2012-03-01 10:28:09

2009-03-16 09:16:13

行為擴展WCF.NET

2009-11-06 15:41:25

WCF自托管宿主

2023-12-18 08:57:22

GAN網絡

2010-02-26 15:07:20

WCF單例服務

2011-05-19 10:57:21

2010-03-02 09:24:22

WCF變更行為

2009-11-06 14:08:06

WCF行為擴展

2010-02-22 10:52:34

PDA訪問WCF

2010-03-01 18:04:35

WCF配置綁定

2009-08-29 16:45:27

2009-08-10 17:36:17

C#擴展方法

2023-11-11 19:34:30

攝像頭慢直播
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠综合网| 亚洲一区二区精品视频 | 中文字幕在线一区二区三区 | 日韩喷潮 | 另类视频区 | 欧美福利 | 96av麻豆蜜桃一区二区 | 91毛片在线看 | 欧美福利 | 亚洲精品国产精品国自产在线 | 成年人在线视频 | 国产精品久久久久久久久久久久 | 在线黄av | 综合久久综合久久 | 国产精品中文字幕一区二区三区 | 久久精品在线 | 国产精品视频网 | 91精品国产乱码久久久久久久久 | 成人国产在线视频 | 最新超碰| 国产一区免费视频 | 午夜电影福利 | 欧美久久久网站 | 丁香综合 | 爱草视频| 97免费视频在线观看 | 亚洲精品毛片av | 成人影院在线观看 | 成人午夜在线视频 | 亚洲瑟瑟| 日韩精品在线播放 | 午夜大片| 国产aa| 在线视频亚洲 | 久久区二区| 成人国产精品色哟哟 | 亚洲一区二区三区四区五区午夜 | 成人av电影天堂 | 久久国产成人午夜av影院武则天 | 99热在线观看精品 | 欧美 日韩 在线播放 |