2010-10-23 57 views
1

这是我的场景...我有一个WPF应用程序与WCF服务交谈。WCF服务与QA和PROD的版本

连接字符串设置位于WCF服务中。 WCF服务可以部署到两个不同的网站,一个用于QA,一个用于PROD(每个都有自己的URI)。

我希望我的WPF应用程序能够使用QA数据或PROD数据运行。基本上,我会在启动时将参数传递给WPF应用程序,这将是QA或PROD。

我想这样做是部署完全相同的WCF服务的代码与正在各自的web.config文件中的连接字符串的值,唯一不同的QA和PROD网站。

然后,我会需要一种方法必须在WPF应用工厂模式,将返回基于传入的QA/PROD参数的WCF接口(代理)。

我需要确保在WPF应用程序中,WCF界面(代理)在QA和PROD参考中被视为相同类型。

毕竟,结果将是...如果用户启动了WPF应用程序并通过了QA,那么每次调用WCF服务都会返回QA数据,并且如果它们传递了PROD,则每次调用WCF服务都会返回PROD数据。

我可以简单地通过质量检查或PROD作为参数传递给每一个WCF服务方法,但似乎粗。由于WCF是无状态的,没有构造函数,所以我需要找到一个更灵活的解决方案。

回答

1

这不是一个选项,部署2个独立网址的服务?

  1. 服务URL 1 - QA URL - >此的web.config具有QA连接字符串
  2. 服务URL 2 - PROD URL - >此的web.config已PROD连接串

的使用WCF服务的WPF应用程序很可能只有自己的配置文件与服务主机。

在WPF应用程序,

,如果你需要连接到QA URL - >更改的app.config指向URL1

,如果你需要连接到PROD URL - >您而变在app.config指向URL2

这将大大简化你的问题,如果我理解正确的话。

这样,有一个在您的应用程序,你在决定连接到哪个DB没有逻辑。它只是一个简单的问题,在您的应用程序中配置正确的URL并且其他所有内容都从此处流动。