自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析基于WCF技術(shù)的報(bào)表服務(wù)擴(kuò)展

開(kāi)發(fā) 后端
本文將為大家介紹的是基于WCF技術(shù)的報(bào)表服務(wù)擴(kuò)展,希望通過(guò)本文能讓大家對(duì)這一前端技術(shù)有所了解。

本文將講到WCF技術(shù)的報(bào)表服務(wù)擴(kuò)展,51CTO開(kāi)發(fā)頻道向您推薦《WCF開(kāi)發(fā)基礎(chǔ)》技術(shù)專(zhuān)題。

為什么要進(jìn)行擴(kuò)展呢?擴(kuò)展的目的是為了和自己現(xiàn)有的系統(tǒng)整合在一起。比如現(xiàn)有系統(tǒng)已經(jīng)很復(fù)雜,能處理很多業(yè)務(wù),設(shè)計(jì)系統(tǒng)的開(kāi)發(fā)人員沒(méi)有充分考慮到技術(shù)的變更,當(dāng)一項(xiàng)新技術(shù)推出以后,為了能把新技術(shù)應(yīng)用到舊有的系統(tǒng)中,我們需要對(duì)新技術(shù)做一些擴(kuò)展,以方便應(yīng)用到我們的現(xiàn)有系統(tǒng)中。

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

新技術(shù)一般都留下有擴(kuò)展的接口和方法,對(duì)新技術(shù)研究充分,寫(xiě)點(diǎn)擴(kuò)展。既能應(yīng)用新技術(shù)的方便,又可以讓現(xiàn)在的系統(tǒng)不作任何改動(dòng),這種方法值得向大家推薦。當(dāng)然,作為主程序員的你,一般要犧牲數(shù)個(gè)周末的時(shí)間去研究新技術(shù),而且關(guān)于做擴(kuò)展(Extension)類(lèi)的知識(shí)庫(kù)和文章,一般要借助于老外的英語(yǔ)博客才能找到答案。人家分工細(xì),自然在各方面都做的比較好。

做報(bào)表,一般是直接用SQL語(yǔ)句,生成一個(gè)XSD的架構(gòu)文件,它包含字段。然后把字段拖動(dòng)到報(bào)表中,形成報(bào)表設(shè)計(jì)文件,運(yùn)行時(shí)再給報(bào)表傳送數(shù)據(jù)即可。這里介紹的方法,是把SQL語(yǔ)句包裝到一個(gè).NET Assembly中,通過(guò)調(diào)用Assembly,間接調(diào)用SQL來(lái)設(shè)計(jì)報(bào)表。

數(shù)據(jù)處理方面的擴(kuò)展,我還了解到如何從Web Services中取數(shù)據(jù)字段,然后應(yīng)用于報(bào)表設(shè)計(jì)。這篇文章是介紹如何從.NET 服務(wù)器取數(shù)據(jù),然后應(yīng)用于報(bào)表設(shè)計(jì)。

目的:搭建一個(gè)報(bào)表設(shè)計(jì),開(kāi)發(fā)的工具箱

基于WCF制作的服務(wù)器,負(fù)責(zé)抓取數(shù)據(jù);報(bào)表設(shè)計(jì)器向服務(wù)器發(fā)送查詢語(yǔ)句請(qǐng)求,接受服務(wù)器返回值

原本的SQL查詢語(yǔ)句的寫(xiě)法是這樣:

SQL查詢語(yǔ)句

現(xiàn)在我們換成這樣的查詢數(shù)據(jù)庫(kù)的寫(xiě)法

查詢數(shù)據(jù)庫(kù)的寫(xiě)法 

也就是這樣的查詢語(yǔ)句的寫(xiě)法

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

其余的報(bào)表制作,部署的步驟都不變,我改變的是數(shù)據(jù)處理部分。

好處:充分發(fā)揮T_SQL集合計(jì)算的能力和C#在數(shù)值計(jì)算和字符串處理方面的威力

特別是一些計(jì)算,字符串方面的處理,用SQL語(yǔ)句可能不方便,要寫(xiě)很多的T_SQL代碼。但是如果用這種方法,充分發(fā)揮程序語(yǔ)言(C#)和數(shù)據(jù)庫(kù)語(yǔ)言(T_SQL)的長(zhǎng)處,把集合運(yùn)算部分用T_SQL來(lái)處理,計(jì)算和字符文本的處理則留在C#代碼中。

設(shè)計(jì)擴(kuò)展項(xiàng)目 Data Process Extension(Class Library)

設(shè)計(jì)擴(kuò)展項(xiàng)目 

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

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

它是用來(lái)為這篇文章熱身用的。

設(shè)計(jì)服務(wù)器項(xiàng)目(Console Project)

image 

它只有一個(gè)Program文件,代碼如下

設(shè)計(jì)服務(wù)器項(xiàng)目

這是打開(kāi)服務(wù)器的代碼。通常合適的做法是把Console項(xiàng)目類(lèi)型轉(zhuǎn)化為Windows Services.

為了方便調(diào)試擴(kuò)展項(xiàng)目,我先寫(xiě)一個(gè)測(cè)試客戶端項(xiàng)目,以方便調(diào)試問(wèn)題。

擴(kuò)展項(xiàng)目測(cè)試客戶端(Console)

 擴(kuò)展項(xiàng)目測(cè)試客戶端

主要代碼如下

  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.    }  

打開(kāi)報(bào)表服務(wù)器,運(yùn)行這個(gè)項(xiàng)目,以驗(yàn)證服務(wù)器和客戶端是否可以正常通信。

打開(kāi)報(bào)表服務(wù)器

運(yùn)行任何與擴(kuò)展相關(guān)的程序,必須先打開(kāi)這個(gè)服務(wù)器。

查詢項(xiàng)目(Class Library)

這個(gè)項(xiàng)目把SQL語(yǔ)句封裝成程序集,供報(bào)表服務(wù)器反射調(diào)用之,返回?cái)?shù)據(jù)集給客戶端。

Quotation類(lèi)的代碼如下

查詢項(xiàng)目 

您可能已經(jīng)注意到了,GetCustomerList方法就是以下SQL語(yǔ)句的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  

至此,所有的服務(wù)器端項(xiàng)目都設(shè)計(jì)完畢,您需要部署Extension項(xiàng)目。

如果不熟悉Extension的部署,請(qǐng)參考這篇文章

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

下面進(jìn)入應(yīng)用開(kāi)發(fā)部分,打開(kāi)BIDS,新建一個(gè)報(bào)表項(xiàng)目,添加報(bào)表項(xiàng)。

在數(shù)據(jù)連接字符串部分,糊弄選開(kāi)發(fā)的Extension,輸入本機(jī)服務(wù)器地址作為連接字符串

連接字符串 

撰寫(xiě)查詢語(yǔ)句

撰寫(xiě)查詢語(yǔ)句 

執(zhí)行查詢,刷新字段以用來(lái)設(shè)計(jì)報(bào)表

執(zhí)行查詢

下面的步驟與以通常開(kāi)發(fā)報(bào)表的方法沒(méi)有任何不同。

進(jìn)入布局頁(yè)面,設(shè)計(jì)報(bào)表

設(shè)計(jì)報(bào)表

預(yù)覽一下效果,輸入?yún)?shù)CustomerID:TRADH

預(yù)覽效果 

這樣,終于實(shí)現(xiàn)了這種結(jié)構(gòu)的報(bào)表設(shè)計(jì)擴(kuò)展。

關(guān)于報(bào)表設(shè)計(jì)和開(kāi)發(fā),我還整理了如下文章

實(shí)現(xiàn)多國(guó)語(yǔ)言的Reporting Services項(xiàng)目 ,用于講解與報(bào)表全球化相關(guān)的設(shè)計(jì)方法

如果你不熟悉基本的報(bào)表開(kāi)發(fā),設(shè)計(jì)流程,這里有詳細(xì)的介紹

ASP.NET RDLC 報(bào)表開(kāi)發(fā)詳解

如果部署時(shí)有問(wèn)題,可參考這篇文章

部署含有ReportView的控件的ASPX頁(yè)面時(shí)出現(xiàn)錯(cuò)誤

這個(gè)系列的文章比較雜亂,沒(méi)有系統(tǒng)化。

園子里有朋友征求關(guān)于Reporting Services的開(kāi)發(fā)教程或總結(jié),這個(gè)主意不錯(cuò)。很早以前,園子里有位報(bào)表的高手:蠟人張。我那時(shí)就是看他的文章,才逐步熟悉Reporting Services技術(shù)的。真的很感激這些無(wú)私奉獻(xiàn)的朋友。

關(guān)于驗(yàn)證擴(kuò)展(Forms Authentication),可以參考這位朋友的文章:

實(shí)現(xiàn)SQL2008 Reporting Service的表單驗(yàn)證

還有其它方面的擴(kuò)展。比如做一個(gè)報(bào)表Item的擴(kuò)展,做一個(gè)barcode,作為報(bào)表項(xiàng),與常用的Table,Matrix一樣,被報(bào)表重復(fù)使用。關(guān)于這個(gè)主題,你可以參考PolygonsCustomReportItem

項(xiàng)目,把barcode技術(shù)集成到Reporting Services中

原文標(biāo)題:報(bào)表服務(wù)擴(kuò)展:基于WCF技術(shù)的報(bào)表服務(wù)擴(kuò)展

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

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2010-02-24 10:41:28

WCF服務(wù)保護(hù)

2009-11-05 11:23:08

WCF宿主

2011-05-19 10:39:26

2010-02-25 13:35:27

WCF tcpTrac

2009-03-16 09:16:13

行為擴(kuò)展WCF.NET

2012-03-01 10:28:09

2022-08-06 08:58:40

5G5G通信網(wǎng)絡(luò)企業(yè)專(zhuān)網(wǎng)

2023-06-18 19:21:04

技術(shù)架構(gòu)服務(wù)網(wǎng)格

2009-11-02 12:46:15

Winform

2009-11-06 15:41:25

WCF自托管宿主

2023-12-18 08:57:22

GAN網(wǎng)絡(luò)

2010-02-26 15:07:20

WCF單例服務(wù)

2011-05-19 10:57:21

2010-03-01 18:04:35

WCF配置綁定

2010-02-22 10:52:34

PDA訪問(wèn)WCF

2009-11-06 14:08:06

WCF行為擴(kuò)展

2010-03-02 09:24:22

WCF變更行為

2009-08-29 16:45:27

2009-08-10 17:36:17

C#擴(kuò)展方法

2023-11-11 19:34:30

攝像頭慢直播
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)