2016-12-08 80 views
0

我有两台运行相同配置的SSRS服务器。呃,实际上,三个。让我们称他们为:使用相同的ReportingService2010对象调用不同的服务器

  • 报告服务的
  • 报告服务的测试
  • 报告服务器B

现在,我可以A和A-测试之间轻松交换这取决于我是否” m在测试或生产中使用web.config转换。这很好。

然而,在运行时我想能够发送呼叫服务器A和B.

我可能通过创建两个不同的ReportingService2010的对象,这之间切换:一个命名空间com.company.serverA另一个是命名空间com.company.serverB。这将需要大量的条件语句,但可以完成。

我希望能够使用多态性并传递我的ReportCopier类不同的ReportingService2010对象,但它们之间的关系不够紧密。编译器将它们视为完全独立的对象。

有没有办法解决这个问题?有什么方法可以动态地更改ReportingService2010对象在运行时指向的URL?有没有办法通过反射来处理这两种对象?

现在唯一的解决方案是1)为所有对象实现包装类,这看起来很单调,或者2)使用ReportCopier类的两个副本,只改变它们之间的名称空间,这很丑。

想法?

+0

您是否在寻找[Load Balancing](https://msdn.microsoft.com/zh-cn/library/cc281307.aspx)? – SMM

+0

不,我们有两个基本相同的副本,因为我们收购了一家公司,而且他们有自己的实例。 –

回答

0

这是迄今为止我发现的一个棘手问题最头疼的简单解决方案:我可以设置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"; 
相关问题