文档介绍:SSRS扩展插件   在ReportingServices4:WebService中,我们介绍的是SSRS可编程性的一个方面WebService,这篇随笔继续介绍RS可编程性的另一个方面——Extensions,Microsoft的官方文档称之为“扩展插件”。   说到Microsoft的官方文档,有点废话要说:我们知道,Oracle的产品很好,但是它被人诟病的地方是产品文档太烂,当然不是说没有中文文档,而是说它的文档(无论中文还是英文)不容易被阅读。至于Microsoft的官方文档,当然主要是指MSDN了,Microsoft英文网站上已经开始提供SQLServer2005BooksOnline(July2006)”下载了,在这个页面上改变一下语言为简体中文,就变成了SQLServer2005联机丛书(2006年4月),感情我们中文文档要比英文文档落后仨月呀。当然了,这是玩笑话,我倒宁愿相信是Microsoft只是工作有点滞后而已,事实上,我装了4月的文档看了一下,东西还是都有的,只是有的没有翻译成中文而已。然而,当我尝试阅读这些英文文档的时候,发现有些东西说的不是很清楚,关联性比较差。当然了,这里面不排除中英文写作****惯的差异以及我的阅读能力的问题。至于前面扯到的Oracle文档的问题,源于最近读Microsoft的一些已经翻译成中文的文档总有一种以前读Oracle文档的错觉,往往不知所云,很是郁闷。   在设计SSRS的结构时,Microsoft考虑到了可能出现的用户需求(这种需求来源于商业报表的复杂性),并为开发人员预留了充分的扩展空间,使得开发人员可以使用托管代码扩展SSRS的功能,程序集。目前,Microsoft提供的SSRSExtensions主要有:数据处理扩展插件(DataProcessingExtension)、传递扩展插件(DeliveryExtension)、身份验证扩展插件(SecurityExtension)以及呈现扩展插件(RederingExtension)。为什么说“目前”呢,呵呵,这是因为我在浏览Microsoft的文档的时候发现:一开始的时候,Microsoft只提供了前两种扩展,后两种扩展插件是后来才出现的,这里面不排除是后两种扩展插件的文档是后来才出现的可能,当然也不排除Microsoft将来会推出其它的针对SSRS的扩展插件的可能。图1SSRS架构   上图是根据http://img./sql/reporting/productinfo/,四个绿色背景鹅黄色高亮显示部分所指的就是Extensions的四种主要分类,它们分布在整个报表生命周期(报表制作、报表管理、报表传输以及报表安全)的各个不同阶段。图中的“SSRS配置目录”在原文中是“SQLServerCatalog”,单从名称来看,这个是非常不容易理解的,另外很多可以找到的关于SSRS的PPT都引用了这个图,可惜没有现场听过他们的讲座,不是很明白它的意思。不过,据我的猜想,“SQLServerCatalog”应该指的是SSRS的配置信息,另一种可以替换的名称是“ReportServerDatabase”,具体点就是在安装、配置SSRS的时候在数据库引擎中生成的两个数据库ReportServer和ReportServerTempDB,这里面存储着报表服务器使用的信息,包括报表定义、元数据、缓存报表、快照、相关的资源、安全设置、帐户信息、共享计划以及有关Extensions的信息等,具体的内容可以参考ManagementStudio中名为ReportServer的数据库。至于这一点,似乎也可以在图2中得到证实。图2SSRS架构关系图(来源:http://msdn2.//library/)   图2比图1更清晰地描绘了SSRS的架构,特别地标明了几种Extensions与其它SSRS组件之间的关系。至于其中的“报表处理扩展插件(ReportProcessingExtension)”比较特殊,将在下面提到。   对于报表服务器来说,必须至少同时具备一个身份验证扩展插件、一个数据处理扩展插件和一个呈现扩展插件,而传递扩展插件是可选的。   对于开发人员来说,在研究和使用SSRS中已有插件的同时,总是希望可以自己通过扩展插件来扩展SSRS的功能,下面就从“自定义”的角度阐述一下扩展插件的功能(即图1中红色黑体标志的“自定义”):   1、数据处理扩展插件——商业报表的数据源很可能是多种多样的,并不局限于SSRS对数据源的现有支持。例如,组织很可能希望从某种固定格式的平面文件中获取数据,这个时候开发人员可以利用数据处理扩展插件完成针对这种特定平面文件的数据获取:打开到数据源的链接