这是我的场景......我有一个与WCF服务对话的WPF应用程序。
连接字符串设置位于WCF服务中。 WCF服务可以部署到两个不同的网站,一个用于QA,一个用于PROD(每个都有自己的URI)。
我希望我的WPF应用程序能够使用QA数据或PROD数据运行。基本上,我会在启动时将参数传递给WPF应用程序,该应用程序将是QA或PROD。
我想要做的是将完全相同的WCF服务代码部署到QA和PROD网站,唯一的区别是相应web.config文件中连接字符串的值。
然后我需要一种方法在WPF应用程序中拥有一个工厂模式,它将根据传入的QA / PROD参数返回WCF接口(代理)。
我需要在WPF应用程序中确保在QA和PROD引用中将WCF接口(代理)视为相同类型。
毕竟,结果将是......如果用户启动了WPF应用程序并通过了QA,每次对WCF服务的调用都将返回QA数据,如果他们通过PROD,则每次调用WCF服务都将返回PROD数据。
我可以简单地将QA或PROD作为参数传递给每个WCF服务方法,但这看起来很粗糙。由于WCF是无状态的并且没有构造函数,我需要找到更灵活的解决方案。
答案 0 :(得分:1)
是否可以将服务部署到2个单独的URL?
使用WCF服务的WPF应用程序很可能只有自己的服务主机配置文件。
在WPF App中,
如果您需要连接到QA网址 - >您将app.config更改为指向URL1
如果您需要连接到PROD网址 - >您将app.config更改为指向URL2
如果我理解正确的话,这将大大简化您的问题。
这样,您的应用程序中没有逻辑决定要连接到哪个DB。它只是一个简单的问题,即在您的应用程序中配置正确的URL,其他所有内容都从那里流出。