2011-05-17 167 views
1

我期待在实现一个WCF服务,将依次调用一个(或者更)外部WCF服务(或至少,网络服务,我会从代码中使用WCF服务的参考文献中调用)WCF服务调用WCF服务 - 在哪里放置客户端服务引用?

我的解决方案被分解成ServiceLayer,BusinessLogicLayer,DomainLayer,DtoObjects等

我的问题是:
围绕客户端的逻辑都将在BusinessLogicLayer - 但如果我把ServiceReferences在那里,然后我还需要将服务配置放在ServiceLayer中 - 因为这是发起呼叫的地方。

这是正确的事情吗?

或者:
在ServiceLayer中创建客户端并将其传递给BLL。
不知道我喜欢这个想法......但它意味着只有一个配置。

或者:
还有别的办法吗?

回答

0

你可以将它看作是任何调用WCF服务的代码都是WCF客户端,即使这恰好是本身作为WCF服务托管的另一部分代码。正因为如此,您需要客户端配置才能在呼叫正在进行时出现并可用。我不知道是否有共享配置的好方法,或者甚至是可取的...我会选择在每个地方单独配置文件。不会有太多的重复,因为你在一个地方有服务端配置,而在另一个地方有客户端配置。

如果您可以使用WCF发现(http://msdn.microsoft.com/en-us/library/dd456782.aspx),它可以减少您必须创建的配置数量。此外,使用接口和ChannelFactory<T>而不是ServiceReferences会给你一个更清洁的设置。

希望这会有所帮助。

+0

它没有那么多实例化客户端代理服务,更多的是在哪一层完成。我认为最好在BLL中这样做,这样其他任何东西都可以以相同的方式调用外部服务 - 但这意味着要复制BLL项目和WCF项目中的配置部分。 – BlueChippy 2011-05-18 07:18:30