成人免费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

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

2009-11-05 11:23:08

WCF宿主

2010-02-24 10:41:28

WCF服務保護

2011-05-19 10:39:26

2010-02-25 13:35:27

WCF tcpTrac

2012-03-01 10:28:09

2022-08-06 08:58:40

5G5G通信網絡企業專網

2023-06-18 19:21:04

技術架構服務網格

2009-11-02 12:46:15

Winform

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-02-22 10:52:34

PDA訪問WCF

2010-03-01 18:04:35

WCF配置綁定

2010-03-02 09:24:22

WCF變更行為

2009-11-06 14:08:06

WCF行為擴展

2009-08-29 16:45:27

2009-08-10 17:36:17

C#擴展方法

2023-11-11 19:34:30

攝像頭慢直播
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产视频 | 日韩欧美一区二区三区 | 日韩在线视频免费观看 | 久久久久欧美 | 日韩综合网 | 亚洲精品v日韩精品 | 欧美在线一区二区三区 | www.精品国产 | 91文字幕巨乱亚洲香蕉 | 中文字幕在线精品 | 久久久久国产精品www | 天天干b| 一区二区国产精品 | 亚洲性人人天天夜夜摸 | 成人无遮挡毛片免费看 | 久久国产精彩视频 | а天堂中文最新一区二区三区 | 国产精品成人在线观看 | 四虎影院在线免费观看 | 国产午夜精品一区二区三区四区 | 国产成人99久久亚洲综合精品 | 免费黄色av | 亚洲免费精品 | 日本aaa视频 | 天堂中文av | 91视频91| 日本黄视频在线观看 | 日韩快播电影网 | 一级特黄在线 | 国产精品成人一区二区三区 | 99热精品在线 | 日本三级全黄三级a | 毛片免费视频 | 欧美又大粗又爽又黄大片视频 | 偷拍自拍网 | 黄色一级免费观看 | 黄色大片在线视频 | 成人在线视频免费观看 | 成人综合久久 | 黑人一级黄色大片 | 亚洲一区二区三区四区五区中文 |