使用相同的 ReportingService2010 对象调用不同的服务器
Calling different servers with the same ReportingService2010 object
我有两个 SSRS 服务器 运行 相同的配置。好吧,实际上是三个。我们称他们为:
- 报表服务器 A
- 报表服务器 A 测试
- 报表服务器 B
现在,我可以使用 web.config 转换轻松地在 A 和 A-test 之间切换,具体取决于我是在测试中还是在生产中。所以没关系。
但是,在运行时,我希望能够在向服务器 A 和 B 发送调用之间切换。
我可以通过创建两个不同的 ReportingService2010 对象来做到这一点:一个具有命名空间 com.company.serverA,另一个具有命名空间 com.company.serverB。这将需要很多条件语句,但可以做到。
我希望能够使用多态性并传递我的 ReportCopier class 不同的 ReportingService2010 对象,但它们的相关性不够密切。编译器将它们视为完全独立的对象。
有什么办法解决这个问题吗?有什么方法可以在运行时动态更改 ReportingService2010 对象指向的 URL 吗?有没有办法通过某种方式使用反射来处理这两种对象?
现在我唯一的解决方案是 1) 为所有看起来乏味的对象实现包装器 classes 或 2) 使用 ReportCopier class 的两个副本,仅更改它们之间的名称空间,这是丑陋的。
想法?
这是迄今为止我为棘手问题找到的最简单的解决方案:我可以设置 URL 属性。我太忙于担心继承而没有意识到它。
ReportingService2010 rs = new ReportingService2010();
rs.Url = "https://serverA.company.com:443/ReportServer/ReportService2010.asmx";
// or...
rs.Url = "https://serverB.company.com:443/ReportServer/ReportService2010.asmx";
我有两个 SSRS 服务器 运行 相同的配置。好吧,实际上是三个。我们称他们为:
- 报表服务器 A
- 报表服务器 A 测试
- 报表服务器 B
现在,我可以使用 web.config 转换轻松地在 A 和 A-test 之间切换,具体取决于我是在测试中还是在生产中。所以没关系。
但是,在运行时,我希望能够在向服务器 A 和 B 发送调用之间切换。
我可以通过创建两个不同的 ReportingService2010 对象来做到这一点:一个具有命名空间 com.company.serverA,另一个具有命名空间 com.company.serverB。这将需要很多条件语句,但可以做到。
我希望能够使用多态性并传递我的 ReportCopier class 不同的 ReportingService2010 对象,但它们的相关性不够密切。编译器将它们视为完全独立的对象。
有什么办法解决这个问题吗?有什么方法可以在运行时动态更改 ReportingService2010 对象指向的 URL 吗?有没有办法通过某种方式使用反射来处理这两种对象?
现在我唯一的解决方案是 1) 为所有看起来乏味的对象实现包装器 classes 或 2) 使用 ReportCopier class 的两个副本,仅更改它们之间的名称空间,这是丑陋的。
想法?
这是迄今为止我为棘手问题找到的最简单的解决方案:我可以设置 URL 属性。我太忙于担心继承而没有意识到它。
ReportingService2010 rs = new ReportingService2010();
rs.Url = "https://serverA.company.com:443/ReportServer/ReportService2010.asmx";
// or...
rs.Url = "https://serverB.company.com:443/ReportServer/ReportService2010.asmx";